CN111698463A - 使用神经网络进行视图合成 - Google Patents

使用神经网络进行视图合成 Download PDF

Info

Publication number
CN111698463A
CN111698463A CN202010166505.0A CN202010166505A CN111698463A CN 111698463 A CN111698463 A CN 111698463A CN 202010166505 A CN202010166505 A CN 202010166505A CN 111698463 A CN111698463 A CN 111698463A
Authority
CN
China
Prior art keywords
video
camera
images
view
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010166505.0A
Other languages
English (en)
Inventor
孙德庆
O·加洛
J·考茨
顾金伟
赖伟昇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN111698463A publication Critical patent/CN111698463A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • H04N7/181Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast for receiving images from a plurality of remote sources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/14Transformations for image registration, e.g. adjusting or mapping for alignment of images
    • G06T3/153Transformations for image registration, e.g. adjusting or mapping for alignment of images using elastic snapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2624Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects for obtaining an image which is composed of whole input images, e.g. splitscreen
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R2300/00Details of viewing arrangements using cameras and displays, specially adapted for use in a vehicle
    • B60R2300/30Details of viewing arrangements using cameras and displays, specially adapted for use in a vehicle characterised by the type of image processing
    • B60R2300/303Details of viewing arrangements using cameras and displays, specially adapted for use in a vehicle characterised by the type of image processing using joined images, e.g. multiple camera images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/32Indexing scheme for image data processing or generation, in general involving image mosaicing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • G06T2207/10021Stereoscopic video; Stereoscopic image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Studio Devices (AREA)
  • Closed-Circuit Television Systems (AREA)

Abstract

本申请提供了一种使用神经网络进行视图合成的技术。视频拼接系统将来自不同摄像机的视频组合起来以形成全景视频,在各种实施例中,所述全景视频在时间上稳定并且能够耐受强视差。在一个实施例中,所述系统提供了可用于连接输入视频图像的平滑空间插值。在一个实施例中,所述系统将插值层应用于重叠视频源的切片,并且网络学习密集流场以使输入视频与空间插值平滑地对准。各种实施例适用于诸如虚拟现实、沉浸式远程呈现、自动驾驶和视频监视的领域。

Description

