CN117911232A - 用于视频流式传输系统和应用的帧间实时遮挡检测 - Google Patents
用于视频流式传输系统和应用的帧间实时遮挡检测 Download PDFInfo
- Publication number
- CN117911232A CN117911232A CN202310166926.7A CN202310166926A CN117911232A CN 117911232 A CN117911232 A CN 117911232A CN 202310166926 A CN202310166926 A CN 202310166926A CN 117911232 A CN117911232 A CN 117911232A
- Authority
- CN
- China
- Prior art keywords
- frame
- image
- pixel
- backward
- determining
- 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
Links
- 238000001514 detection method Methods 0.000 title abstract description 23
- 239000013598 vector Substances 0.000 claims abstract description 153
- 230000003287 optical effect Effects 0.000 claims abstract description 86
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000033001 locomotion Effects 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 40
- 238000001914 filtration Methods 0.000 claims description 10
- 238000013135 deep learning Methods 0.000 claims description 5
- 230000003190 augmentative effect Effects 0.000 claims description 4
- 238000009877 rendering Methods 0.000 claims description 4
- 238000004088 simulation Methods 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 46
- 230000008569 process Effects 0.000 description 35
- 230000002093 peripheral effect Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011143 downstream manufacturing Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003628 erosive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/269—Analysis of motion using gradient-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/56—Extraction of image or video features relating to colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/60—Extraction of image or video features relating to illumination properties, e.g. using a reflectance or lighting model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
- G06T2207/20032—Median filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Signal Processing (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computer Graphics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本公开涉及用于视频流式传输系统和应用的帧间实时遮挡检测。系统和方法估计视频序列的帧中的被遮挡像素。接收光流数据以确定在时间上是彼此相邻的第一帧和第二帧中的共同像素位置的前向流向量和后向流向量的有效性。第一帧的遮挡信息确定了关于从第一帧到第二帧的回放在第二帧中隐藏的像素。第二帧的遮挡信息确定了关于从第二帧到第一帧的回放在第一帧中隐藏的像素。
Description
背景技术
视频序列可能包括前景和背景对象,其中前景或背景对象的移动可能导致视频序列中的帧之间的像素被遮挡。传统的基于流向量检测被遮挡像素的技术可能并不总是能够区分遮挡和噪声,因此,可能产生不可接受的结果。推而广之,现有的利用这些技术检测被遮挡像素的方法可能会因为输入的流信息不足和有噪声而失败。解决这些问题的方法往往是不准确的、耗时的或资源密集的。
附图说明
将参照附图描述根据本公开的各种实施例,其中:
图1示出了根据至少一个实施例的用于视频段处理的环境的示例;
图2A和图2B示出了根据至少一个实施例的由于前景对象的运动而产生的遮挡的示例性表示;
图3A和图3B示出了根据至少一个实施例的第一图像帧和第二图像帧之间的对象移动的示例表示;
图4示出了根据至少一个实施例的在帧中识别的遮挡区域的示例性表示;
图5示出了根据至少一个实施例的用于基于光流数据确定图像中的遮挡区域的过程的示例流程图;
图6A示出了根据至少一个实施例的用于确定图像中的像素的遮挡状态的过程的示例流程图;
图6B示出了根据至少一个实施例的用于生成遮挡输出的过程的示例流程图;
图6C示出了根据至少一个实施例的用于生成遮挡输出的过程的示例流程图;
图7示出了根据至少一个实施例的示例数据中心系统;
图8示出了根据至少一个实施例的计算机系统;
图9示出了根据至少一个实施例的计算机系统;
图10示出了根据一个或更多个实施例的图形处理器的至少部分;以及
图11示出了根据一个或更多个实施例的图形处理器的至少部分。
具体实施方式
根据各种实施例的方法通过提供轻量级的、快速的、实时的或接近实时的(例如,没有明显的延迟)的方法来检测视频序列的帧之间的遮挡像素,从而克服常规技术(例如上述的技术)的不足之处。在至少一个实施例中,被遮挡像素对应于在当前帧中被遮挡的前一帧的像素。遮挡可以使用光流数据(例如,运动向量)来确定,这些光流数据可能是有噪声的和/或不准确的。各种实施例可以使用一种或更多种方法来确定不准确的流向量,例如前向-后向检查(forward-backward check)。此外,实施例可以结合一个或更多个图像属性来评估遮挡,例如评估色度(UV)以区分阴影区域和非阴影区域。各种实施例可以对不同的像素执行一个或更多个通道(pass),以识别帧之间的遮挡(例如,来自第一帧的第二帧中的遮挡)。例如,可以使用逻辑推理来确定一个流向量在前向方向和后向方向上是否有效。如果不是,无效的流向量可被用于确定发生遮挡的地方。此外,第二通道可以应用一个或更多个滤波器来识别分布稀疏的不准确的流向量,这可能是噪声的指示。以这种方式,可以实现轻量级的、易于应用的遮挡检测管道,该管道可以在实时或接近实时的情况下使用(例如,没有明显的延迟),即使是在有噪声的光流数据的情况下。
本公开的实施例除了前向-后向检查外,还实现了双通道方法,以便识别两个帧之间的遮挡区域。例如,前向-后向检查可以评估两帧之间的共同像素的流向量(例如,运动向量)的各自有效性。然后,确定的各自流量有效性可用于识别,对于遮挡的像素,遮挡发生在哪里(例如,在第一帧或第二帧中)。此外,各实施例可提供比使用亮度(Y)进行比较的方法更多的改进,该方法可能无意中通过比较色度(UV)值而使过渡到阴影区域的流向量无效。此外,各种实施例提供了对现有技术方法的改进,这些方法需要准确的光流数据,而这些数据可能很难获得或很昂贵,并且往往使以前的方法对实时或接近实时的时间处理没有效果。此外,本公开的实施例可在不使用深度数据的情况下识别遮挡区域,这可提供更广泛的应用范围,因为许多类型的输入视频数据可能没有Z-缓冲区以纳入深度数据。
本发明实施例提供了在有噪声的光流数据的情况下进行遮挡检测的能力,使用各种不同的引擎来确定光流信息,并使用比现有方法更轻的模型。对一对时间间隔的图像(例如,视频内的后续帧)进行分析,从而确定每个像素的前向和后向流向量。对于图像中的每个像素,可以评估流向量以确定它们是否有效,有效的流向量是指像素从第一位置移动到第二位置(前向)和从第二位置移动到第一位置(后向)的流向量。如果流向量在前向流中对某一位置(x,y)无效,如果流向量在后向流中对同一位置(x,y)有效,那么第一帧中的像素被识别为第二帧中被遮挡的像素。实施例还可以部署一个滤波过程,以识别错误识别的像素,例如由于噪声而被错误识别的像素。其结果可能是两幅图像之间被遮挡的像素的指示,这可用于各种应用,如帧插值、运动跟踪等。
图1说明了根据至少一个实施例可用于提供这种功能的示例环境100。在这个示例中,环境可以与一个或更多个视频处理系统相关联,例如游戏引擎、运动检测系统、导航系统或类似系统。如图所示,输入102被提供给遮挡检测管道104。输入102可以包括图像数据,例如视频序列,其中包括一系列的图像数据帧。输入102可以从光学捕获设备提供,例如视频记录器,其中输入102可以是实时视频馈送,存储的视频文件,生成的视频图像,或其组合。输入也可以是游戏画面的一部分,例如由图形处理器通过执行视频游戏产生的画面。此外,输入102可以是从游戏引擎接收的用于在显示器上渲染的一个或更多个图像,其可以响应于用户输入的一个或更多个动作。
在各种实施例中,输入102包括至少两个帧,其中帧在时间上可以是彼此接近的。帧可以是连续的,但应该理解的是,各种实施例可以使用非连续的帧。虽然,使用它们之间具有较大时间差异的帧可能会导致较不准确的检测,因为随着时间的推移可能会有更多的运动,但本公开的实施例适合于识别帧内的遮挡区域(例如,由于运动而在下一帧中被遮挡或隐藏的帧的像素),即使帧之间具有较大的间距也是如此。
示出了遮挡检测管道104以接收和处理输入102(例如,两个或更多个帧)。遮挡检测管道104以示例方式示出,可包括更多或更少的组件或模块,其可对应于可执行以算法形式存储的代码以执行一个或更多个任务的一个或更多个处理单元和一个或更多个存储器。在这个非限制性的示例中,遮挡检测管道104包括光流引擎106、比较单元108、滤波器110和遮挡检测器112。正如可以理解的那样,这些组件中的一个或更多个可以被集成到另一个,和/或在同一个软件包中,并且为了清晰起见,在本公开中被显示为分离的组件。此外,应该理解的是,一个或更多个组件可以与遮挡检测管道104进行通信,但不一定是管道104的一部分。例如,光流引擎106可以是遮挡检测管道104可以与之通信以接收光流数据的单独系统。
光流引擎106可以包括一个或更多个算法,用于确定一对图像之间的光流,或者在各种实施例中,确定更大的图像序列。光流引擎106可被用于确定前向光流或后向光流中的一个或两个。前向光流对应于第一帧和第二帧之间的运动,其中第一帧是在第一时间t0,第二帧是在第二时间t1。后向光流对应于第二帧和第一帧之间的运动,其中第一帧在第一时间t0,第二帧在第二时间t1。应该理解的是,各种算法可用于确定光流,包括但不限于英伟达公司(NVIDIA公司)的英伟达光流软件开发工具包(SDK)。
在各种实施例中,光流可指与视觉场景中对象的明显运动模式或轨迹相对应的运动向量。该运动可由对象的运动(例如,前景对象移动以覆盖背景对象)或由帧/帧本身的视角的运动(例如由于缩放或平移)来驱动。因此,光流可以以向量的形式呈现,从第一像素开始,然后向不同的第二像素延伸。对于图像来说,光流可以指二维向量场,其中每个向量是一个位移向量,显示了从第一帧到第二帧的点的移动。应该理解的是,光流可以在二维和三维中呈现,但是,为了简单,各种实施例可以参照二维向量来描述光流。
各种实施例将输入102提供给光流引擎106,以便为输入图像帧内的像素估计光流。在各种实施例中,为每个像素估计光流。也就是说,与每个像素的估计运动相对应的运动向量被确定。虽然光流可以以可视化的方式输出,例如,作为显示向量方向或强度的叠加梯度的帧本身,但应该理解的是,光流对应于与像素相关联的特定向量。此外,实施例可选择性地确定图像内某些像素的光流,而不是所有像素的光流。
比较单元108可以接收估计的光流数据,以便比较输入图像帧之间的像素流向量。在至少一个实施例中,比较单元108可以评估不同的光流向量以确定流向量是否有效。如本文所使用的,有效的流向量可以指表示像素从一帧到另一帧的真实运动的流向量。通过非限制性的示例,这可能包括与遮挡背景的移动对象相关联的像素,但其他流向量,如那些不遮挡背景的流向量,也可能是有效的。相反,无效的流向量可以指与在下一帧中被遮挡的像素相关联的流向量,例如被移动的对象遮挡或由于图像视图区域的变化(例如,平移、缩放等)。应该理解的是,并非所有由一个或更多个光流算法产生的流向量都是有效的。例如,有些是由于算法中的噪声而无效,有些可能是由于遮挡而无效,在这种情况下,由于对象在下一帧中不存在,算法不能为它找到正确的流向量。比较单元108可以比较像素的前向和后向流向量。例如,光流引擎106可以提供与前向流(例如,从第一帧到后来的第二帧的流)和后向流(例如,从后来的第二时间到早期的第一帧的流)相关联的信息。可以执行前向-后向一致性检查,以确定前向和后向流的不一致是否超过阈值。至少部分地基于这种一致性检查,不准确的流向量可以被识别,其中不准确的流向量指向指示被遮挡像素的像素,如下文所述。比较单元108可以对输入图像中的像素进行这种检查,以初步识别可能对应于被遮挡像素的不准确的流向量。此外,比较单元108也可用于执行潜在的多通道过程中的一个或更多个通道,以识别遮挡的像素。例如,比较单元108可以包括确定第一帧和第二帧之间的相关联像素(x,y)的不同流向量的有效性状态并确定遮挡发生在哪里的逻辑。
应当理解,本公开的各种实施例可用于有噪声的输入光流数据。也就是说,光流引擎106的输出可能是有噪声的或可能提供不完整的数据。这可能是使用实时或接近实时方法、对光流引擎106的输入质量差或各种其他原因的结果。这种有噪声的信息可能会导致错误地识别无效的流向量,并因此导致错误地识别的被遮挡像素。各种实施例可以部署滤波器模块110,对来自比较单元108的估计的遮挡输出运行滤波器。在一个示例中,应用中值滤波器。滤波可以帮助识别错误识别的无效流向量,因为由于遮挡导致的不准确的流向量往往在空间上聚集。相反,由于流向量数据中的噪声导致的不准确的流向量往往在空间上是稀疏分布的。因此,运行滤波器,如中值滤波器,可以去除不正确的遮挡标签。这个滤波步骤可以作为使用前向-后向检查的初始比较和识别之后以及进一步的逻辑推理处理之后的第二通道或第二步骤来执行。应该理解的是,滤波是作为一个示例提供的,其他方法,例如侵蚀或扩张,也可以在一个或更多个滤波步骤之外,或代替一个或更多个滤波步骤而纳入。
遮挡检测器112可用于聚合比较单元108和滤波器110的结果,以便产生输出114,该输出可对应于指示在一个或更多个帧中哪些像素被遮挡的数据。例如,输出114可以确定帧中的被遮挡像素的一个或更多个区域。输出114可被提供为可被一个或更多个下游过程使用的数据,例如游戏引擎、光学跟踪系统、导航系统、视频处理器或类似的。
如上所述,各种方法可用于确定光流和/或遮挡的像素。例如,深度学习技术,例如递归全对场变换("RAFT"),可用于光流估计。然而,这些技术可能存在准确度问题,并且可能不适合实时或接近实时的操作。其他方法可能试图同时或基本同时估计遮挡和光流,但这些方法可能不适合在已经使用一种或更多种不同技术估计光流数据的情况下使用。这些方法中有许多是处理器密集型的,不适合实时或接近实时的应用。这对于使用游戏引擎来说可能特别明显,因为游戏引擎可能使用系统GPU进行渲染,因此,可能无法为基于神经网络的遮挡检测分配足够的资源。各种实施例通过提供可在实时或接近实时的情况下用于识别图像的遮挡区域的轻量级系统来解决这些缺点。
图2A和图2B说明了表示200的表示中的前向光流和表示250中的后向光流之间的光流确定。在实施例中,帧202、204被呈现用于由遮挡检测管道104评估。帧202、204可以是视频序列的一部分,并且可以是时间上间隔的帧,这样,帧202是在第一时间,而帧204是在第二时间,在这个示例中第二时间比第一时间晚。在各种实施例中,帧202可以被称为"帧A"或"A",而帧204可以被称为"帧B"或"B"。在两个帧202、204中都显示了第一对象206。第一对象206被定位在帧202中的像素位置(x,y),在图2A中可表示为A1(x,y)。第二对象208被显示在图2A的第一帧202和图2B的第二帧204中。第二对象208被定位在图2A的帧202中的像素位置(x,y),其中该位置可以表示为A2(x,y)。
参照图2A,第一对象206从第一帧202中的像素位置A1(x,y)移动到第二帧204中的像素位置A2(x,y),从而遮挡第二帧204中的第二对象208。然后,第一对象206被显示位于第二帧204中的像素位置B1(x,y),在某些实施例中,它可能对应于A2(x,y)。结果,由于第一对象206的移动,第二对象208在第二帧204中不再可见。该运动可由遮挡检测管道104处理,该管道可生成对象206的这些光学流的表示210。应该理解的是,该表示210是为了说明的目的和清晰,在各种实施例中,对应于光流的输出是与不同像素位置相关联的向量。在这个示例中,光流表示212表示从像素A1(x,y)到第二帧204中的相关联像素B1(x,y)的流向量(Fa(x,y))。光流表示212以与第二光流表示214不同的划线表示。光流表示212是一个有效的流向量,指向右边(例如,表示第一对象206在第一帧202和第二帧204之间向右移动)。由于第一对象206的移动造成的遮挡,光流表示214是一个无效的流向量。应该理解的是,由于噪声,光流向量也可能是无效的,但这种表示没有在图2A中显示。
参照图2B,第一对象206在第一帧202和第二帧204之间从像素位置A2(x,y)移动到像素位置A1(x,y),从而不再遮挡第二对象208。第一对象206,在移动之后,被显示定位在像素位置B2(x,y),在某些实施例中,它可能对应于A1(x,y)。此外,在移动之后,第二对象208现在在像素位置A2(x,y)处可见,这也可以被称为B1(x,y)。该运动可由遮挡检测管道104处理,该管道为对象生成这些光学流的表示216。应该理解的是,表示216是为了说明的目的和清晰度,在各种实施例中,输出是与不同像素位置相关联的向量。在这个示例中,光流表示218表示从像素A2(x,y)到第二帧204的相关联像素B2(x,y)的流向量(Fb(x,y))。光流表示218以与第二光流表示220不同的划线显示。光流表示218是一个有效的流向量,它指向左边(例如,表示第一对象206在第一帧202和第二帧204之间向左移动)。由于第一对象206的移动造成的遮挡,光流表示220是无效的流向量。
如图所示,图2A和图2B中的对象的移动在不同的帧202、204中产生了遮挡的区域,这些区域可能没有有效的光流向量,因此,在没有昂贵的分析和图像修描(inpainting)的情况下可能不能用于各种应用。识别这些被遮挡的区域可能对各种应用有用,例如用于游戏引擎、视频处理、对象检测、导航等。本实施例能够使用一个或更多个系统或方法来检测被遮挡的像素,这可能包括两步过程来检测给定的一对帧的被遮挡区域。在下面的讨论中,A对应于视频序列中的一帧,B对应于在时间上与A相邻的一帧,但不一定是序列中的下一帧,如上所述。A(x,y)是位于A帧中(x,y)坐标的一个像素,Fa(x,y)表示从A(x,y)像素到B中的像素的流向量(例如,前向流向量),Fb(x,y)表示从B(x,y)像素到A中像素的流向量(例如,后向流向量)。
在某些实施例中,可能是多步骤过程的第一步骤中,前向-后向检查可用于检测前向流向量(Fa(x,y))和后向流向量(Fb(x,y))中不准确的流向量。此外,实施例可以进一步考虑到有效的流向量显示从阴影到非阴影区域的运动的场景。传统的方法可能会评估像素的亮度分量,而只使用亮度,这些向量可能会被错误地识别为无效的。本公开的实施例另外使用色度来克服这一限制。例如,如果源像素和目标像素在亮度方面有差异(例如,超过阈值),但色度值相似(例如,在阈值内),那么流向量可被视为有效。阈值可以至少部分地基于使用本发明的内容或场景。例如,视频游戏可能具有与自驾车或自主机器人的运动跟踪场景不同的阈值容忍度。因此,阈值可以根据与输入帧相关的内容的信息来调整。
在检测不一致的流向量时,前向-后向检查可能会有所帮助,但可能不足以确定流向量是否由于遮挡或由于噪声而无效。因此,实施例可以进一步包含对输入图像的一个或更多个像素的额外通道。例如,第一通道可以被称为逻辑推理通道,它评估了前向流向量或后向流向量的状态或状况,它可以通过以下方式呈现:
因此,如果位置(x,y)处的像素在帧A中具有无效的流向量,但帧B中相应的(x,y)像素具有有效的流向量,则假定帧A的在(x,y)处的像素在帧B中被遮挡了。此外,如果位置(x,y)处的像素在帧B中具有无效的流向量,但是帧A中相应的(x,y)像素具有有效的流向量,则假定帧B(x,y)的该像素在帧A中被遮挡。
初始通道可以识别图像中被遮挡的像素被分组或以其他方式存在(例如,不一定是分组的)的区域。然而,如上所述,各种实施例可使用噪声输入光流数据执行。这种有噪声的数据可能会导致错误地识别的像素。因此,可以在上面提供的第一通道的输出上使用滤波器。例如,可以使用中值滤波器。在至少一个实施例中,使用5x5中值滤波器。因为由于遮挡导致的不准确的流向量往往在空间上聚集,该滤波器可能有助于检测空间上分布稀疏的不准确的流向量,这可能是噪声(例如,输入光流数据的噪声或一致性检查算法的噪声,以及其他来源)的结果。然后,该滤波器可被用于去除不正确的遮挡标签。因此,尽管有光流引擎输出和/或流向量理智算法提供的固有限制,双通道方法可用于识别实际上被遮挡的像素。
图3A和图3B是输入图像300、302的示例表示,这些图像在时间上彼此间隔。例如,输入图像300可以对应于上面描述的帧A,而输入图像302可以对应于上面描述的帧B。如本例所示,对应于一个人的数字表示的对象304与角落里的第二对象306一起被定位在图像300的第一位置。当与图像302相比,对象304的一部分已经移动,例如手臂,而且,帧本身的运动(例如,由于在Z方向上向内放大)已经改变了第二对象306的可见区域。相应地,图像300中的区域308A(可由一个或更多个像素形成)由于对象手臂的移动,现在被图像302中的区域308A的不同对象占据。同样地,与图像300相比,在图像302中的区域308B中可见的对象306较少。因此,这些像素中的一个或更多个可以被认为是在图像300和图像302之间被遮挡的。
本公开的各种实施例可以接收这些输入图像300、302并使用生成的流向量以确定哪些区域被遮挡,例如,由于各种对象的移动和/或帧的可见区域的移动或变化。例如,图4说明了在本文所述的评估(例如,前向-后向检查、逻辑推理、滤波等)之后的图像300的表示400,说明哪些区域将在图像302中被遮挡。如图所示,某些区域402被确定为包括被遮挡像素。这些像素可能由于前景对象的移动、帧的视图区域的变化(例如,平移或缩放)或类似情况而被遮挡。区域402可以至少部分地与图3A和图3B的区域308A、308B重叠,说明使用本文的方法识别运动或平移,以确定被遮挡像素的区域。
图5说明了用于确定视频序列的两帧之间的被遮挡像素的示例过程500。应该理解的是,对于该过程和本文介绍的其他过程,在各种实施例的范围内,可以有额外的、较少的或替代的步骤以类似或替代的顺序执行,或者至少部分地并行地执行,除非另有特别说明。在这个示例中,接收到视频序列502中至少两个帧的光流数据。这些帧在时间上是彼此相邻的,但应该理解的是,这些帧不一定是视频序列中的连续帧。也就是说,在被分析的两个帧之间可能有中间帧。这些帧可以被确定为在较早的时间第一帧以及在较晚的时间的第二帧。
可以选择第一帧和第二帧中的像素位置504。在各种实施例中,像素位置在第一帧和第二帧中是相同的,并且可以被表示为(x,y)。在至少一个实施例中,实施例可针对图像的每个像素进行评估。然而,应该理解的是,可以只选择指定的像素进行评估,其中选择可以基于被分析的图像的一个或更多个因素、先前的处理步骤或类似因素。
可以为像素位置确定前向和后向流向量。例如,可以使用一个或更多个光流引擎来产生各自的流向量,其中流向量可以被称为从第一帧到第二帧的运动的前向流向量和从第二帧到第一帧的运动的后向流向量。前向流向量的有效性和后向流向量的有效性可被确定506、508。有效性可以至少部分地基于前向-后向检查。如上所述,虽然前向-后向检查可能有助于确定有效性,但是这样的过程可能不足以确定无效性是否是由于遮挡造成的。
可以评估流向量状况,其中确定流向量(例如,特定像素位置的前向流向量和后向流向量)是否无效510。如果不是,该像素位置被确定为没有被遮挡512。如果前向流向量无效而后向流向量有效,则第一帧中的像素位置被确定为在第二帧中被遮挡514。如果前向流向量是有效的,而后向流向量是无效的,那么第二帧中的像素位置被确定为在第一帧中被遮挡516。这个过程可以对图像的一个或更多个像素重复进行,以确定图像中的不同的被遮挡区域。应该理解的是,如上所述,也可以使用额外的处理。
图6A说明了用于确定视频序列的两个帧之间的被遮挡像素的示例过程600。在这个示例中,接收视频序列中第一帧和第二帧的光流数据602。该光流数据可以至少部分地包括形成第一帧和第二帧的一个或更多个像素的光流向量(例如,运动向量)。在各种实施例中,光流向量可以被消毒,这可能包括执行一种或多种方法,例如前向-后向检查,以检测与流向量不一致的地方。在至少一个实施例中,对整个第一帧和第二帧进行分析,但应该理解的是,实施例可以只针对一帧内的特定像素。例如,帧的一个或更多个区域可能有一个已知的被遮挡区域,例如由于标志、抬头显示器或类似的东西。因此,可以知道这些区域将保持一致或基本一致,并将遮蔽任何其他移动到这些区域的像素。因此,某些区域可以从分析中移除,以节省处理资源。
可在第一帧和第二帧内选择一个像素位置,该像素位置一般被指定为(x,y)并且在每一帧中基本相同,从而第一帧中的位置可被指定为A(x,y)并且第二帧中的位置可被指定为B(x,y)。对于这个选定的像素位置,可以确定前向流向量和后向流向量的各自的有效性604。例如,如上所述,有效性可以至少部分地基于像素的前向-后向检查,其中,如果流向量未能通过检查,可以认为该流向量是无效的。至少部分地基于前向流向量和后向流向量的有效性,可以确定一个像素的遮挡状态606。例如,对于给定的位置,在前向方向上有有效的流向量,在后向方向上有无效的流向量,那么第二帧中的像素可被视为在第一帧中被遮挡。此外,作为一个示例,在前向方向上有无效的流向量而在后向方向上有有效的流向量的像素可以被视为在第二帧中被遮挡。然后,该信息可在该帧和/或选定的像素集上聚合,以识别第一帧或第二帧中的一个帧内的一个或更多个遮挡区域。然后,进一步的处理可以使用关于一个或更多个遮挡区域的信息,包括对象检测、游戏引擎渲染、运动跟踪等。
图6B说明了用于确定视频序列的两个帧之间的遮挡像素的示例过程620。如前所述,通过举例提供了序列内的两个图像,并且还可以评估其他图像。此外,这些帧可能不是连续的帧(例如,在这两个帧之间可能介于其间的帧)。此外,应该理解的是,这种处理可能不会在视频序列中的每一帧上执行,可能会被限制或以其他方式选择,只用于序列中的特定帧。在这个示例中,接收到视频序列的第一帧和第二帧的光流数据622。光流数据可以至少部分地包括各个帧内的单个像素的运动向量,其中运动向量可以包括前向运动向量(例如,从第一帧到第二帧)和后向运动向量(例如,从第二帧到第一帧)。
在各种实施例中,可以分析帧内的每个像素;然而,如所指出的,其他实施例可以限制哪些像素被分析。对于图6B的示例,确定每个像素的前向运动向量和后向运动向量的各自的有效性状态624。有效性可以至少部分地基于一个或更多个处理步骤,例如向前-向后检查,以检测运动向量之间的一致性。对于每个像素,可以至少部分地基于前向和后向运动向量的各自的有效性来确定遮挡状态626。遮挡状态可基于对运动向量的有效性的评估,其中,只有一个有效的运动向量(例如,前向或后向运动向量之一)的像素可被认为是被遮挡的。此外,对无效的流向量的识别可以确定遮挡发生的位置,如上所述。这个过程可以在帧内的每个像素上重复,以产生第一遮挡输出628。第一遮挡输出可以对应于与帧内每个像素的遮挡状态相关的信息。此外,可以提供覆盖层(overlay)以可视化遮挡状态,但是应该理解的是,该覆盖层将被提供给用户以查看遮挡状态,并且可能不是由一个或更多个下游引擎处理来解决被遮挡像素的信息。
如上所述,各种实施例可以使用有噪声的运动向量,而这种噪声可能导致对遮挡像素的错误识别。可以对第一遮挡输出执行滤波通道630。例如,一个中值滤波器,如5x5中值滤波器,可用于识别潜在的错误识别的像素。然后可以生成滤波后的遮挡输出632,供下游处理引擎使用。因此,可以使用轻量级的、处理器密集程度较低的方法来识别遮挡区域,该方法也可以在有噪声的光流数据的情况下执行,从而提供比使用高度精确的流信息或处理器密集的神经网络方法的现有方法更好的改进。
图6C说明了用于确定视频序列的两个帧之间的遮挡像素以生成遮挡输出的示例过程640。在该示例中,接收视频序列的第一帧和第二帧的光流信息642。该光流数据可以使用各种技术生成,在某些实施例中,可以被认为是有噪声的光流数据。第一帧和第二帧两者的像素位置被选择644。该像素位置可对应于第一帧和第二帧两者中彼此对应的单个像素位置。例如,最左上角的像素可以是像素位置(0,0),表示0x-位置和0y-位置。可以对所选像素位置的流向量执行前向-后向检查646。例如,前向-后向检查可以分析前向流向量(例如,从第一帧到第二帧)和后向流向量(例如,从第二帧到第一帧)以评估不一致性。此外,实施例可以比较第一帧和第二帧之间的所选像素的亮度(luma)和色度(chroma)值648。亮度和色度的比较可以减少对像素和/或流向量进行错误定性(mischaracterization)的可能性。例如,对于从阴影区域移动到非阴影区域的像素,尽管流向量是有效的,但亮度分量可能导致相关流向量的无效。增加色度比较可以避免这个问题。例如,如果源像素和目标像素(例如,A(x,y)和B(x,y))的亮度值相差很大,但色度值在一个阈值以内,则可以认为该流向量是有效的。
各种实施例对于选定的像素,确定前向流向量和后向流向量的各自有效性650。然后,这些有效性可被用于确定所选像素的遮挡状态。例如,可以评估流向量的有效性状态,以确定至少有一个是无效的652。如果不是,那么就可以确定该像素没有被遮挡654。如果是这样,那么就确定发生遮挡的帧656。例如,无效的前向流向量和有效的后向流向量可能指示第一帧中的选定像素在第二帧中是被遮挡的。同样地,有效的前向流向量和无效的后向流向量可能指示所选像素在第一帧中被遮挡。这就可以确定所选像素相对于每一帧的遮挡状态。然后可以确定其他像素是否可用于处理658。在某些实施例中,每一帧中的每个像素都被评估。在其他实施例中,只有某些像素被评估。如果没有额外的像素可供评估,就会产生第一通道遮挡输出660。该第一通道可被滤波662,其中滤波可被用于去除不正确的遮挡标签。然后可以生成遮挡输出664,该输出可以被提供给一个或更多个下游过程或管道。以这种方式,可以基于光流信息来识别图像中的遮挡区域。
数据中心
图7示出了可以使用至少一个实施例的示例数据中心700。在至少一个实施例中,数据中心700包括数据中心基础设施层710、框架层720、软件层730和应用层740。
在至少一个实施例中,如图7所示,数据中心基础设施层710可以包括资源协调器712、分组的计算资源714和节点计算资源(“节点C.R.”)716(1)-716(N),其中“N”代表任何正整数。在至少一个实施例中,节点C.R.716(1)-716(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等),存储器设备(例如动态只读存储器)、存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“NWI/O”)设备,网络交换机,虚拟机(“VM”),电源模块和冷却模块等。在至少一个实施例中,节点C.R.716(1)-716(N)中的一个或更多个节点C.R.可以是具有一个或更多个上述计算资源的服务器。
在至少一个实施例中,分组的计算资源714可以包括容纳在一个或更多个机架内的节点C.R.的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源714内的节点C.R.的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,可以将包括CPU或处理器的几个节点C.R.分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机,以任意组合。
在至少一个实施例中,资源协调器712可以配置或以其他方式控制一个或更多个节点C.R.716(1)-716(N)和/或分组的计算资源714。在至少一个实施例中,资源协调器712可以包括用于数据中心700的软件设计基础结构(“SDI”)管理实体。在至少一个实施例中,资源协调器107可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图7所示,框架层720包括作业调度器722、配置管理器724、资源管理器726和分布式文件系统728。在至少一个实施例中,框架层720可以包括支持软件层730的软件732和/或应用程序层740的一个或更多个应用程序742的框架。在至少一个实施例中,软件732或应用程序742可以分别包括基于Web的服务软件或应用程序,例如由Amazon Web Services,Google Cloud和Microsoft Azure提供的服务或应用程序。在至少一个实施例中,框架层720可以是但不限于一种免费和开放源软件网络应用程序框架,例如可以使用分布式文件系统728来进行大范围数据处理(例如“大数据”)的Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器732可以包括Spark驱动器,以促进对数据中心700的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器724可以能够配置不同的层,例如软件层730和包括Spark和用于支持大规模数据处理的分布式文件系统728的框架层720。在至少一个实施例中,资源管理器726能够管理映射到或分配用于支持分布式文件系统728和作业调度器722的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层710上的分组计算资源714。在至少一个实施例中,资源管理器726可以与资源协调器712协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层730中的软件732可以包括由节点C.R.716(1)-716(N)的至少一部分,分组的计算资源714和/或框架层720的分布式文件系统728使用的软件。一种或更多种类型的软件可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层740中包括的一个或更多个应用程序742可以包括由节点C.R.716(1)-716(N)的至少一部分、分组计算资源714和/或框架层720的分布式文件系统728使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序、认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器724、资源管理器726和资源协调器712中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施例中,自我修改动作可以减轻数据中心700的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
在至少一个实施例中,数据中心700可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,在至少一个实施例中,可以通过使用上文关于数据中心700描述的软件和计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心700所描述的资源,使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。
在至少一个实施例中,数据中心可以使用CPU、专用集成电路(ASIC)、GPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
此类组件可用于光流检测。
计算机系统
图8是示出了根据至少一个实施例示例性计算机系统的框图,该示例性计算机系统可以是具有互连的设备和组件的系统,片上系统(SOC)或它们的某种形成有处理器的组合,该处理器可以包括执行单元以执行指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算机系统800可以包括但不限于组件,例如处理器802,其执行单元包括逻辑以执行用于过程数据的算法。在至少一个实施例中,计算机系统800可以包括处理器,例如可从加利福尼亚圣塔克拉拉的英特尔公司(Intel Corporation of Santa Clara,California)获得的处理器家族、XeonTM、/>XScaleTM和/或StrongARMTM,/>CoreTM或/>NervanaTM微处理器,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统800可以执行可从华盛顿州雷蒙德市的微软公司(Microsoft Corporation of Redmond,Wash.)获得的WINDOWS操作系统版本,尽管其他操作系统(例如UNIX和Linux)、嵌入式软件和/或图形用户界面也可以使用。
实施例可以用在其他设备中,例如手持设备和嵌入式应用程序。手持设备的一些示例包括蜂窝电话、互联网协议(Internet Protocol)设备、数码相机、个人数字助理(“PDA”)和手持PC。在至少一个实施例中,嵌入式应用程序可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算机(“NetPC”)、边缘计算设备、机顶盒、网络集线器、广域网(“WAN”)交换机,或根据至少一个实施例可以执行一个或更多个指令的任何其他系统。
本文所述的系统和方法的实施例可用于各种目的,通过举例且不限于机器控制、机器运动、机器驾驶、合成数据生成、数字孪生、模型训练、感知、增强现实、虚拟现实、混合现实、机器人学、安全和监视、自主或半自主机器应用、深度学习、环境模拟、数据中心处理、对话式AI、光传输模拟(例如,光线追踪、路径追踪等)、3D资产的协作内容创建、云计算和/或任何其他合适的应用。
已公开的实施例可被合并或集成到各种不同的系统中,例如汽车系统(例如,自主或半自主机器的人机界面)、使用机器人实现的系统、航空系统、医疗系统、划船系统、智能区域监测系统、用于执行深度学习操作的系统、用于执行模拟和数字孪生操作的系统、使用边缘设备实现的系统、合并了一个或更多个虚拟机(VM)的系统、用于执行合成数据生成操作的系统、至少部分地在数据中心中实施的系统、用于执行对话式人工智能操作的系统、用于执行光传输模拟的系统、用于执行3D资产协作内容创建的系统、至少部分地使用云计算资源实施的系统和/或其他类型系统。
在至少一个实施例中,计算机系统800可包括但不限于处理器802,该处理器802可包括但不限于一个或更多个执行单元808,以根据本文描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,计算机系统800是单处理器台式机或服务器系统,但是在另一个实施例中,计算机系统800可以是多处理器系统。在至少一个实施例中,处理器802可以包括但不限于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器,或任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理器802可以耦合到处理器总线810,该处理器总线810可以在处理器802与计算机系统800中的其他组件之间传输数据信号。
在至少一个实施例中,处理器802可以包括但不限于1级(“L1”)内部高速缓存存储器(“cache”)804。在至少一个实施例中,处理器802可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速缓存存储器可以驻留在处理器802的外部。根据特定的实现和需求,其他实施例也可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄存器文件806可以在各种寄存器中存储不同类型的数据,包括但不限于整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑执行单元808,其也位于处理器802中。在至少一个实施例中,处理器802还可以包括微码(“ucode”)只读存储器(“ROM”),用于存储某些宏指令的微代码。在至少一个实施例中,执行单元808可以包括用于处理封装指令集809的逻辑。在至少一个实施例中,通过将封装指令集809包括在通用处理器的指令集中,以及要执行指令的相关电路,可以使用处理器802中的封装数据来执行许多多媒体应用程序使用的操作。在一个或更多个实施例中,可以通过使用处理器的数据总线的全宽度来在封装的数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的一个或更多个操作。
在至少一个实施例中,执行单元808也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中,计算机系统800可以包括但不限于存储器820。在至少一个实施例中,存储器820可以实现为动态随机存取存储器(“DRAM”)设备、静态随机存取存储器(“SRAM”)设备、闪存设备或其他存储设备。在至少一个实施例中,存储器820可以存储由处理器802可以执行的由数据信号表示的指令819和/或数据821。
在至少一个实施例中,系统逻辑芯片可以耦合到处理器总线810和存储器820。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储器控制器集线器(“MCH”)816,并且处理器802可以经由处理器总线810与MCH 816通信。在至少一个实施例中,MCH 816可以提供到存储器820的高带宽存储器路径818以用于指令和数据存储以及用于图形命令、数据和纹理的存储。在至少一个实施例中,MCH 816可以在处理器802、存储器820和计算机系统800中的其他组件之间启动数据信号,并且在处理器总线810、存储器820和系统I/O 822之间桥接数据信号。在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图形端口。在至少一个实施例中,MCH 816可以通过高带宽存储器路径818耦合到存储器820,并且图形/视频卡812可以通过加速图形端口(Accelerated Graphics Port)(“AGP”)互连814耦合到MCH 816。
在至少一个实施例中,计算机系统800可以使用系统I/O 822,所述系统I/O 822是专有集线器接口总线来将MCH 816耦合到I/O控制器集线器(“ICH”)830。在至少一个实施例中,ICH 830可以通过本地I/O总线提供与某些I/O设备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用于将外围设备连接到存储器820、芯片组和处理器802的高速I/O总线。示例可以包括但不限于音频控制器828、固件集线器(“Flash BIOS”)828、无线收发器826、数据存储824、包含用户输入和键盘接口的传统I/O控制器823、串行扩展端口827(例如通用串行总线(USB)端口)和网络控制器834。数据存储824可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
在至少一个实施例中,图8示出了包括互连的硬件设备或“芯片”的系统,而在其他实施例中,图8可以示出示例性片上系统(SoC)。在至少一个实施例中,设备可以与专有互连、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,计算机系统800的一个或更多个组件使用计算快速链路(CXL)互连来互连。
此类组件可用于光流检测。
图9是示出了根据至少一个实施例的用于利用处理器910的电子设备900的框图。在至少一个实施例中,电子设备900可以是,例如但不限于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、台式机、平板电脑、移动设备、电话、嵌入式计算机或任何其他合适的电子设备。
在至少一个实施例中,系统900可以包括但不限于通信地耦合到任何合适数量或种类的组件、外围设备、模块或设备的处理器910。在至少一个实施例中,处理器910使用总线或接口耦合,诸如1℃总线、系统管理总线(“SMBus”)、低引脚数(LPC)总线、串行外围接口(“SPI”)、高清音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行总线(“USB”)(1、2、3版)或通用异步接收器/发送器(“UART”)总线。在至少一个实施例中,图9示出了系统,该系统包括互连的硬件设备或“芯片”,而在其他实施例中,图9可以示出示例性片上系统(SoC)。在至少一个实施例中,图9中所示的设备可以与专有互连线、标准化互连(例如,PCIe)或其某种组合互连。在至少一个实施例中,图9的一个或更多个组件使用计算快速链路(CXL)互连线来互连。
在至少一个实施例中,图9可以包括显示器924、触摸屏925、触摸板930、近场通信单元(“NFC”)945、传感器集线器940、热传感器946、快速芯片组(“EC”)935、可信平台模块(“TPM”)938、BIOS/固件/闪存(“BIOS,FWFlash”)922、DSP 960、驱动器920(例如固态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”)950、蓝牙单元952、无线广域网单元(“WWAN”)956、全球定位系统(GPS)955、相机(“USB3.0相机”)954(例如USB3.0相机)和/或以例如LPDDR3标准实现的低功耗双倍数据速率(“LPDDR”)存储器单元(“LPDDR3”)915。这些组件可以各自以任何合适的方式实现。
在至少一个实施例中,其他组件可以通过上文所述的组件通信地耦合到处理器910。在至少一个实施例中,加速度计941、环境光传感器(“ALS”)942、罗盘943和陀螺仪944可以可通信地耦合到传感器集线器940。在至少一个实施例中,热传感器939、风扇937、键盘936和触摸板930可以通信地耦合到EC 935。在至少一个实施例中,扬声器963、耳机964和麦克风(“mic”)965可以通信地耦合到音频单元(“音频编解码器和D类放大器”)962,其又可以通信地耦合到DSP 960。在至少一个实施例中,音频单元962可以包括例如但不限于音频编码器/解码器(“编解码器”)和D类放大器。在至少一个实施例中,SIM卡(“SIM”)957可以通信地耦合到WWAN单元956。在至少一个实施例中,组件(诸如WLAN单元950和蓝牙单元952以及WWAN单元956)可以被实现为下一代形式因素(NGFF)。
此类组件可用于光流检测。
图10是根据至少一个实施例的处理系统的框图。在至少一个实施例中,系统1000包括一个或更多个处理器1002和一个或更多个图形处理器1008,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量共同或单独管理的处理器1002或处理器核心1007的服务器系统或数据中心。在至少一个实施例中,系统1000是结合在片上系统(SoC)集成电路内的处理平台,以在移动、手持或嵌入式设备使用。
在至少一个实施例中,系统1000可以包括或结合在以下中:基于服务器的游戏平台、云计算主机平台、虚拟化的计算平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在至少一个实施例中,系统1000是移动电话、智能电话、平板计算设备或移动互联网设备。在至少一个实施例中,处理系统1000还可包括与可穿戴设备耦合或集成在可穿戴设备中,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备、边缘设备、物联网(“IoT”)设备或虚拟现实设备。在至少一个实施例中,处理系统1000是电视或机顶盒设备,其具有一个或更多个处理器1002以及由一个或更多个图形处理器1008生成的图形界面。
在至少一个实施例中,一个或更多个处理器1002每个包括一个或更多个处理器核心1007,以处理指令,该指令在被执行时执行针对系统和用户软件的操作。在至少一个实施例中,一个或更多个处理器核心1007中的每一个被配置为处理特定指令集1009。在至少一个实施例中,指令集1009可以促进复杂指令集计算(CISC)、精简指令集计算(RISC),或通过超长指令字(VLIW)进行计算。在至少一个实施例中,处理器核心1007可以各自处理不同的指令集1009,该指令集可以包括有助于仿真其他指令集的指令。在至少一个实施例中,处理器核心1007还可以包括其他处理设备,例如数字信号处理器(DSP)。
在至少一个实施例中,处理器1002包括高速缓存存储器1004。在至少一个实施例中,处理器1002可以具有单个内部高速缓存或多个级别的内部高速缓存。在至少一个实施例中,高速缓存存储器在处理器1002的各个组件之间共享。在至少一个实施例中,处理器1002还使用外部高速缓存(例如,三级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术在处理器核心1007之间共享该外部高速缓存。在至少一个实施例中,处理器1002中另外包括寄存器文件1006,处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。在至少一个实施例中,寄存器文件1006可以包括通用寄存器或其他寄存器。
在至少一个实施例中,一个或更多个处理器1002与一个或更多个接口总线1010耦合,以在处理器1002与系统1000中的其他组件之间传输通信信号,例如地址、数据或控制信号。在至少一个实施例中,接口总线1010在一个实施例中可以是处理器总线,例如直接媒体接口(DMI)总线的版本。在至少一个实施例中,接口总线1010不限于DMI总线,并且可以包括一个或更多个外围组件互连总线(例如,PCI,PCIExpress)、存储器总线或其他类型的接口总线。在至少一个实施例中,处理器1002包括集成存储器控制器1016和平台控制器集线器1030。在至少一个实施例中,存储器控制器1016促进存储器设备与处理系统1000的其他组件之间的通信,而平台控制器集线器(PCH)1030通过本地I/O总线提供到I/O设备的连接。
在至少一个实施例中,存储器设备1020可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储设备或具有适当的性能以用作处理器存储器。在至少一个实施例中,存储设备1020可以用作处理系统1000的系统存储器,以存储数据1022和指令1021,以在一个或更多个处理器1002执行应用程序或过程时使用。在至少一个实施例中,存储器控制器1016还与可选的外部图形处理器1012耦合,其可以与处理器1002中的一个或更多个图形处理器1008通信以执行图形和媒体操作。在至少一个实施例中,显示设备1011可以连接至处理器1002。在至少一个实施例中,显示设备1011可以包括内部显示设备中的一个或更多个,例如在移动电子设备或膝上型设备或通过显示器接口(例如显示端口(DisplayPort)等)连接的外部显示设备中。在至少一个实施例中,显示设备1011可以包括头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增强现实(AR)应用中的立体显示设备。
在至少一个实施例中,平台控制器集线器1030使外围设备能够通过高速I/O总线连接到存储设备1020和处理器1002。在至少一个实施例中,I/O外围设备包括但不限于音频控制器1046、网络控制器1034、固件接口1028、无线收发器1026、触摸传感器1025、数据存储设备1024(例如,硬盘驱动器、闪存等)。在至少一个实施例中,数据存储设备1024可以经由存储接口(例如,SATA)或经由外围总线来连接,诸如外围组件互连总线(例如,PCI、PCIe)。在至少一个实施例中,触摸传感器1025可以包括触摸屏传感器、压力传感器或指纹传感器。在至少一个实施例中,无线收发器1026可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器,诸如3G、4G或长期演进(LTE)收发器。在至少一个实施例中,固件接口1028使能与系统固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。在至少一个实施例中,网络控制器1034可以启用到有线网络的网络连接。在至少一个实施例中,高性能网络控制器(未示出)与接口总线1010耦合。在至少一个实施例中,音频控制器1046是多通过高清晰度音频控制器。在至少一个实施例中,处理系统1000包括可选的传统(legacy)I/O控制器1040,用于将传统(例如,个人系统2(PS/2))设备耦合到系统1000。在至少一个实施例中,平台控制器集线器1030还可以连接到一个或更多个通用串行总线(USB)控制器1042,该控制器连接输入设备,诸如键盘和鼠标1043组合、相机1044或其他USB输入设备。
在至少一个实施例中,存储器控制器1016和平台控制器集线器1030的实例可以集成到离散的外部图形处理器中,例如外部图形处理器1012。在至少一个实施例中,平台控制器集线器1030和/或存储器控制器1016可以在一个或更多个处理器1002的外部。例如,在至少一个实施例中,系统1000可以包括外部存储器控制器1016和平台控制器集线器1030,其可以配置成在与处理器1002通信的系统芯片组中的存储器控制器集线器和外围控制器集线器。
此类组件可用于光流检测。
图11是根据至少一个实施例的具有一个或更多个处理器核心1102A-1102N、集成存储器控制器1114和集成图形处理器1108的处理器1100的框图。在至少一个实施例中,处理器1100可以包含附加核心,多达并包括以虚线框表示的附加核心1102N。在至少一个实施例中,每个处理器核心1102A-1102N包括一个或更多个内部高速缓存单元1104A-1104N。在至少一个实施例中,每个处理器核心还可以访问一个或更多个共享高速缓存单元1106。
在至少一个实施例中,内部高速缓存单元1104A-1104N和共享高速缓存单元1106表示处理器1100内的高速缓存存储器层次结构。在至少一个实施例中,高速缓存存储器单元1104A-1104N可以包括每个处理器核心内的至少一级指令和数据高速缓存以及共享中级高速缓存中的一级或更多级缓存,例如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存,其中将外部存储器之前的最高级别的高速缓存归类为LLC。在至少一个实施例中,高速缓存一致性逻辑维持各种高速缓存单元1106和1104A-1104N之间的一致性。
在至少一个实施例中,处理器1100还可包括一组一个或更多个总线控制器单元1116和系统代理核心1110。在至少一个实施例中,一个或更多个总线控制器单元1116管理一组外围总线,例如一个或更多个PCI或PCIe总线。在至少一个实施例中,系统代理核心1110为各种处理器组件提供管理功能。在至少一个实施例中,系统代理核心1110包括一个或更多个集成存储器控制器1114,以管理对各种外部存储器设备(未示出)的访问。
在至少一个实施例中,一个或更多个处理器核心1102A-1102N包括对多线程同时进行的支持。在至少一个实施例中,系统代理核心1110包括用于在多线程处理期间协调和操作核心1102A-1102N的组件。在至少一个实施例中,系统代理核心1110可以另外包括电源控制单元(PCU),该电源控制单元包括用于调节处理器核心1102A-1102N和图形处理器1108的一个或更多个电源状态的逻辑和组件。
在至少一个实施例中,处理器1100还包括用于执行图处理操作的图形处理器1108。在至少一个实施例中,图形处理器1108与共享高速缓存单元1106和包括一个或更多个集成存储器控制器1114的系统代理核心1110耦合。在至少一个实施例中,系统代理核心1110还包括用于驱动图形处理器输出到一个或更多个耦合的显示器的显示器控制器1111。在至少一个实施例中,显示器控制器1111也可以是经由至少一个互连与图形处理器1108耦合的独立模块,或者可以集成在图形处理器1108内。
在至少一个实施例中,基于环的互连单元1112用于耦合处理器1100的内部组件。在至少一个实施例中,可以使用替代性互连单元,例如点对点互连、交换互连或其他技术。在至少一个实施例中,图形处理器1108经由I/O链路1113与环形互连1112耦合。
在至少一个实施例中,I/O链路1113代表多种I/O互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块1118(例如eDRAM模块)之间的通信的封装I/O互连。在至少一个实施例中,处理器核心1102A-1102N和图形处理器1108中的每一个使用嵌入式存储器模块1118作为共享的最后一级高速缓存。
在至少一个实施例中,处理器核心1102A-1102N是执行公共指令集架构的同质核心。在至少一个实施例中,处理器核心1102A-1102N在指令集架构(ISA)方面是异构的,其中一个或更多个处理器核心1102A-1102N执行公共指令集,而一个或更多个其他处理器核心1102A-1102N执行公共指令集的子集或不同指令集。在至少一个实施例中,就微架构而言,处理器核心1102A-1102N是异构的,其中具有相对较高功耗的一个或更多个核心与具有较低功耗的一个或更多个功率核心耦合。在至少一个实施例中,处理器1100可以在一个或更多个芯片上实现或被实现为SoC集成电路。
此类组件可用于光流检测。
其他变型在本公开的精神内。因此,尽管公开的技术易于进行各种修改和替代构造,但是某些示出的其实施例在附图中示出并且已经在上面进行了详细描述。然而,应理解,无意将公开内容限制为所公开的一种或更多种特定形式,而是相反,其意图是涵盖落入如所附权利要求书所定义的本公开内容的精神和范围内的所有修改、替代构造和等同物。
除非另有说明或显然与上下文矛盾,否则在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中),术语“一”和“一个”和“该”以及类似指代的使用应被解释为涵盖单数和复数,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(意味着“包括但不限于”)。术语“连接”(在未经修改时指的是物理连接)应解释为部分或全部包含在内、附接到或连接在一起,即使有某些介入。除非本文另外指出,否则本文中对数值范围的引用仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独值都被并入说明书中,就如同其在本文中被单独叙述一样。除非另外指出或与上下文矛盾,否则术语“集”(例如“项目集”)或“子集”的使用应解释为包括一个或更多个成员的非空集合。此外,除非另外指出或与上下文矛盾,否则术语相对应集的“子集”不一定表示对应集的适当子集,而是子集和对应集可以相等。
除非以其他方式明确指出或与上下文明显矛盾,否则诸如“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”)执行一些指令,而图形处理单元(“GPU”)和/或数据处理单元(“DPU”)执行其他指令。在至少一个实施例中,计算机系统的不同组件具有单独的处理器,并且不同的处理器执行指令的不同子集。
因此,在至少一个实施例中,计算机系统被配置为实现单独地或共同地执行本文所述的过程的操作的一个或更多个服务,并且这样的计算机系统被配置有使能实施操作的适用的硬件和/或软件。此外,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一实施例中是分布式计算机系统,其包括以不同方式操作的多个设备,使得分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例,并且不对公开的范围构成限制,除非另有要求。说明书中的任何语言都不应被解释为表示任何未要求保护的要素对于实践公开内容是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其程度就如同每个参考文献被单独且具体地指示为以引用的方式并入本文并且其全部内容在本文中阐述一样。
在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
除非另有明确说明,否则可以理解,在整个说明书中,诸如“处理”、“计算”、“核算”、“确定”等之类的术语,是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据处理和/或转换为类似表示为计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备中的物理量的其他数据。
以类似的方式,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或存储器的一部分。作为非限制性示例,“处理器”可以是任何能够进行通用处理的处理器,如CPU、GPU或DPU。作为非限制性的例子,“处理器”可以是任何微控制器或专用处理单元,例如DSP、图像信号处理器(“ISP”)、算术逻辑单元(“ALU”)、视觉处理单元(“VPU”)、树状遍历单元(“TTU”)、光线追踪核心、张量追踪核心、张量处理单元(“TPU”)、嵌入式控制单元(“ECU”)等。作为非限制性的例子,“处理器”可以是一个硬件加速器,例如PVA(可编程视觉加速器)、DLA(深度学习加速器)等。作为非限制性的例子,“处理器”还可以包括CPU、GPU等的一个或更多个虚拟实例,托管在执行一个或更多个虚拟机的底层硬件组件上。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”进程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以连续地或间歇地顺序地或并行地执行指令。术语“系统”和“方法”在本文中可以互换使用,只要系统可以体现一种或更多种方法,并且方法可以被认为是系统。
在本文件中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器中。可以通过多种方式来获得、获取、接收或输入模拟和数字数据,例如通过接收作为函数调用或对应用程序编程接口的调用的参数的数据。在一些实现方式中,可以通过经由串行或并行接口传输数据来完成获得、获取、接收或输入模拟或数字数据的过程。在另一实现方式中,可以通过经由计算机网络将数据从提供实体传输到获取实体来完成获得、获取、接收或输入模拟或数字数据的过程。也可以参考提供、输出、传送、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传送、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来实现。
尽管上面的讨论阐述了所描述的技术的示例实现,但是其他架构可以用于实现所描述的功能,并且旨在落入本公开的范围内。此外,尽管出于讨论的目的在上面定义了具体的职责分配,但是根据情况,可以以不同的方式分配和划分各种功能和职责。
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求书所要求保护的主题不必限于所描述的特定特征或动作。而是,公开了特定的特征和动作作为实现权利要求的示例性形式。
Claims (20)
1.一种系统,包括:
一个或更多个处理单元,用于:
接收图像序列中的第一图像和第二图像;
确定与所述第一图像中的像素位置相对应的第一光流向量;
确定与所述第二图像中的所述像素位置相对应的第二光流向量;以及
至少部分地基于所述第一光流向量和所述第二光流向量的各自的有效性,确定所述第一图像和所述第二图像中的所述像素位置的遮挡状态。
2.根据权利要求1所述的系统,其中所述一个或更多个处理单元进一步用于对第一图像遮挡状态或第二图像遮挡状态中的至少一个进行滤波。
3.根据权利要求2所述的系统,其中所述滤波是中值滤波。
4.根据权利要求1所述的系统,其中所述第一光流向量是前向流向量,并且所述第二光流向量是后向流向量。
5.根据权利要求4所述的系统,其中所述一个或更多个处理单元进一步用于确定当所述前向流向量对所述像素位置无效并且所述后向流向量对所述像素位置有效时,所述第一帧中的所述像素位置在所述第二帧中被遮挡。
6.根据权利要求4所述的系统,其中所述一个或更多个处理单元进一步用于确定当所述前向流向量对所述像素位置有效并且所述后向流向量对所述像素位置无效时,所述第二帧中的所述像素位置在所述第一帧中被遮挡。
7.根据权利要求1所述的系统,其中所述一个或更多个处理单元进一步用于至少基于前向-后向检查来确定各自的有效性。
8.根据权利要求1所述的系统,其中所述系统被包括在以下中的至少之一中:
自主或半自主机器的人机接口系统;
游戏机的人机接口系统;
用于执行对话式AI操作的系统;
用于执行模拟操作的系统;
用于执行数字孪生操作的系统;
用于执行深度学习操作的系统;
用于生成或呈现虚拟现实VR内容的系统;
用于生成或呈现增强现实AR内容的系统;
用于生成或呈现混合现实MR内容的系统;
用于执行视频回放的系统;
用于执行渲染操作的系统;
用于执行三维渲染操作的系统;
利用边缘设备实现的系统;
使用机器人实现的系统;
包含一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或
至少部分地使用云计算资源实现的系统。
9.一种方法,包括:
针对一对图像中的像素位置生成光流数据;
确定所述一对图像中的第一图像中的所述像素位置的前向流向量的第一有效性;
确定所述一对图像中的第二图像中的同一像素位置的后向流向量的第二有效性,所述第二图像的时间晚于所述第一图像;以及
至少部分地基于所述第一有效性和所述第二有效性,确定所述像素位置在所述第一图像或所述第二图像之一中被遮挡。
10.根据权利要求9所述的方法,还包括:对所述前向流向量和所述后向流向量执行前向-后向检查。
11.根据权利要求9所述的方法,还包括:至少基于确定所述前向流向量无效并且所述后向流向量有效,确定所述第一图像中的所述像素位置在所述第二图像中被遮挡。
12.根据权利要求9所述的方法,还包括:至少基于确定所述前向流向量有效并且所述后向流向量无效,确定所述第二图像中的所述像素位置在所述第一图像中被遮挡。
13.根据权利要求9所述的方法,还包括:
确定所述第一图像中的所述像素位置的第一亮度值与所述第二图像中的所述像素位置的第二亮度值之间的差值超过亮度阈值;
确定所述第一图像中的所述像素位置的第一色度值与所述第二图像中的所述像素位置的第二色度值之间的差值在色度阈值之内;以及
确定所述前向流向量或所述后向流向量中的至少一个有效。
14.根据权利要求13所述的方法,还包括:生成识别所述第一图像或所述第二图像中的至少一个中的所述像素位置的遮挡状态的遮挡输出。
15.根据权利要求14所述的方法,其中所述光流数据是有噪声的光流数据。
16.一种方法,包括:
接收视频序列的第一帧;
接收所述视频序列的第二帧;
对于所述第一帧中的像素,确定从所述第一帧到所述第二帧的各自前向运动向量;
对于所述第二帧中的像素,确定从所述第二帧到所述第一帧的各自后向运动向量;
确定所述前向运动向量的第一有效性;
确定后向运动向量的第二有效性;以及
至少基于所述第一有效性和所述第二有效性,确定所述第一帧中的像素的第一遮挡状态和所述第二帧中的像素的第二遮挡状态。
17.根据权利要求16所述的方法,还包括:
确定所述像素的所述前向运动向量是无效的;
确定所述像素的所述后向运动向量是有效的;以及
确定第一帧中的所述像素在第二帧中被遮挡。
18.根据权利要求16所述的方法,还包括:
确定所述像素的所述后向运动向量是无效的;
确定所述像素的所述前向运动向量是有效的;以及
确定第二帧中的所述像素在第一帧中被遮挡。
19.根据权利要求16所述的方法,其中确定所述第一有效性和所述第二有效性至少包括前向-后向检查。
20.根据权利要求16所述的方法,还包括:向下游游戏引擎提供所述遮挡状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/968,260 US20240127572A1 (en) | 2022-10-18 | 2022-10-18 | Real-time occlusion detection between frames for video streaming systems and applications |
US17/968,260 | 2022-10-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117911232A true CN117911232A (zh) | 2024-04-19 |
Family
ID=90469512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310166926.7A Pending CN117911232A (zh) | 2022-10-18 | 2023-02-24 | 用于视频流式传输系统和应用的帧间实时遮挡检测 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240127572A1 (zh) |
CN (1) | CN117911232A (zh) |
DE (1) | DE102023128237A1 (zh) |
-
2022
- 2022-10-18 US US17/968,260 patent/US20240127572A1/en active Pending
-
2023
- 2023-02-24 CN CN202310166926.7A patent/CN117911232A/zh active Pending
- 2023-10-16 DE DE102023128237.9A patent/DE102023128237A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240127572A1 (en) | 2024-04-18 |
DE102023128237A1 (de) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11494370B2 (en) | Hardware-controlled updating of a physical operating parameter for in-field fault detection | |
US11301686B2 (en) | Visual anomaly detection without reference in graphics computing environments | |
US10860859B2 (en) | Budget-aware method for detecting activity in video | |
US10311589B2 (en) | Model-based three-dimensional head pose estimation | |
US11783455B2 (en) | History clamping for denoising dynamic ray-traced scenes using temporal accumulation | |
CN114556941A (zh) | 使用神经网络的视频压缩和解压缩 | |
US11498007B2 (en) | Measuring and detecting idle processing periods and identifying root causes thereof in cloud-based, streaming applications | |
CN114663572A (zh) | 实时射线追踪应用中使用空间散列的光重要性高速缓存 | |
US20240177394A1 (en) | Motion vector optimization for multiple refractive and reflective interfaces | |
US20240127572A1 (en) | Real-time occlusion detection between frames for video streaming systems and applications | |
CN113808183B (zh) | 使用扭曲的复合估计乘积积分 | |
US11966765B2 (en) | Memory bandwidth throttling for virtual machines | |
US20240112356A1 (en) | Estimating flow vectors for occluded content in video sequences | |
US20240054657A1 (en) | Frame rate up-conversion using optical flow | |
US20240054720A1 (en) | Differentiable object insertion using hybrid lighting volumes for synthetic data generation applications | |
US20230298274A1 (en) | Hash cell boundary shifting for light transport simulation systems and applications | |
US20230298257A1 (en) | Visibility-based environment importance sampling for light transport simulation systems and applications | |
US11783532B1 (en) | View synthesis using attribute correspondences and geometric relationship constraints | |
CN115244571A (zh) | 基于深度的图像锐化 | |
CN115775311A (zh) | 使用神经网络在3d资产渲染中传输几何和纹理样式 | |
CN114972523A (zh) | 确定图像中的光学中心 | |
CN117891063A (zh) | 光学跟踪器的定位方法、装置及系统 |
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 |