使用神经网络进行视图合成
背景技术
视频和图像数据用于来自视频流、自动驾驶和虚拟现实的各种应用。对于许多基于视觉的系统,需要收集来自多个视图的视觉数据。例如,自动驾驶汽车可能在汽车的前部、汽车的侧面以及汽车的后部具有摄像头,以提供360度的视觉效果。但是,从多个摄像头的组成360度视图会引起问题,尤其是如果摄像头不在同一位置时。在许多系统中,当尝试组合图像时,摄像头之间不可避免的间隔会产生视差误差。尽管如此,已经设计出许多算法来将图像拼接(stitch)在一起以形成单个较宽的图像。然而,当将这些技术应用于视频时,它们会产生伪影和误差,尽管它们在静止帧中并不明显,但当出现在视频中时尤其明显。因此,视频拼接是一个特别困难的问题,尤其是组合来源于不同位置的摄像头的视频时。
附图说明
参照附图将描述不同的技术,其中:
图1示出了一个实施例中具有位于车辆上不同位置的三个摄像头的车辆的示例,当所述三个摄像头组合时提供全景视图;
图2示出了一个实施例中的计算机系统的示例,所述计算机系统结合来自三个图像源的输出以产生全景图像。
图3示出了一个实施例中在共享位置处在观察圆柱上对准的三个图像源的示例;
图4示出了一个实施例中通过将第一和第二视频与插值重叠区域结合产生全景视频的示例;
图5示出了一个实施例中的重叠视频区域的多个切片的示例;
图6示出了一个实施例中通过重叠区域的插值切片生成过渡视频的过程的示例;
图7示出了一个实施例中的生成重叠视频区域的值插视图的网络的示例;
图8示出了一个实施例中作为由计算机系统执行的结果而创建全景视频图像的过程的示例;
图9示出了根据一个实施例的并行处理单元(“PPU”)的示例;
图10示出了根据一个实施例的通用处理集群(“GPC”)的示例;
图11示出了根据一个实施例的流多处理器的示例;和
图12示出了根据一个实施例的可以在其中实现各种示例的计算机系统。
具体实施方式
本文描述了一种系统,该系统将从多个摄像头(camera)收集的多个重叠视频图像组合成全景视频。在一个实施例中,该系统通过生产重叠区域的过渡视频来结合重叠视频,并且该过渡视频用于结合源视频的非重叠区域。在一个实施例中,通过在源视频上执行圆柱投影(cylindrical projection),用流估计网络处理源视频,使用逐切片插值(slice-wise interpolation)产生过渡视频,以及然后优化所产生的过渡视频来生成过渡视频。在各种示例中,所得到的全景视频产生在时间上稳定并且可以耐受强视差的平滑空间插值。
在一个实施例中,从位于不同位置的多个摄像头获得视频。在一个实施例中,摄像头具有重叠视场,使得每个摄像头具有非重叠区域和被另一摄像头覆盖的重叠区域。在一个实施例中,摄像头可以被定位在不同的位置,从而导致位于更靠近摄像头处的对象的视差误差。例如,相对于位于车辆中心的前置摄像头(front facing camera),位于车辆右侧和左侧的摄像头表现出视差误差。在一个实施例中,为了最小化三个视图之间出现的变化,系统应用相反的变换使由左摄像头和右摄像头生成的视频的原点扭曲(warps)以匹配中心摄像头的原点。在一个实施例中,应用圆柱投影将中心视图、左视图和右视图扭曲到共同的观察圆柱(viewing cylinder)上。在一个实施例中,可以执行附加校正以对摄像头校准、曝光补偿、鱼眼变形校正和圆柱投影进行调整的。
在一个实施例中,将调整后的视频的重叠部分识别为过渡区域对其创建过渡视频。在一个实施例中,过渡视频是通过插值(interpolation)过程生成的。在一个实施例中,系统从重叠区域中的两个图像中识别出多个垂直切片(slice),这些垂直切片用于创建从一个摄像头视图到另一摄像头视图的平滑过渡。在一个实施例中,在过渡区域之外,使用源视频的非重叠部分而不进行修改。在一个实施例中,过渡区域内的视频通过从源视频获取相应的列而从一个视点逐渐改变到另一视点。在一个实施例中,如果采用更精细的插值步骤(切片),则产生更高质量的拼接结果。在一个实施例中,通过提供实现快速推扫式插值层的网络来改善性能。
在一个实施例中,使用图像优化网络进一步优化图像。在一个实施例中,使用由城市驾驶模拟器产生的真实的合成数据来训练网络。在一个实施例中,模拟器允许将摄像头定位在中间位置,并且使用从模拟器的中间摄像头捕获的视图来产生地面实况。
各种实施例特别适合于以下应用:由于传感器分辨率和光学限制使得单个摄像头提供的视场(field of view)太窄,以及物理限制要求多个摄像头彼此分开放置,从而导致视差。例如,各种实施例特别适合于自动驾驶应用,或者多个摄像头被放置在车辆的各个位置上并且被拼接成单个全景视图。在另一个示例中,各种实施例适合于虚拟现实、远程呈现(telepresence)和视频监视应用。
如本领域的技术人员根据本公开所理解的,某些示例可能能够实现某些优点,包括以下的一些或全部:(1)消除由基于缝合(seam-based)方法引起的伪像,(2)容忍摄像头隔离引起的强视差;(3)图像的时间稳定性;(4)减少了重影和损坏对象。
图1示出了一个实施例中具有位于车辆上的不同位置的三个摄像头的车辆的示例,当所述三个摄像头组合时提供全景视图。在一个实施例中,图1描述了车辆102的示例100,其利用摄像头104提供左视图110,利用摄像头l06提供中心视图112,以及利用摄像头l08提供右视图114。在一个实施例中,车辆l02可以是用于运输的任何合适的机器,例如机动车辆、有轨车辆、水运工具、水陆两用车辆、飞机、航天器和/或其变型。另外,在一个实施例中,车辆102可以是可操作车辆、自动驾驶车辆和/或其变型。
在一个实施例中,摄像头104、106和108可以是用于电子运动图像获取和/或电子静止图像获取的图像捕获设备。在一个实施例中,摄像头104、106和108可以包括图像传感器、存储器、图像处理能力、麦克风和/或各种其他组件。在一个实施例中,摄像头104、106和108可以被设计为记录和/或传送数字媒体或模拟媒体流(例如,音频、视频、文本或音频、视频或文本的任何组合),以这种方式使得可以在设计为显示这种媒体的设备上重放或再现该媒体。在一个实施例中,这种图像捕获设备的示例可以包括数字视频摄像头、网络摄像头、便携式电话等。在一个实施例中,摄像头104、106和108生成包括示例100的环境的视图;在一个实施例中,环境的视图包括左视图110、中心视图112和右视图114。
在一个实施例中,左视图110、中心视图112和右视图114是从车辆102的角度来看的图像和/或视频视图。另外,在一个实施例中,左视图110、中心视图112和右视图114可以是来自摄像头104-108的实时直播视频、来自摄像头104-108的预录制视频,和/或其变型。在一个实施例中,左视图110、中心视图112和右视图114可以被变换到共同的观察圆柱(viewing cylinder)上,例如结合图3描述的观察圆柱。在一个实施例中,左视图110和右视图114可以在摄像头姿势变换中被用以使左视图110和右视图114的原点扭曲以被设置在摄像头106处。在一个实施例中,然后可以利用圆柱投影将左视图110,中心视图112和右视图114扭曲到一个共同的观察圆柱上。在一个实施例中,可以通过诸如结合图2描述的视频拼接系统202之类的系统来生成和优化每个视图之间的过渡。
在一个实施例中,该系统可以用于生成远程呈现显示器,其中两个或更多个摄像头用于收集会议室或其他空间的图像。在一个实施例中,将图像拼接在一起成为单个全景图像,并通过计算机网络传输到接收计算机系统。在一个实施例中,接收计算机系统在宽幅显示器上显示(displease)全景图像,使得在接收计算机系统处的一个或更多个个体可以观看会议室或其他空间的环境。
在一个实施例中,图2示出了计算机系统的示例,该计算机系统组合来自三个图像源的输出以产生全景图像。在一个实施例中,图2描述了视频拼接系统202的示例200,其包括投影和流估计层210、插值层212和图像优化层214,该图像优化层214从左视图204、中心视图206以及右视图208生成全景视频216。在一个实施例中,投影和流估计层210、插值层212和图像优化层214可以利用在视频拼接系统202上执行的或从外部资源检索各种应用软件和/或程序。在一个实施例中,视频拼接系统202可以是任何合适的系统,例如计算机系统和/或图形系统。在一个实施例中,计算机系统可以包括物理计算实例(例如物理计算机或设备)的一个或更多个实例,或者可以包括虚拟计算实例(例如虚拟机)的一个或更多个实例,这些虚拟计算实例可以托管在一个或更多个计算机服务器上。另外,在个一实施例中,计算机系统可包括各种组件和/或子系统(例如一个或更多个处理器)、存储可由一个或更多个处理器执行的指令的存储器、图形子系统和/或其变型。
在一个实施例中,图形系统是可以存在于计算机系统和/或其他系统上以提供处理能力(特别是通过使用图形处理单元来处理图形)的系统,尽管其他处理可以由图形系统执行。在一个实施例中,图形系统可以包括离散和/或集成图形系统的一个或更多个变型。在一个实施例中,集成图形系统是一种图形系统,其包括与另一系统的处理单元共享的存储器,以执行和实施各种处理。在一个实施例中,离散图形系统是一种图形系统,其包括与其他系统的处理单元所利用的存储器分开的存储器。在一个实施例中,离散图形系统利用独立视频源存储器和/或其他存储器类型来执行和实施处理。在一个实施例中,系统可以是并行处理单元(“PPU”)或通用处理集群(“GPC”)
在一个实施例中,视频拼接系统202利用左视图204、中心视图206和右视图208作为输入。在一个实施例中,视频拼接系统202可以通过使用一个或更多个网络和接口(例如,因特网),通过各种外部/内部数据存储系统系统和/或其变型来检索左视图204、中心视图206和右视图208。在一个实施例中,左视图204、中心视图206和右视图208是来自图像源的输出,这些图像源来自各种图像捕获设备,例如结合图1所描述的摄像头104、摄像头106和摄像头108。在一个实施例中,左视图204、中心视图206和右视图208是分别与图1的左视图110、中心视图112和右视图114相同的视图。在一个实施例中,左视图204、中心视图206和右视图208可以对应于从诸如汽车的车辆的角度来看的各种视图。另外,在一个实施例中,左视图204、中心视图206和右视图208可以是来自视图的实时直播视频、视图的预录制视频和/或其变型的视频。在一个实施例中,视频可以包括一系列帧的流以及伴随的音频。
在一个实施例中,视频拼接系统202在投影和流估计层210中对左视图204、中心视图206和右视图208进行变换和扭曲。在一个实施例中,投影和流估计层210是物理计算资源和/或虚拟计算资源的集合,配置成提供各种操作以用于输入视图,包括各种转换操作、生成流场(flow field)和/或其变型。在一个实施例中,流场是指表示一个图像帧与另一图像帧之间的变化或流动的场。在一个实施例中,例如,一个图像帧可以包括对象的描述。在一个实施例中,另一图像帧可以包括对转变到左侧的同一对象的描述。在一个实施例中,两个图像帧之间的流场可以是包括表示在两个图像帧之间对象的位置向左变化的向量和/或其他指示。
在一个实施例中,投影和流估计层210将左视图204、中心视图206和右视图208的视图变换到共同的观察圆柱上,例如结合图3描述的观察圆柱。在一个实施例中,投影和流估计层210可以利用诸如摄像头姿态变换、投影变换和/或其变型之类的变换来扭曲左视图204和右视图208的原点,以将其设置在中心视图206的原点上。在一个实施例中,投影和流估计层210可以接着利用圆柱投影将左视图204、中心视图206和右视图208扭曲到产生圆柱视图的共同的观察圆柱上,或者包括左视图204、中心视图206和右视图208的透视图(perspective)。在一个实施例中,圆柱视图可以包括在视图之间的表示为过渡区域的重叠区域;例如,在一个实施例中,过渡区域可以存在于包括左视图204和中心视图206之间,和存在于中心视图206和右视图208之间。在一个实施例中,投影和流估计层210生成用于每个过渡区域的每个帧的流场。在一个实施例中,可以针对每个过渡区域通过插值层212生成过渡视频。
在一个实施例中,插值层212是物理和/或虚拟的计算资源的集合,其配置成在左视图204、中心视图206和右视图208之间进行插值以在视图之间生成各种过渡视频,以在产生统一的、连续的全景视频216。在一个实施例中,插值层212可以表示为推扫式插值层(pushbroom interpolation layer)。在一个实施例中,投影和流估计层210产生包括左视图204、中心视图206和右视图208的圆柱视图。在一个实施例中,圆柱视图可以包括与两个重叠视图相对应的过渡区域,其中一个视图与另一个视图重叠(例如,左视图204过渡到中心视图206,导致与中心视图206重叠)。在一个实施例中,由于在视图上执行各种变换以生成圆柱视图,所以这些过渡区域可以包括各种对准、重影和遮挡失真。在一个实施例中,可以通过经由插值层212生成过渡视频来去除和/或优化这些失真,该插值层212可以用来代替过渡区域。
在一个实施例中,插值层212通过对两个视图进行插值来产生两个视图之间的过渡区域的过渡视频。此外,在一个实施例中,插值层212产生两个过渡视频,一个对于左视图204和中心视图206之间的过渡区域的过渡视频,以及另一个对于中心视图206和右视图208之间的过渡区域的过渡视频。在一个实施例中,插值层212特定地在如先前段落中所讨论的过渡区域上操作。
在一个实施例中,插值层212将与来自两个视图的两个帧相对应的过渡区域的帧分离为切片;在一个实施例中,切片的数量可以基于各种标准而变化,诸如期望的质量、性能和/或其变化。在一个实施例中,过渡区域的帧的每个切片对应于两个重叠的切片,过渡区域的帧对应于每个视图的每个相应帧中的一个。在一个实施例中,对于过渡区域的帧的每个切片,插值层212在该切片对应的两个切片之间进行插值,以生成多个插值切片。在一个实施例中,插值层212利用为过渡区域的帧生成的流场来辅助切片之间的插值。在一个实施例中,插值切片被串联在一起以生成完整的插值帧,其可以被称为完整的插值视图。在一个实施例中,过渡区域的每个帧可以由插值层212处理并且结合以形成过渡视频。在一个实施例中,为每个过渡区域形成过渡视频;在一个实施例中,可以使用过渡视频代替每个过渡区域。关于插值层212的处理的更多信息可以在图4、图5和图6的描述中找到。
在一个实施例中,图像优化层214是物理和/或虚拟计算资源的集合,其配置成优化作为插值层212的处理结果而产生的过渡视频。在一个实施例中,图像优化层214是包括各种卷积层的编码器-解码器网络;在一个实施例中,图像优化层214可以利用诸如跳过连接处理之类的处理来将来自未处理的左视图204、中心视图206和右视图208的细节合并到从左视图204、中心视图206和右视图208生成的最终全景视频216中。在一个实施例中,图像优化层214优化在插值层212中生成的过渡视频。另外,在一个实施例中,图像优化层214可以被训练为以更有效的方式执行优化。在一个实施例中,使用由城市驾驶模拟器产生的真实合成数据来训练图像优化层214。在一个实施例中,城市驾驶模拟器可以模拟图像源的各种配置,以产生各种左视图、中心视图和右视图。在一个实施例中,城市驾驶模拟器可以模拟用于左视图,中心视图和右视图的各种配置的各种地面实况全景视频。在一个实施例中,可以利用左视图、中心视图、右视图的各种配置和针对各种配置形成的相应的地面全景视频来形成训练数据,以训练图像优化层214。
在一个实施例中,从左视图204、中心视图206和右视图208产生的圆柱视图的过渡区域产生的过渡视频与从圆柱视图的其余区域(即,过渡区域之外的区域)串联以产生全景视频216。应当注意,在各种实施例中,视频拼接系统202可以利用任何数量的视图来产生任何数量的过渡视频以产生统一的全景视频。
图3示出了在一个实施例中在共享位置处的观察圆柱上对准的三个图像源的示例。在一个实施例中,图3描述了对准三个图像源(即摄像头304,摄像头302和摄像头306)的示例300。在一个实施例中,摄像头304、摄像头302和摄像头306分别与结合图1描述的摄像头104、摄像头106和摄像头108相同或不同。在一个实施例中,摄像头304、摄像头302和摄像头306可以是用于电子移动图像捕获和/或电子静止图像捕获的图像捕获设备。在一个实施例中,这种图像捕获设备的示例包括数字视频摄像头、网络摄像头、移动电话等等。
在一个实施例中,来自摄像头304、摄像头302和摄像头306的视图可以在共享位置308处的观察圆柱上对准。在一个实施例中,摄像头304、摄像头302和摄像头306可以通过诸如结合图2描述的视频拼接系统202之类的系统来对准。在一个实施例中,可以利用诸如摄像头姿势变换、投影变换和/或其变型之类的变换来使扭曲来自摄像头304的视图和来自摄像头306的视图的原点,以将其设置为来自摄像头302的视图的原点。在一个实施例中,然后可以利用圆柱投影来使来自摄像头304、摄像头302和摄像头306的视图扭曲到产生圆柱视图310或透视图的共同的观察圆柱上。在一个实施例中,可以利用各种其他操作,例如摄像头校准、曝光补偿、鱼眼畸变校正、圆柱投影和/或其变型,以产生圆柱视图310。
在一个实施例中,圆柱视图310可以包括视图之间的各种重叠区域或过渡区域;在一个实施例中,过渡区域312可以对应于来自摄像头304和摄像头302的扭曲视图之间的重叠,并且过渡区域314可以对应于来自摄像头302和摄像头机306的扭曲视图之间的重叠。在一个实施例中,由于扭曲视图的重叠,过渡区域可能包含各种对准、重影和遮挡失真。在一个实施例中,可以为每个过渡区域生成过渡视频以减轻潜在的失真。
在一个实施例中,图4示出了通过将第一和第二视频与插值重叠区域结合而创建全景视频的示例。在一个实施例中,图4描绘了全景视频的示例400,该全景视频包括第一视频区域402、插值重叠视频区域406和第二视频区域404。在一个实施例中,第一视频区域402可以是第一视频的区域,以及第二视频区域404可以是第二视频的区域;在一个实施例中,第一和第二视频可以是从诸如结合图1描述的车辆102的车辆的角度记录的视频。在一个实施例中,第一视频和第二视频可以是已经被变换并对准到共同的观察圆柱上的视频。
在一个实施例中,利用共同的观察圆柱将第一视频与第二视频结合,从而形成圆柱视图。在一个实施例中,从第一视频和第二视频形成的圆柱视图包括重叠区域或过渡区域,其中第一视频的一部分与第二视频的一部分重叠。在一个实施例中,过渡区域可以包括各种对准、重影和遮挡失真。在一个实施例中,可以通过利用生成插值重叠视频区域406代替过渡区域来来减轻和/或解决这些失真。
在一个实施例中,第一视频和第二视频可以通过使用诸如结合图2描述的视频拼接系统202之类的系统来拼接在一起。在一个实施例中,可以通过在第一视频的重叠区域和第二视频的重叠区域之间进行插值的各种插值处理来生成插值重叠视频区域406。在一个实施例中,第一视频区域402和第二视频区域404之间的过渡区域可以被划分为切片。在一个实施例中,过渡区域的每个切片对应于来自第一视频的重叠区域的切片和来自第二视频的重叠区域的切片。在一个实施例中,利用第一视频的重叠区域的切片和第二视频的重叠区域的切片之间的插值来生成插值重叠视频区域406的切片。在图6的描述中可以找到关于插值过程的更多信息。
图5示出了一个实施例中的重叠视频区域的多个切片的示例。在一个实施例中,图5描述了包括切片502-520的重叠视频区域的示例500。在一个实施例中,重叠的视频区域是将两个视频区域拼接在一起的结果。在一个实施例中,两个视频区域可以通过将两个视频区域扭曲和变换到共同的观察圆柱上而被拼接在一起,以形成圆柱视图。在一个实施例中,从两个视频区域形成的圆柱视图包括过渡区域,在该过渡区域中,两个视频区域的区域彼此重叠。在一个实施例中,过渡区域可以包括各种对准、重影和遮挡失真。在一个实施例中,可以通过产生插值切片来形成插值重叠视频区域来减轻和/或消除这些失真。
在一个实施例中,重叠视频区域被划分为包括切片502-520的切片。在一个实施例中,切片502-520中的每个对应于两个不同切片,一个来自两个视频区域的每个重叠区域。在一个实施例中,每个切片502-520中的每对切片可以在彼此之间进行插值以生成多个插值切片;在一个实施例中,可以利用插值切片来形成过渡视频(即,插值重叠视频区域),该过渡视频可以用来代替重叠视频区域。关于内插处理的更多信息可以在图6的描述中找到。
图6示出了在一个实施例中用于通过对重叠区域的插值切片生成过渡视频的过程的示例。在一个实施例中,图6描述了通过在第一视频602和第二视频604的切片之间进行插值来生成过渡视频610的示例600。在一个实施例中,过渡视频610可以由任何合适的系统生成,例如结合图2所描述的视频拼接系统202。在一个实施例中,该系统可以是计算机系统和/或图形系统,并且可以包括物理计算实例(例如物理计算机或设备)的一个或更多个实例,或虚拟计算实例(例如虚拟机)的一个或更多个实例,虚拟计算实例可以托管在一台或更多台计算机服务器上。另外,在一实施例中,系统可包括各种功能部件和/或子系统,例如一个或更多个处理器,存储可由一个或更多个处理器执行的指令的存储器、图形子系统和/或其变型。
在一个实施例中,第一视频602和第二视频604可以是从诸如结合图1描述的车辆102的车辆的角度记录的视频。在一个实施例中,第一视频602和第二视频604可以是已经被变换并对准到共同的观察圆柱上的视频,从而形成包括第一视频602和第二视频604的圆柱视图。在一个实施例中,变换可以通过各种操作来实现,例如结合图2描述的投影和流估计层210。在一个实施例中,从第一视频602和第二视频604形成的圆柱视图包括过渡区域或重叠区域,在该过渡区域或重叠区域中,可以将被表示为第一视频612的重叠区域的第一视频602的一部分与被表示为第二视频614的重叠区域的第二视频604的一部分重叠。在一个实施例中,过渡区域可以包括由于重叠而引起的各种对准、重影和遮挡失真。关于圆柱视图和过渡区域的更多信息可以在图3的描述中找到。在一个实施例中,可以通过利用生成过渡视频610来代替过渡区域来减轻和/或解决这些失真。
在一个实施例中,为过渡区域生成流场。在一个实施例中,流场是指表示在一个图像帧与另一个图像帧之间的变化或流的场。在一个实施例中,例如,一个图像帧可以包括对象的描述。在一个实施例中,另一图像帧可以包括对同一对象转换到左边的描述。在一个实施例中,两个图像帧之间的流场可以包括在两个图像帧之间表示对象的位置向左变化的向量和/或其他指示。
在一个实施例中,过渡区域包括的每个帧对应于两个帧,一帧来自第一视频612的重叠区域和一帧来自第二视频614的重叠区域。在一个实施例中,过渡区域的帧被处理并分成多个切片。在一个实施例中,过渡区域的帧的每个切片对应于两个切片,一个切片来自第一视频612的重叠区域的对应帧,另一个切片来自第二视频614的重叠区域的对应帧。在一个实施例中,可以以各种顺序顺序地处理过渡区域的帧的切片,诸如从最左边的切片开始并以最右边的切片结束,从最右边的切片开始并以最左边的切片结束,和/或其变型。在一个实施例中,第N个切片606和第N个切片608对应于正在处理的过渡区域的帧的第N个切片。
在一个实施例中,针对从第一视频612的重叠区域的对应帧到第二视频614的重叠区域的对应帧的流生成可以表示为FlowField612→614的流场,并且可以按N与过渡区域的帧所包括的切片总数之比的比例进行缩放,N对应于要处理的过渡区域的帧的第N个切片。在一个实施例中,针对从第二视频614的重叠区域的对应帧到第一视频612的重叠区域的对应帧的流生成附加流场,其可以被表示为FlowField614→612,并用值1和N与过渡区域的帧包括的切片总数之比的差值进行缩放,N对应于要处理的过渡区域的帧的第N个切片。在一个实施例中,流场的缩放可以用以下公式表示:
Figure BDA0002407649100000121
以及
Figure BDA0002407649100000122
其中,K为过渡区域包括的帧的切片总数。在一个实施例中,利用FlowField612→614扭曲第N个切片608,以及利用FlowField614→612扭曲第N个切片606。在一个实施例中,可以通过使用由缩放后的流场指示的流变形切片来扭曲切片。
在一个实施例中,然后将扭曲的切片混合在一起。在一个实施例中,可以使用线性混合技术来混合扭曲的切片,其中可以基于每个扭曲的切片相对于过渡区域的帧的位置,将权重分配给每个切片;在一个实施例中,权重可以确定如何将扭曲的切片混合在一起以生成插值切片。另外,在一个实施例中,可以利用各种技术,例如线性混合、非线性混合和/或它们的变化,来混合扭曲的切片。在一个实施例中,利用流场的插值过程被用于过渡区域的帧的每个切片;在一个实施例中,每个所生成的插值切片可以被用来产生过渡视频610的帧。另外,在一个实施例中,利用流场的插值过程可以通过例如结合图1描述的插值层212的操作所包含的各种操作实现。
在一个实施例中,然后利用诸如结合图2描述的图像优化层214的操作的各种操作,优化过渡视频610的生成的帧。在一个实施例中,利用包括编码器-解码器架构的网络来优化所生成的帧。在一个实施例中,网络可以包括各种卷积层,并利用各种技术,例如跳过连接过程。在一个实施例中,跳过连接过程是指其中未处理的或经最小处理的输入的各种细节被用来优化已处理的输出的细节的过程。另外,在一个实施例中,可以利用由城市驾驶模拟器产生的真实合成数据来训练网络。在一个实施例中,来自未改变的第一视频602和未改变的第二视频604的帧的各种细节被用于增强过渡视频610的生成的帧的各个方面和细节。
在实施例中,对于过渡区域包括的每个帧重复生成流场,基于流场的插值切片,从插值切片生成过渡视频610的帧以及优化帧的过程,以生成过渡视频610的多个生成的帧。在一个实施例中,过渡视频610的多个生成的帧用于形成过渡视频610。在一个实施例中,过渡视频610可以与第一视频602和第二视频604的非重叠部分(即,重叠区域之外的部分)一起使用以形成全景视频,诸如结合图4描述的全景视频。
图7示出了一个实施例中的网络的示例,该网络生成重叠视频区域的插值视图。在一个实施例中,图7描述了实现快速推扫式插值层的网络的示例700,该网络包括可以由任何合适的系统(例如结合图2描述的视频拼接系统202)实现的各种操作。在一个实施例中,该系统可以是计算机系统和/或图形系统,并且可以包括物理计算实例(例如物理计算机或设备)的一个或更多个实例,或者虚拟计算实例(例如虚拟机)的一个或更多个实例,虚拟计算实例可以托管在一台或更多台计算机服务器上。另外,在一个实施例中,系统可包括各种组件和/或子系统,例如一个或更多个处理器、存储可由一个或更多个处理器执行的指令的存储器、图形子系统和/或其变型。在一个实施例中,快速推扫式插值层可以通过各种操作来实现,例如结合图2描述的插值层212的操作。
在一个实施例中,第一视频702和第二视频704可以是从诸如结合图1描述的车辆102的车辆角度记录的视频。在一个实施例中,第一视频702和第二视频704可以是已经被变换并对准到共同的观察圆柱上的视频,从而形成包括第一视频702和第二视频704的圆柱视图。在一个实施例中,通过例如结合图2描述的投影和流估计层210的操作包括的各种操作,可以实现该功能。在一个实施例中,从第一视频702和第二视频704形成的圆柱视图包括过渡区域或重叠视频区域,其中可以被表示为第一视频702的重叠区域的第一视频702的一部分,与可以被表示为第二视频704的重叠区域的第二视频704的一部分重叠。在一个实施例中,过渡区域可以包括由于重叠而引起的各种对准、重影和遮挡失真。在一个实施例中,可以通过从第一视频702和第二视频704生成插值视图724来减轻和/或解决这些失真。
在一个实施例中,快速推扫式插值层利用来自第一视频702的帧和来自第二视频704的帧来作为输入,并生成插值视图724。在一个实施例中,来自第一视频702的帧和来自第二视频704的帧包括与过渡区域相对应的区域。在一个实施例中,过渡区域对应于来自第一视频702的帧的重叠区域,该重叠区域与来自第二视频704的帧的重叠区域重叠。在一个实施例中,流估计706可以从来自第一视频702的帧的重叠区域和来自第二视频704的帧的重叠区域确定流场。在一个实施例中,流场是指表示一个图像帧与另一图像帧之间的变化或流的场。在一个实施例中,流场可以是x的函数,其中x是指流场的x坐标。在一个实施例中,过渡区域可以被划分为多个切片;在一个实施例中,切片的总数量可以表示为K。在一个实施例中,切片的索引可以表示为k(例如,k=1对应于第一切片)。在一个实施例中,过渡区域的每个切片对应于两个切片,一个切片来自第一视频702的帧的重叠区域,而一个切片来自第二视频704的帧的重叠区域。
在一个实施例中,对于从第一视频702的帧的重叠区域到从第二视频704的帧的重叠区域的流生成可表示为FlowField702→704(x)的流场。在一个实施例中,对于来自第二视频704的帧的重叠区域到来自第一视频702的帧的重叠区域的流生成了表示为FlowField704→702(x)的附加流场。在一个实施例中,逐列缩放708可以缩放FlowField702→704(x),而逐列缩放710可以缩放FlowField704→702(x)。在一个实施例中,根据以下数学公式,流场可以按列逐个缩放,对应于重叠区域的切片:
ScaledFlowField702→704(x)={ak*FlowField702→704(x),xk≤x≤xk+1}
以及ScaledFlowField704→702(x)={(1-ak)*FlowField704→702(x),xk≤x≤xk+1},其中ak=k/K,xk是由索引k指示的切片的起点的x坐标,K是切片总量,以及0≤k≤K。例如,如果过渡区域包括两个切片(即,K=2),
Figure BDA0002407649100000151
其中,x3表示第二切片的结尾的x坐标,或者其中假设第三切片开始的位置。
在一个实施例中,缩放的流场可用于分别通过双线性扭曲712和双线性扭曲714使来自第一视频702的帧的重叠区域和来自第二视频704的帧的重叠区域扭曲。在一个实施例中,双线性扭曲712利用ScaledFlowField702→704(x)来扭曲来自第一视频702的帧的重叠区域。在一个实施例中,双线性扭曲714利用ScaledFlowField704→702(x)以扭曲来自第二视频704的帧的重叠区域。在一个实施例中,可以通过使重叠区域变形来扭曲来自第一视频702和第二视频704的帧的重叠区域以跟随其各自缩放的流场指示的流。
在一个实施例中,可以在流优化(flow refinement)716中优化缩放的流场。在一个实施例中,流优化716分析缩放的流场并执行各种操作来优化它们;在一个实施例中,这些操作可以包括平滑操作、各种过滤器和/或其变型。在一个实施例中,流优化716优化和/或修改ScaledFlowField702→704(x)和ScaledFlowField704→702(x),以生成RefinedSca.ledFlowField702→704(x)和RefinedScaledFlowField704→702(x)。
在一个实施例中,流优化716另外生成可视图(visibility map)。在一个实施例中,可视图可以被认为是优化的缩放流场RefinedSca.ledFlowField702→704(x)和RefinedScaledFlowField704→702(x)的质量度量。在一个实施例中,可以利用可视图来防止由于遮挡而在插值视图724中产生的任何潜在的伪像(ghosting artifact)。在一个实施例中,可视图包括来自第一视频702和第二视频704的帧的重叠区域的特征,该重叠区域将在插值视图724中可见的。
在一个实施例中,可以利用优化的缩放流场来分别通过双线性弯曲718和双线性翘曲720对来自第一视频702的帧的扭曲重叠区域和来自第二视频704的帧的扭曲重叠区域进行扭曲。在一个实施例中,双线性扭曲718利用RefinedSca.ledFlowField702→704(x)来扭曲来自第一视频702的帧的扭曲重叠区域以产生来自第一视频702的优化的扭曲重叠区域。在一个实施例中,双线性翘曲720利用RefinedScaledFlowField704→702(x)来扭曲来自第二视频704的帧的扭曲重叠区域以产生来自第二视频704的优化的扭曲重叠区域。在一个实施例中,可以通过变形扭曲的过渡区域来扭曲来自第一视频702和第二视频704的帧的扭曲的过渡区域以跟随由它们各自优化的已缩放的流场指示的流。
在一个实施例中,线性混合722利用在流优化716中生成的可视图来将来自第一视频702的帧的优化的扭曲重叠区域与来自第二视频704的帧的优化的扭曲重叠区域混合。在一个实施例中,线性混合722可以包括利用可视图的各种混合操作。在一个实施例中,利用可视图将来自第一视频702的帧的优化的扭曲的重叠区域和来自第二视频704的帧的优化的扭曲重叠区域线性地缩放和混合在一起,以生成插值视图724。在一个实施例中,线性混合722可以由以下公式表示:Interpolated View724=(V)*(RWOR702)+(1-V)*(RWOR704),其中,V表示可视图,RWOR702表示来自第一视频702的帧的优化的扭曲重叠区域,以及RWOR704表示来自第二视频704的帧的优化的扭曲重叠区域。
在一个实施例中,可以使用图像优化网络来优化插值视图724。在一个实施例中,图像优化网络可以包括编码器-解码器架构的网络。在一个实施例中,网络可以包括各种卷积层,并利用各种技术,例如跳过连接过程。在一个实施例中,跳过连接过程可以利用来自未改变的第一视频702和未改变的第二视频704的帧的各种细节来增强插值视图724的各个方面和细节。在一个实施例中,可以训练图像优化网络以高效优化内插的视图724的各种细节。在一个实施例中,图像优化网络是使用由城市驾驶模拟器产生的真实合成数据来训练的。
在一个实施例中,优化的插值试图724于来自第一视频702和第二视频704的帧的其余区域(即,重叠区域之外的区域)结合。在一个实施例中,对于第一视频702和第二视频704的每帧重复快速推扫插值层的上述过程,以形成过渡视频。在一个实施例中,快速推扫式插值层比结合图6描述的插值过程更有效地执行插值过程。在一个实施例中,与结合图6描述的插值处理相反,快速推扫式插值层在整个重叠区域之间插值以产生插值重叠区域(即插值视图),其中,在对重叠区域的所有切片的多个处理中,在重叠区域的切片之间进行插值,并且将插值切片结合以产生插值重叠区域。
在一个实施例中,图8示出了作为计算机系统执行的结果而创建全景视频图像的过程的示例。在一个实施例中,过程800在框802处开始,其中计算机系统从不同位置处的两个摄像头获得两个视频,其中两个摄像头具有重叠视场。在一个实施例中,摄像头被安装到机动车辆上,并且被安装到机动车辆上的不同位置。例如,在一个实施例中,可以将摄像头安装在机动车辆的右侧、左侧和前部中心,并提供车辆周围的广角视频覆盖。摄像头彼此间隔开的各种实施例尤其适合,因为系统可以容忍由这种配置引入的视差误差。在一个实施例中,除了与重叠视场相关联的重叠区域之外,每个摄像头还具有未被其他摄像头覆盖的非重叠区域。
在一个实施例中,在框804处,系统通过转换每个视频来预处理从摄像头获取的视频,使得其好像是从公共点获取的。在一个实施例中,然后将每个视频投影到以公共点为中心的无限远的圆柱体上。
在一个实施例中,在框806处,计算机系统生成对于重叠区域的过渡视频。在一个实施例中,使用推扫式插值方法生成过渡视频,其中,每个视频的重叠部分被垂直地切片,并且来自每个视频的相应切片被用于产生两个切片的插值(或估计的中间帧)。在一个实施例中,两个切片之间的插值的比率(或中间位置)在过渡视频的宽度上变化,使得过渡视频在两个视频的视角(viewpoint)之间提供平滑的过渡。
在一个实施例中,过渡视频由被训练以产生这种插值的神经网络产生。在一个实施例中,通过使用模拟器来获取训练数据,该模拟器包括在代表系统中真实摄像头的模拟摄像头之间的多个虚拟摄像头。在一个实施例中,来自虚拟摄像头的连续镜头(footage)表示中间视图,并且来自虚拟摄像头的切片用于生成提供给神经网络进行训练的地面实况过渡视频。
在一个实施例中,在框808处,两个视频的非重叠部分与过渡视频结合以生成单个全景视频。在一个实施例中,全景视频虽然在某些方面失真,但是在摄像头之间提供了平滑的过渡,并且避免了与其他方法相关联的各种粗糙的伪像,例如重影、对象消失和严重的扭曲。
在一个实施例中,上述过程可以用于组合从各种源获得的图像。例如,在一个实施例中,上述系统可以用于将在模拟中生成的图像与在现实世界中收集的图像进行组合。在一个实施例中,全景视频在诸如显示器和车辆、远程呈现会议室或虚拟现实界面的显示单元上进行显示。
图9示出了根据一个实施例的并行处理单元(“PPU”)900。在一个实施例中,PPU900配置有机器可读代码,该机器可读代码如果由PPU执行,则使PPU执行贯穿本公开全文描述的过程和技术的一些或全部。在一个实施例中,PPU 900是一种多线程处理器,其在一个或更多个集成电路设备上实现,并且利用多线程作为被设计用来在并行的多线程上处理计算机可读指令(也称为机器可读指令或简单指令)的延迟隐藏技术。在一个实施例中,线程是指执行线程,并且是配置为由PPU 900执行的一组指令的实例。在一个实施例中,PPU 900是图形处理单元(“GPU”)配置为实现用于处理三维(“3D”)图形数据的图形渲染管线,以便生成二维(“2D”)图像数据以在诸如液晶显示(LCD)设备的显示设备上显示。在一个实施例中,利用PPU 900执行诸如线性代数运算和机器学习运算之类的计算。图9仅出于示例性目的示出了示例并行处理器,并且应被解释为在本公开的范围内设想的处理器体系结构的非限制性示例,并且可以采用任何适当的处理器来补充和/或替代相同的处理器。
在一实施例中,一个或更多个PPU配置成加速高性能计算(“HPC”),数据中心和机器学习应用程序。在一个实施例中,PPU 900配置成加速深度学习系统和应用程序,包括以下非限制性示例:自动驾驶车辆平台,深度学习,高精度语音、图像、文本识别系统,智能视频分析,分子模拟,药物发现,疾病诊断,天气预报,大数据分析,天文学,分子动力学模拟,金融建模,机器人技术,工厂自动化,实时语言翻译,在线搜索优化和个性化用户推荐等。
在一个实施例中,PPU 900包括输入/输出(“I/O”)单元906、前端单元910、调度器单元912、工作分配单元914、集线器916、交叉开关(“Xbar”)920、一个或更多个通用处理群集(“GPC”)918和一个或更多个分区单元922。在一个实施例中,PPU900经由一个更或多个高速GPU互连908连接到主机处理器或其他PPU 900。在一个实施例中,PPU 900经由互连902连接到主机处理器或其他外围设备。在一个实施例中,PPU 900连接到包括一个或更多个存储设备904的本地存储器。在一个实施例中,本地存储器包括一个或更多个动态随机存取存储器(“DRAM”)设备。在一个实施例中,一个或更多个DRAM设备被配置为和/或可配置为高带宽存储器(“HBM”)子系统,每个设备中堆叠有多个DRAM管芯。
高速GPU互连908可以指代基于有线的多通道通信链路,系统使用它来扩展规模并包括一个或更多个与一个或更多个CPU组合的PPU 900,支持PPU 900和CPU之间的缓存一致性,以及CPU主控。在一个实施例中,数据和/或命令由高速GPU互连908通过集线器916传输到PPU 900的其他单元或者从PPU 900的其他单元接收,PPU 900的其他单元例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元、以及未在图9中明确示出的其他组件。
在一个实施例中,I/O单元906配置成通过系统总线902从主机处理器(图9中未示出)传输和接收通信(例如,命令、数据)。在一个实施例中,I/O单元906直接通过系统总线902或通过一个或更多个中间设备(例如存储器桥)与主机处理器通信。在一个实施例中,I/O单元906可以经由系统总线902与一个或更多个其他处理器(例如一个或更多个PPU900)进行通信。在一个实施例中,I/O单元906实现外围组件互连高速(“PCIe”)接口,用于通过PCIe总线进行通信。在一个实施例中,I/O单元906实现用于与外部设备通信的接口。
在一个实施例中,I/O单元906对经由系统总线902接收到的分组进行解码。在一个实施例中,至少一些分组表示配置为促使PPU 900执行各种操作的命令。在一个实施例中,I/O单元906如命令所指定的那样将解码的命令传输到PPU 900的各种其他单元。在一个实施例中,命令被传输到前端单元910和/或被传输到集线器916或PPU 900的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元,等(在图9中未明确示出)。在一个实施例中,I/O单元906配置成在PPU 900的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲器中对命令流进行编码,该缓冲器将工作负载提供给PPU 900以进行处理。在一个实施例中,工作负载包括指令和由那些指令处理的数据。在一个实施例中,缓冲器是主机处理器和PPU 900两者都可以访问(例如,读/写)的存储器中的区域-主机接口单元可以配置成经由由I/O单元906在系统总线902传输的存储器请求来访问连接到系统总线902的系统存储器中的缓冲器。在一个实施例中,主机处理器将命令流写入缓冲器,然后将指向命令流开始的指针传输至PPU 900,从而前端单元910接收指向一个或更多个命令流的指针并管理一个或更多个流,从这些流中读取命令,并向PPU 900的各个单元提供命令。
在一个实施例中,前端单元910耦合到调度器单元912,该调度器单元912配置各种GPC 918以处理由一个或更多个流定义的任务。在一个实施例中,调度器单元912配置成跟踪与由调度器单元912管理的各种任务有关的状态信息,其中状态信息可以指示任务被分配给哪个GPC 918,该任务是活跃的还是不活跃的,与任务相关的优先级,等等。在一个实施例中,调度器单元912管理在一个或更多个GPC 918上的多个任务的执行。
在一个实施例中,调度器单元912耦合到工作分配单元914,该工作分配单元配置成分配在GPC 918上执行的任务。在一个实施例中,工作分配单元914跟踪从调度器单元912接收到的多个预定任务以及工作分配单元914为每个GPC 918管理未决任务池和活跃任务池。在一个实施例中,未决任务池包括多个槽(slot)(例如32个槽),这些槽包含分配由特定的GPC 918处理的任务;活跃任务池可包括用于由GPC 918主动处理的任务的多个槽(例如4个槽),以便当GPC 918完成任务的执行时,该任务将从GPC 918的活动任务池中逐出并且未决任务池中的其他任务之一被选择并安排在GPC 918上执行。在一个实施例中,如果活跃任务在GPC 918上是空闲的,例如在等待要解决的数据依赖性时,则将活动任务从GPC 918中逐出并返回到未决任务池,同时选择未决任务池中的另一个任务并安排其在GPC 918上执行。
在一个实施例中,工作分配单元914经由XBar 920与一个或更多个GPC 918通信。在一个实施例中,XBar 920是将PPU 900的许多单元耦合到PPU 900的其他单元的互连网络,并可以配置为将工作分配单元914耦合到特定的GPC918。尽管未明确显示,但PPU 900的一个或更多个其他单元也可以通过集线器916连接到XBar 920。
任务由调度器单元912管理,并由工作分配单元914分配给GPC918。GPC 918配置为处理任务并生成结果。结果可能会被GPC 918中的其他任务消耗,经由XBar 920路由到其他GPC 918或存储在存储器904中。结果可通过分区单元922写入存储器904,分区单元实现用于从存储器904读取数据和写入数据到存储器904的存储器接口。结果可以经由高速GPU互连908传输到另一个PPU 904或CPU。在一个实施例中,PPU 900包括数量为U的分区单元922,其等于耦合到PPU 900的分离且不同的存储设备904的数量。下面将结合图11更详细地描述分区单元922。
在一个实施例中,主机处理器执行驱动程序内核,该驱动程序内核实现应用程序编程接口(“API”),该应用程序编程接口使在主机处理器上执行的一个或更多个应用程序以调度用于在PPU 900上执行的操作。在一个实施例中,PPU 900同时执行多个计算应用程序,并且PPU 900为多个计算应用程序提供隔离、服务质量(“QoS”)和独立的地址空间。在一个实施例中,应用程序生成指令(例如,以API调用的形式),该指令使驱动程序内核生成一个或更多个任务以由PPU 900执行,并且驱动程序内核将任务输出到由PPU900处理的一个或更多个流。在一个实施例中,每个任务包括一个或更多个相关线程组,其可以被称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的多个相关线程(例如32个线程)。在一个实施例中,协作线程可以指多个线程,所述多个线程包括执行任务的指令和通过共享存储器交换数据的指令。根据一个实施例,在本申请的其他地方更详细地描述了线程和协作线程。
图10示出了根据一个实施例的GPC 1000,如图10的PPU 1000中示出的GPC。在一个实施例中,每个GPC 1000包括用于处理任务的多个硬件单元,并且每个GPC 1000包括管线管理器1002、光栅前操作单元(“PROP”)1004、光栅引擎1008、工作分配交叉开关(“WDX”)l016、存储器管理单元(“MMU”)1018、一个或更多个数据处理群集(“DPC”)1006,以及部件的任何合适组合。将理解的是,图10的GPC 1000可以为包括代替图10中所示的单元的其他硬件单元,也可以包括除了图10中所示的单元之外的其他硬件单元。
在一个实施例中,GPC 1000的操作由管线管理器1002控制。管线管理器1002管理一个或更多个DPC 1006的配置,以处理分配给GPC1000的任务。在一个实施例中,管线管理器1002将一个或更多个DPC 1006中的至少一个配置为实现图形渲染管线的至少一部分。在一个实施例中,DPC 1006配置成执行在可编程流多处理器(programmable streamingmultiprocessor)(“SM”)1014上执行的顶点着色程序。在一个实施例中,管线管理器1002配置成将从工作分配接收的分组路由到GPC 1000内的适当逻辑单元,并且可以将一些分组路由到PROP 1004和/或光栅引擎1008中的固定功能硬件单元,而其他的分组路由到DPC1006,以供基元引擎1012或SM1014处理。在一个实施例中,管线管理器1002配置一个或更多个DPC 1006中的至少一个,以实现神经网络模型和/或计算管线。
在一个实施例中,PROP单元1004配置成将由光栅引擎1008和DPC1006生成的数据路由到存储器分区单元中的光栅操作(“ROP”)单元,如上面更详细地描述的。在一个实施例中,PROP单元1004配置成执行用于颜色混合的优化、组织像素数据、执行地址转换等等。在一个实施例中,光栅引擎1008包括配置为执行各种光栅操作的多个固定功能硬件单元,并且光栅引擎1008包括设置引擎、粗糙光栅引擎、剔除引擎、剪切引擎、精细光栅引擎、瓦片合并(tile coalescing)引擎及其任何合适的组合。在一个实施例中,设置引擎接收变换后的顶点并生成与由这些顶点定义的几何本基元(primitive)相关的平面方程;平面方程式被传输到粗糙光栅引擎以生成基元的覆盖信息(例如,瓦片(tile)的x、y覆盖掩模);粗糙光栅引擎的输出传输到剔除引擎,在剔除引擎中,将与z测试失败的基元相关联的片段剔除,并将其传输到剪切引擎,在剪切引擎中,位于视锥范围之外的片段将被剪切。在一个实施例中,将在剪裁和剔除种存活的片段传递给精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。在一个实施例中,光栅引擎1008的输出包括将由任何合适的实体(例如,由在DPC 1006内实现的片段着色器)处理的片段。
在一个实施例中,包含于GPC 1000中的每个DPC 1006包括M-管线控制器(“MPC”)1010;基元引擎1012;一个或更多个SM 1014;及其任何合适的组合。在一个实施例中,MPC1010控制DPC 1006的操作,将从管线管理器1002接收的分组路由到DPC 1006中的适当单元。在一个实施例中,与顶点相关联的分组被路由到基元引擎1012,基元引擎1012配置为从存储器中获取与顶点关联的顶点属性;相反,与着色器程序相关联的分组可发送到SM1014。
在一个实施例中,SM1014包括可编程流处理器,其配置成处理由多个线程表示的任务。在一个实施例中,SM1014是多线程的并且配置成同时执行来自特定线程组的多个线程(例如32个线程),以及实现SIMD(单指令,多数据)架构,其中一组线程(例如,线程束)中的每个线程配置成基于相同的指令集来处理不同的数据集。在一个实施例中,线程组中的所有线程执行相同的指令。在一个实施例中,SM1014实现SIMT(单指令多线程)架构,其中一组线程中的每个线程配置成基于相同的指令集来处理不同的数据集,但是其中允许线程组中的各个线程在执行期间发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,从而当线程束中的线程发散时,实现线程束和线程束内的串行执行之间的并发(concurrency)。在另一个实施例中,为每个单独的线程维护程序计数器、调用堆栈和执行状态,从而使得在线程束和线程束之间的所有线程之间具有相等的并发。在一个实施例中,为每个单独的线程维护执行状态,并且为了更好的效率,可以收敛并并行地汇聚和执行相同指令的线程。在一个实施例中,下面将更详细地描述SM1014。
在一个实施例中,MMU1018提供了GPC1000与存储器分区单元之间的接口,而MMU1018提供了将虚拟地址转换为物理地址、存储器保护、和存储器请求仲裁。在一个实施例中,MMU 1018提供一个或更多个转换后备缓冲器(“TLB”),用于将虚拟地址转换为存储器中的物理地址。
图11示出了根据一个实施例的流多处理器(streaming multi-processor),如图10中的流多处理器。在一个实施例中,SM 1100包括:指令缓存1102;一个或更多个调度器单元1104;寄存器文件1108;一个或更多个处理核心1110;一个或更多个特殊功能单元(“SFU”)1112;一个或更多个加载/存储单元(“LSU”)1114;互连网络1116;共享存储器/LI高速缓存1118;和任何它们的适当组合。在一个实施例中,工作分配单元分派任务以在PPU的GPC上执行,并且每个任务被分配给GPC内的特定DPC,以及,如果该任务与着色器程序相关联,则该任务被分配给SM 1100。在一个实施例中,调度器单元1104从工作分配单元接收任务,并管理分配给SM1100的一个或更多个线程块的指令调度。在一个实施例中,调度器单元1104调度线程块以作为并行线程的线程束进行执行,其中每个线程块至少分配一个线程束。在一个实施例中,每个线程束执行线程。在一个实施例中,调度器单元1104管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期将来自多个不同的协作组的指令分配给各个功能单元(例如,核心1110、SFU 1112和LSU 1114)。
协作组可以指用于组织通信线程组的编程模型,该编程模型允许开发人员表达正在通信的线程的粒度,从而使表达更丰富,更有效的并行分解。在一个实施例中,协作启动API支持线程块之间的同步以执行并行算法。在一个实施例中,常规编程模型的应用程序提供了用于同步协作线程的单个简单构造:跨线程块的所有线程的屏障(例如,syncthreads()函数)。但是,编程人员经常想以小于线程块粒度的大小来定义线程组,并在定义的组内进行同步,从而以集体范围内的功能接口的形式实现更高的性能、设计灵活性和软件重用。协作组使编程人员能够在子块(即,小到单个线程)和多块粒度处明确地定义线程组,并能够在协作组中对线程执行集体操作,例如同步。编程模型支持跨软件边界的清除合成,因此库和实用功能可以在其本地环境中安全地同步,而不必对收敛进行假设。协作组基元启用了新的合作并行模式,包括生产者-消费者并行,机会主义并行以及整个线程块网格上的全局同步。
在一个实施例中,分派单元1106配置成将指令传输到一个或更多个功能单元,并且调度器单元1104包括两个分派单元1106,该两个分派单元1106使得来自同一线程束的两个不同指令能够在每个时钟周期内被调分配。在一个实施例中,每个调度器单元1104包括单个分派单元1106或附加分派单元1106。
在一个实施例中,每个SM 1100包括寄存器文件1108,其为SM 1100的功能单元提供一组寄存器。在一个实施例中,寄存器文件1108在每个功能单元之间划分,使得每个功能单元被分配寄存器文件1108的专用部分。在一个实施例中,寄存器文件1108在由SM 1100执行的不同线程束之间划分,以及寄存器文件1108为连接到功能单元的数据路径的操作数提供临时存储。在一个实施例中,每个SM 1100包括数量为L的处理核心1110。在一个实施例中,SM 1100包括大量(例如,128个或更多个)不同的处理核心1110。在一个实施例中,每个核心1110包括全管线、单精度、双精度和/或混合精度处理单元,处理单元包括浮点运算逻辑单元(“ALU”)和整数算术逻辑单元。在一个实施例中,浮点算术逻辑单元实现用于浮点算术的IEEE 754-2008标准。在一个实施例中,核心1110包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心。
在一个实施例中,ALU可以包括执行除算术和逻辑功能之外的功能的全状态逻辑,例如神经网络、卷积神经网络、自动编码器或专用逻辑。在一个实施例中,ALU是被训练以产生如本文件中其他地方所描述的图像的神经网络。在一个实施例中,可以通过使用微码或通过使用处理器执行的可执行指令以添加操作码和组合逻辑来执行所述操作码来配置ALU。
根据一个实施例,张量核心配置成为执行矩阵运算。在一个实施例中,核心1110中包括一个或更多个张量核心。在一个实施例中,张量核心配置成执行深度学习矩阵算术,例如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上操作并执行矩阵乘法和累加运算D=A×B+C,其中A,B,C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,并且累加矩阵C和D是16位浮点或32位浮点矩阵。在一个实施例中,张量核心对具有32位浮点累积的16位浮点输入数据进行操作。在一个实施例中,16位浮点乘法需要64次运算,并产生全精度结果,全精度结果然后使用32位浮点加法与用于4×4×4矩阵乘法的其他中间结果累加。在一个实施例中,张量核心用于执行从这些较小的元件构成的更大的二维或更高维度的矩阵运算。在一个实施例中,诸如CUDA 9C++API之类的API公开专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作,以有效地使用来自ClJDA-C++程序的张量核心。在一个实施例中,在CUDA级别,线程束级别接口假设16×16大小的矩阵跨线程束的所有32个线程。
在一个实施例中,每个SM1100包括执行特殊功能(例如,属性评估、倒数平方根等)的M个SFU 1112。在一个实施例中,SFU 1112包括配置成遍历分层树数据结构的树遍历单元。在一个实施例中,SFU1112包括配置成执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元配置成从存储器加载纹理图(例如,像素的2D阵列)并且对纹理图进行采样以产生采样的纹理值以在由SM 1100执行的着色器程序中使用。在一个实施例中,纹理图存储在共享内存/LI缓存中。根据一个实施例,纹理单元实施纹理操作,例如使用mip-maps(例如,不同细节层次的纹理图)进行滤波操作。在一个实施例中,每个SM 1100包括两个纹理单元。
在一个实施例中,每个SM1100包括N个LSU,这些LSU实现共享存储器/Ll高速缓存1106和寄存器文件1108之间的加载和存储操作。在一个实施例中,每个SM1100包括互连网络1116和共享存储器/L1高速缓存1118,互连网络1116将每个功能单元连接到寄存器文件1108和将LSU 1114连接到寄存器文件1108。在一个实施例中,互连网络1116可配置为将任何功能单元连接到寄存器堆1108中的任何寄存器并将LSU 1114连接到寄存器文件和共享存储器/高速缓存1118中的存储器位置的交叉开关。
在一个实施例中,共享存储器/Ll高速缓存1118是片上存储器的阵列,其允许SM1100与基元引擎之间以及SM 1100中的线程之间的数据存储和通信。在一个实施例中,共享存储器/LI高速缓存1118包括128KB的存储容量,并且位于从SM 1100到分区单元的路径中。在一个实施例中,共享存储器/L1高速缓存1118用于高速缓存读取和写入。共享存储器/L1高速缓存1118、L2高速缓存和存储器中的一个或更多个是后备存储器。
在一个实施例中,将数据高速缓存和共享存储器功能组合到单个存储器块中,为两种类型的存储器访问提供了改进的性能。在一个实施例中,该容量被不使用共享存储器的程序使用或可使用作高速缓存,例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。根据一个实施例,在共享存储器/L1高速缓存1118内的集成使共享存储器/L1高速缓存1118能够用于流数据的高吞吐量管道,同时提供对频繁重用的数据的高带宽和低延迟访问。当配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。在一个实施例中,固定功能图形处理单元被绕过,从而创建了更简单的编程模型。在一个实施例中,在通用并行计算配置中,工作分配单元直接将线程的块分配和分布给DPC。根据一个实施例,块中的线程执行相同的程序,在计算中使用唯一的线程ID来确保每个线程生成唯一的结果,使用SM1100执行程序并执行计算,使用共享内存/L1缓存1118在线程之间进行通信,以及LSU 1114通过共享存储器/L1高速缓存1118和存储器分区单元来读写全局存储器。在一个实施例中,当被配置用于通用并行计算时,SM1100写入调度器单元可以用来在DPC上启动新工作的命令。
在一个实施例中,PPU被包括在或耦合到台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线手持设备)、个人计算机中数字助理(“PDA”)、数字摄像头、车辆、头戴式显示器、手持式电子设备等。在一个实施例中,PPU被封装在单个半导体衬底上。在一个实施例中,PPU与一个或更多个其他设备(例如附加的PPU、存储器、精简指令集计算机(“RISC”)CPU、存储器管理单元(“MMU”)、数模转换器(“DAC”)等)一起包括在片上系统(“SoC”)中。
在一个实施例中,PPU可以包含于在包括一个或更多个存储设备的图形卡上。图形卡可以配置为与台式计算机的主板上的PCIe槽交互。在又一个实施例中,PPU可以是包含在主板的芯片组中的集成图形处理单元(“iGPU”)。
图12示出了根据一个实施例的计算机系统1200,其中实现了各种架构和/或功能。在一个实施例中,计算机系统1200配置成实现贯穿本公开描述的各种过程和方法。
在一个实施例中,计算机系统1200包括至少一个中央处理单元1202,该中央处理单元1202连接到使用任何合适的协议(例如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输(HyperTransport)或任何其他总线或点对点通信协议)实现的通信总线1210。在一个实施例中,计算机系统1200包括主存储器1204和控制逻辑(例如,实现为硬件、软件或其组合),并且数据被存储在主存储器1204中,主存储器1204可以采用随机存取存储器(“RAM”)的形式。在一个实施例中,网络接口子系统1222提供到其他计算设备和网络的接口,用于从计算机系统1200接收数据并将数据传输到其他系统。
在一个实施例中,计算机系统1200包括输入设备1208,并行处理系统1211和显示设备1206,显示设备1206可以使用常规的CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)等离子显示器或其他合适的显示技术来实现。在一个实施例中,从诸如键盘、鼠标、触摸板、麦克风等的输入设备1208接收用户输入。在一个实施例中,每个前述模块可以位于单个半导体平台上以形成处理系统。
在本说明书中,单个半导体平台可以指单个的基于半导体的集成电路或芯片。应当注意,术语“单个半导体平台”也可以指具有增加的连通性的多芯片模块,其模拟芯片上的操作,并且通过利用常规的中央处理单元(“CPU”)和总线实现方式进行了实质性的改进。当然,各个模块也可能根据用户的需求,单独放置或以半导体平台的各种组合放置。
在一个实施例中,以机器可读的可执行代码或计算机控制逻辑算法的形式的计算机程序被存储在主存储器1204和/或辅助存储器中。如果由一个或更多个处理器执行,则计算机程序使系统1200能够执行根据一个实施例的各种功能。存储器1204、存储器和/或任何其他存储器是计算机可读介质的可能示例。辅助存储器可以指任何合适的存储设备或系统,例如硬盘驱动器和/或可移动存储驱动器,代表软盘驱动器、磁带驱动器、光盘驱动器、数字通用磁盘(“DVD”)驱动器、记录设备,通用串行总线(“USB”)闪存。
在一个实施例中,各个先前附图的架构和/或功能是在中央处理器1202、并行处理系统1212、具有两个中央处理器1202能力的至少部分的集成电路、并行处理系统1212、芯片组(例如,一组设计为工作和作为执行相关功能的单元出售的集成电路等)、以及任何合适的集成电路组合的环景下实现。
在一个实施例中,在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、特定于应用程序的系统等的环境中实现各个先前附图的架构和/或功能。在一个实施例中,计算机系统1200可以采取台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持式设备)、个人数字助理(“PDA”)、数字摄像头、车辆、头戴式显示器、手持式电子设备、移动电话设备、电视、工作站、游戏机,嵌入式系统和/或任何其他类型的逻辑的形式。
在一个实施例中,并行处理系统1212包括多个PPU 1214和关联的存储器1216。在一个实施例中,PPU通过互连1218和开关1220或多路复用器连接到主机处理器或其他外围设备。在一个实施例中,并行处理系统1212在可以并行化的PPU 1214上分布计算任务,例如,作为跨多个GPU线程块的计算任务分布的一部分。在一个实施例中,虽然相对于使用本地存储器和驻留在PPU中的寄存器,共享存储器可能招致性能损失,但仍跨一些或所有PPU1214共享和访问存储器(例如,用于读取和/或写入访问)。在一个实施例中,通过使用诸如_syncthreads()之类的命令来同步PPU 1214的操作,该命令要求块中的所有线程(例如,跨多个PPU 1214执行)必须在继续执行之前到达代码的特定执行点。
因此,说明书和附图应被认为是说明性的而不是限制性的。但是,很明显,在不脱离权利要求书所提出的本发明的更广泛精神和范围的前提下,可以对其做出各种修改和改变。
其他变型在本公开的精神内。因此,尽管所公开的技术易于进行各种变构和替代构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。然而,应当理解,无意将本发明限制于所公开的特定形式或形式,相反,其意图是涵盖所有修改、替代构造和以及落入本发明的精神和范围内的等同物,如在所附权利要求书中定义的。
在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中)术语“一”、“一个”和“所述”以及类似指代的使用应被解释为涵盖单数和复数,除非本文另有说明或与上下文明显矛盾。除非另外指出,否则术语“包括”、“具有”、“包含”和“含有”应解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”(未经修改且指的是物理连接),应理解为完全或部分地包含在,附加到或连接在一起,即使有某物介入。本文中数值范围的引用仅旨在用作一种简写方法,除非本文另有说明,否则分别指代落入该范围内的每个单独值,并且每个单独值都被并入说明书中,就如同在此单独引用一样。术语“集合”(例如,“项目的集合)”或“子集”的使用,除非上下文另有说明或与之矛盾,否则应解释为包含一个或更多个成员的非空集合。此外,除非上下文另有说明或与之矛盾,否则相应集合的术语“子集”不是必需表示相应集合的适当子集,但是该子集和相应集合可以相等。
连接的语言,例如“A、B和C中的至少一个”或“A、B和C至少一个”形式的短语,除非另有明确说明或与上下文明显矛盾否则,否则可以作为通常使用与上下文一起理解以呈现项目、条款等,可以是是A或B或C,也可以是A和B以及C的集合的任何非空子集。例如,在具有三个成员的集合的示例性示例中,连接短语“A、B和C中的至少一个”和“A,B和C中的至少一个”是指以下任意集合:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,这种连接语言通常并不旨在暗示某些实施例需要至少一个A、至少一个B和至少一个C,他们每一个用于呈现。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示复数个项目)。“多个”中项目的数量的至少是两个,但是当明确地或通过上下文指示时可以是更多。此外,除非另有说明或从上下文中另外可知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。
可以以任何合适的顺序来执行本文描述的过程的操作,除非本文另有指示或与上下文明显矛盾。在一个实施例中,诸如本文描述的那些过程(或其变型和/或组合)的过程在一个或更多个计算机系统中的一个控制下通过硬件或其组合执行,一个或更多个计算机系统配置有可执行指令并且被实现为在一个或更多个处理器上共同执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)。在一个实施例中,代码以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或更多个处理器执行的多个指令的计算机程序。在一个实施例中,计算机可读存储介质是非暂时性计算机刻度存储介质,其不包括暂时信号(例如,传播的瞬态电或电磁传输)但包括瞬时信号的收发器内的非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)。在一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令(或其他存储器以存储可执行指令)的一组一个或更多个非暂时性计算机可读存储介质上,该可执行指令在被执行时(例如,由于被计算机系统的一个或更多个处理器执行,使计算机系统执行本文所述的操作。在一个实施例中,该组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,以及多个非暂时性计算机可读存储介质中的一个或更多个单独的非暂时性存储介质缺少全部代码,而多个非暂时性计算机可读存储介质共同存储所有代码。在一个实施例中,可执行指令被执行,使得不同的指令被不同的处理器执行-例如,非暂时性计算机可读存储介质存储指令,并且主CPU执行一些指令,而图形处理器单元执行其他指令。在一个实施例中,计算机系统的不同组件具有独立处理器,以及不同处理器执行指令的不同子集。
因此,在一个实施例中,计算机系统配置成实现单独或共同执行本文所述的过程的操作的一个或更能多个服务,并且这样的计算机系统配置有能够使操作的执行的适用的硬件和/或软件。此外,实现本公开的实施例的计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统,其包括以不同方式操作的多个设备,使得该分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
除非另外要求,本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本发明的实施例,而不对本发明的范围构成限制。本说明书中的语言不应解释为表示任何未要求保护的要素对于实施本发明是必不可少的。
这里描述了本公开的实施例,包括发明人已知的用于实施本发明的最佳方式。这些实施例的变型对于本领域普通技术人员而言,在阅读了前述说明之后将变得显而易见。发明人期望熟练的技术人员适当地采用这种变型,并且发明人希望本公开的实施例可以不同于本文具体描述的方式实施,因此,本公开的范围包括所列举的主题的所有修改和等同形式。此外,除非本文另外指出或与上下文明显矛盾,否则上述元件在其所有可能的变型中的任何组合都包括在本公开的范围之内。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文,其程度如同每个参考文献被单独且具体地指示以引用方式并入本文一样,并在此全文进行阐述。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有说明,否则应理解,在整个说明书中,诸如“处理”、“计算处理”、“计算”、“确定”等术语均指计算机或计算系统或类似的电子计算设备的动作和/或过程,这些电子设备将在计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据(例如电子)操作和/或转换为类似地表示为计算系统的存储器、寄存器或其他此类信息存储器、传输或显示设备中的物理量的其他数据。
在类似的方式中,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是中央处理单元(CPU)或图形处理单元(GPU)。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以依次或并行,连续或间歇地执行指令。术语“系统”和“方法”在本文中可互换使用,以达到一种该系统可以体现一种或更多种方法并且该方法可以被认为是系统的程度。
在本文档中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器。可以以多种方式来完成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取,接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在另一个实施方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由计算机网络将数据从提供实体转移到获取实体来完成。也可以参考提供、输出、传输、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来完成。
尽管以上讨论阐述了所描述的技术的示例实施方式,但是其他架构可以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于讨论目的在上面定义了具体的职责分配,但是根据情况,各种功能和职责可能以不同的方式分配和划分。
此外,尽管已经以结构特征和/或方法动作专用的语言描述了主题,但应理解,所附权利要求书中定义的主题不必限于所描述的特定特征或动作。而是,将特定特征和动作公开为实现权利要求的示例性形式。

Claims (20)

1.一种方法,包括:
训练神经网络以至少部分地基于对象或场景的两个或更多个图像的两个或更多个视图的部分来预测中间图像,其中所述部分小于全部的所述两个或更多个图像。
2.根据权利要求1所述的方法,其中:
所述两个或更多个图像包括来自第一视频的第一图像和来自第二视频的第二图像;
所述第一视频通过第一视频摄像头获得;
所述第二视频通过第二视频摄像头获得;
所述第一视频摄像头和所述第二视频摄像头具有重叠视场;和
所述两个或更多个图像的所述两个或更多个视图的所述部分对应于所述重叠视场。
3.根据权利要求1所述的方法,其中:
所述两个或更多个图像的所述两个或更多个视图的所述部分被分成多个重叠的切片;和
对于多个重叠的切片中的每个切片,在所述两个或更多个图像之间生成插值。
4.根据权利要求2所述的方法,其中:
使用由模拟器生成的多个图像来训练所述神经网络;和
所述多个图像表示从所述第一视频摄像头的视点到所述第二视频摄像头的视点的一系列视角。
5.根据权利要求2所述的方法,其中使用从多个图像切片组成的图像来训练所述神经网络,其中,每个图像切片都从所述第一视频摄像头和所述第二视频摄像头的视点之间的不同视点获得。
6.一种装置,包括:
图像检测逻辑,以促进使用一个或更多个摄像头检测描述对象或场景的两个或更多个视图的两个或更多个图像,其中,所述一个或更多个摄像头耦合至一个或更多个处理器,以预测描述所述两个或更多个视图的中间视图的所述两个或更多个图像之间的中间图像,其中所述中间图像由所述一个或更多个处理器至少部分地基于所述两个或更多个图像的部分进行预测,其中所述部分小于全部的所述两个或更多个图像。
7.根据权利要求6所述的装置,其中:
转换所述两个或更多图像以共享公共原点;和
所述两个或更多图像投影在圆柱上。
8.根据权利要求6所述的装置,其中,将所述两个或更多个图像的非重叠部分与所述中间图像结合从而产生全景图像。
9.根据权利要求6所述的装置,还包括:
具有多个摄像头的车辆,所述多个摄像头位于所述车辆的不同位置;
其中从所述多个摄像头获取所述两个或更多个图像;和
将所述两个或更多个图像结合以形成单个图像。
10.根据权利要求6所述的装置,其中:
所述一个或更多个摄像头包括在第一位置的第一摄像头和在第二位置的第二摄像头,所述第一位置不同于所述第二位置;
所述第一摄像头和所述第二摄像头具有重叠视场;和
所述两个或更多个图像的所述部分位于所述重叠视场中。
11.根据权利要求10所述的装置,其中:
所述中间图像是在所述重叠视场中的所述两个或更多个图像的一部分的插值;和
所述插值表示具有从所述第一摄像头的视点转移到所述第二摄像头的视点的视点的图像。
12.根据权利要求11所述的装置,其中,所述插值由一组切片组成,其中,每个切片表示所述第一摄像头的视点与所述第二摄像头的视点之间的不同视点。
13.根据权利要求6所述的装置,其中,通过所述中间图像将所述两个或更多个图像结合以形成组合图像。
14.根据权利要求6所述的装置,还包括:
视频屏幕,所述视频屏幕显示包括所述两个或更多个图像的部分和所述中间图像的组合图像。
15.根据权利要求6所述的装置,还包括视频屏幕,所述视频屏幕显示包括所述两个或更多个图像和所述中间图像的部分的组合图像。
16.一种处理器,包括:一个或更多个算法逻辑单元(ALU),配置成:
从具有第一视场的第一摄像头接收第一视频,以及从具有第二视场的第二摄像头接收第二视频,所述第一视场与所述第二视场部分重叠;
生成中间视频,对于所述中间视频中的每个帧,所述中间视频的视角从所述第一摄像头的视点转移到第二摄像头的视点;和
将所述第一视频和所述第二视频的非重叠部分与所述中间视频结合以产生第三视频。
17.根据权利要求16所述的处理器,其中,所述ALU还配置成:
识别所述第三视频中的对象;以及
确定在所述第三视频中的所述对象的位置。
18.根据权利要求17所述的处理器,其中,所述ALU还配置成:
在显示屏上显示所述第三视频。
19.根据权利要求16所述的处理器,还包括:
对所述第一视频和所述第二视频进行预处理的流估计网络;和
对所述中间视频进行后处理的优化网络。
20.根据权利要求16所述的处理器,还包括:
神经网络,所述神经网络使用在模拟器中使用来自于分布在对第一虚拟摄像头和第二虚拟摄像头的视角之间的多个视角的多个虚拟摄像头生成的图像进行训练,所述第一虚拟摄像头和第二虚拟摄像头对应于所述摄像头和所述第二摄像头。
CN202010166505.0A 2019-03-11 2020-03-11 使用神经网络进行视图合成 Pending CN111698463A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/299,062 US20200294194A1 (en) 2019-03-11 2019-03-11 View synthesis using neural networks
US16/299,062 2019-03-11

Publications (1)

Publication Number Publication Date
CN111698463A true CN111698463A (zh) 2020-09-22

Family

ID=69804492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010166505.0A Pending CN111698463A (zh) 2019-03-11 2020-03-11 使用神经网络进行视图合成

Country Status (3)

Country Link
US (1) US20200294194A1 (zh)
EP (1) EP3709256A1 (zh)
CN (1) CN111698463A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113450298A (zh) * 2021-08-31 2021-09-28 国汽智控(北京)科技有限公司 基于多传感器的视野图处理方法、装置和设备

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10861359B2 (en) * 2017-05-16 2020-12-08 Texas Instruments Incorporated Surround-view with seamless transition to 3D view system and method
WO2020068960A1 (en) * 2018-09-26 2020-04-02 Coherent Logix, Inc. Any world view generation
US11995854B2 (en) * 2018-12-19 2024-05-28 Nvidia Corporation Mesh reconstruction using data-driven priors
US11727897B2 (en) * 2019-07-29 2023-08-15 Intel Corporation Tear reduction for immediate flips
US20210327026A1 (en) * 2020-04-17 2021-10-21 Gopro, Inc. Methods and apparatus for blending unknown pixels in overlapping images
US11978181B1 (en) 2020-12-11 2024-05-07 Nvidia Corporation Training a neural network using luminance
US11637998B1 (en) * 2020-12-11 2023-04-25 Nvidia Corporation Determination of luminance values using image signal processing pipeline
WO2022132826A1 (en) * 2020-12-14 2022-06-23 Augmented Reality Media Corp., Inc. Systems and methods for synthetic augmentation of cameras using neural networks
CN112365407B (zh) * 2021-01-13 2021-04-20 西南交通大学 视角可配置的摄像机全景拼接方法
US12008681B2 (en) * 2022-04-07 2024-06-11 Gm Technology Operations Llc Systems and methods for testing vehicle systems

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100724134B1 (ko) * 2006-01-09 2007-06-04 삼성전자주식회사 이미지 매칭 속도와 블렌딩 방법을 개선한 파노라마 영상제공 방법 및 장치
US8428390B2 (en) * 2010-06-14 2013-04-23 Microsoft Corporation Generating sharp images, panoramas, and videos from motion-blurred videos
US8818101B1 (en) * 2012-01-03 2014-08-26 Google Inc. Apparatus and method for feature matching in distorted images
US9723272B2 (en) * 2012-10-05 2017-08-01 Magna Electronics Inc. Multi-camera image stitching calibration system
US20160191795A1 (en) * 2014-12-30 2016-06-30 Alpine Electronics, Inc. Method and system for presenting panoramic surround view in vehicle
US20170297488A1 (en) * 2016-04-19 2017-10-19 GM Global Technology Operations LLC Surround view camera system for object detection and tracking
US10518702B2 (en) * 2017-01-13 2019-12-31 Denso International America, Inc. System and method for image adjustment and stitching for tractor-trailer panoramic displays
US10616482B2 (en) * 2017-03-10 2020-04-07 Gopro, Inc. Image quality assessment
WO2018170074A1 (en) * 2017-03-14 2018-09-20 Starsky Robotics, Inc. Vehicle sensor system and method of use
US11049218B2 (en) * 2017-08-11 2021-06-29 Samsung Electronics Company, Ltd. Seamless image stitching
JP6504529B1 (ja) * 2017-10-10 2019-04-24 マツダ株式会社 車両用表示装置
JP6890288B2 (ja) * 2018-03-28 2021-06-18 パナソニックIpマネジメント株式会社 画像処理装置、画像表示システムおよび画像処理方法
US10699376B1 (en) * 2018-10-03 2020-06-30 Ambarella International Lp eMirror with 3-in-1 stitching by non-rectilinear warping of camera views
US11412136B2 (en) * 2018-12-07 2022-08-09 Samsung Electronics Co., Ltd. Apparatus and method for operating multiple cameras for digital photography
US10694105B1 (en) * 2018-12-24 2020-06-23 Wipro Limited Method and system for handling occluded regions in image frame to generate a surround view
CN111627051B (zh) * 2019-02-27 2023-12-15 中强光电股份有限公司 电子装置及用以估计光流的方法
US10992860B2 (en) * 2019-03-29 2021-04-27 Nio Usa, Inc. Dynamic seam adjustment of image overlap zones from multi-camera source images
US11158056B2 (en) * 2019-06-26 2021-10-26 Intel Corporation Surround camera system with seamless stitching for arbitrary viewpoint selection
US11341614B1 (en) * 2019-09-24 2022-05-24 Ambarella International Lp Emirror adaptable stitching
US11948315B2 (en) * 2020-12-31 2024-04-02 Nvidia Corporation Image composition in multiview automotive and robotics systems
JP2022172709A (ja) * 2021-05-06 2022-11-17 トヨタ自動車株式会社 車載ドライブレコーダシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113450298A (zh) * 2021-08-31 2021-09-28 国汽智控(北京)科技有限公司 基于多传感器的视野图处理方法、装置和设备

Also Published As

Publication number Publication date
US20200294194A1 (en) 2020-09-17
EP3709256A1 (en) 2020-09-16

Similar Documents

Publication Publication Date Title
EP3709256A1 (en) View synthesis using neural networks
US11748840B2 (en) Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
CN110176054B (zh) 用于训练神经网络模型的合成图像的生成
US10970816B2 (en) Motion blur and depth of field reconstruction through temporally stable neural networks
US11747766B2 (en) System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics
CN107251098B (zh) 使用动态三维形状促进真实对象的真三维虚拟表示
CN111210498B (zh) 降低多边形网格的细节水平以减少被渲染几何的复杂度
CN110868580A (zh) 使用可变速率着色的运动自适应渲染
CN109936745B (zh) 用于改善原始视频数据的解压的方法和系统
CN110807827B (zh) 系统生成稳定的重心坐标和直接平面方程访问
CN110675480B (zh) 用于获取纹理操作的采样位置的方法和装置
CN111798450A (zh) 使用无监督神经网络训练技术的分割
US20200314442A1 (en) Adaptive Pixel Sampling Order for Temporally Dense Rendering
US20200312010A1 (en) Reconstruction for temporally dense ray trace rendering
CN113393564B (zh) 利用全局照明数据结构的基于水塘的时空重要性重采样
KR20210087043A (ko) 병행 텍스처 샘플링
WO2024077285A2 (en) Wide angle augmented reality display
CN112041894A (zh) 渲染期间提高涉及水面的场景的真实感
CN113822975B (zh) 用于对图像进行有效采样的技术
US10212406B2 (en) Image generation of a three-dimensional scene using multiple focal lengths
CN113808183B (zh) 使用扭曲的复合估计乘积积分
Liao et al. Gpu parallel computing of spherical panorama video stitching
US11748952B2 (en) Apparatus and method for optimized image stitching based on optical flow
CA2868297A1 (en) System and method for histogram computation using a graphics processing unit
US11847737B2 (en) Temporal denoiser quality in dynamic scenes

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination