CN105701446A - 执行对象检测 - Google Patents
执行对象检测 Download PDFInfo
- Publication number
- CN105701446A CN105701446A CN201510919951.3A CN201510919951A CN105701446A CN 105701446 A CN105701446 A CN 105701446A CN 201510919951 A CN201510919951 A CN 201510919951A CN 105701446 A CN105701446 A CN 105701446A
- Authority
- CN
- China
- Prior art keywords
- image
- grader
- region
- program
- computing unit
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
-
- 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/96—Management of image or video recognition tasks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- 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
-
- 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/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/446—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering using Haar-like filters, e.g. using integral image techniques
-
- 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/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/774—Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
- G06V10/7747—Organisation of the process, e.g. bagging or boosting
-
- 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/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
- G06V40/165—Detection; Localisation; Normalisation using facial parts and geometric relationships
-
- 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
Abstract
执行对象检测。一种用于通过在多个图像区域中对多个对象特征进行测试在图像中执行对象检测的单指令多数据处理单元,所述单指令多数据处理单元包括:一组计算单元,所述一组计算单元能够操作以并行地执行多个分类器序列,每个分类器序列都包括多个分类器程序,并且每个分类器程序都包括与所述多个分类器序列中的每个分类器序列中的其它分类器程序相同的指令;其中,每个计算单元被配置成在所述计算单元上独立地保持识别正在测试的图像区域和特征的数据,并且每个分类器程序被布置成存取所述数据,针对所识别的图像区域测试所识别的特征,并且更新所述数据,使得所述计算单元能够操作以针对不同的图像区域同时测试不同的特征。
Description
技术领域
本发明涉及一种SIMD处理单元和用于执行对象检测的方法。
背景技术
用于执行自动人脸检测的很多现代方法都基于Viola-Jones对象检测框架,该Viola-Jones对象检测框架在P.Viola和M.Jones的论文“Robustrealtimefacedetection”(InternationalJournalofComputerVision,第57卷,第2章,第137-154页,2004年)中描述。Viola-Jones框架对针对图像定义的图像区域或者“子窗口”的集合操作,每个窗口在图像内都具有不同位置、尺度或者旋转角度,以允许检测在不同位置处或者具有不同尺寸和旋转角度的人脸。二元分类器(binaryclassifier)的级联集合对每个子窗口操作,以检测在图像中子窗口是否有可能包围人脸。每个二元分类器都对子窗口执行测试,以确定子窗口是否满足一个或更多个简单视觉特征(通常称为“Haar-like特征”)。如果子窗口满足一个或更多个简单视觉特征,则二元分类器接受(pass)该子窗口,并且移动到级联中的下一个二元分类器。当级联的所有二元分类器都接受子窗口时,该子窗口变为用于正被搜索的图像中的人脸的候选。如果级联中的任何二元分类器都拒绝子窗口,则不对该子窗口执行进一步处理,级联终止并且级联处理再次开始于下一个子窗口。
图2中示出在Viola-Jones框架中通常使用的四个视觉特征201-204。图2中所示的特征201至204中的每个特征在视觉上表示如何处理子窗口的像素值以测试子窗口。例如,特征201可以表示级联的分类器中的第一二元分类器的组成,并且通过从位于特征的无阴影区域(子窗口的左手侧)中的子窗口的像素值的总和减去位于特征的阴影区域中的子窗口的像素值的总和(子窗口的右手侧)来计算。如果该特征评估为超过预定义阈值(通常通过在测试图像上训练人脸检测器来建立)的值,则认为该子窗口满足视觉特征并且二元分类器接受该子窗口。通常,二元分类器对已被处理以仅表示亮度或者灰度信息的图像(例如,像素值可以是亮度值)的子窗口进行操作。以此方式,级联的二元分类器起作用,以识别指示人脸特征的图像中的对比度的特定图案。
为了改进人脸检测系统的性能,可以通过将多组线程分配给GPU,在图形处理单元(GPU)处并行地执行根据Viola-Jones对象检测框架执行的二元分类器操作。然而,该方法可能导致GPU的并行处理元件在很大比例的时间内为空闲的。这是因为一组线程的并行处理通常未完成,直到一组线程的每一个线程的处理完成为止,并且如果子窗口不接受(fail)级联的第一二元分类器,则对该子窗口操作的任何给定线程可以几乎立即终止,或者如果其可以完成级联的所有二元分类器的处理,则该子窗口表示人脸候选。处理资源的该未充分使用对使用Viola-Jones框架特别是对移动和低功率平台实时地执行人脸检测呈现困难。
解决该问题的先前努力试图将二元分类器的性能分解到多级,诸如,在2011年Elsevier公司的Wen-meiW.Hwu作出的“GPUComputingGems”的第534-541页描述的NvidiaCUDA实现。然而,这仅部分地解决该问题,引入了用于在多级之间压缩数据的附加开销,并且具有在较早处理阶段期间效率低的缺点。
发明内容
根据本发明的第一方面,提供了一种用于通过在多个图像区域中对多个对象特征进行测试在图像中执行对象检测的单指令多数据处理单元,所述单指令多数据处理单元包括:
一组计算单元,所述一组计算单元能够操作以并行地执行多个分类器序列,每个分类器序列都包括多个分类器程序,并且每个分类器程序都包括与所述多个分类器序列中的每个分类器序列中的其它分类器程序相同的指令;
其中,每个计算单元被配置成在所述计算单元上独立地保持识别正在测试的图像区域和特征的数据,并且每个分类器程序被布置成存取所述数据,针对所识别的图像区域测试所识别的特征,并且更新所述数据,使得所述计算单元能够操作以针对不同的图像区域同时测试不同的特征。
每个分类器序列可以都被配置成针对图像区域中的对象特征执行一序列的测试,所述分类器序列的每个分类器程序被配置成执行所述序列的测试。
每个分类器程序都可以被配置成接受或者不接受图像区域,并且包括被配置为进行如下操作的指令:
当接受图像区域时,更新针对正执行所述分类器程序的所述计算单元所保持的数据,以使得所述分类器序列中的下一分类器程序针对相同的图像区域测试下一特征;
当不接受图像区域时,更新针对正执行所述分类器程序的所述计算单元所保持的数据,以使得所述分类器序列中的下一分类器程序针对下一图像区域测试第一特征。
所述单指令多数据处理单元还可以包括所述一组计算单元能够存取的存储器,所述存储器被布置成存储表示经过所述多个图像区域的搜索范围的索引,并且每个分类器程序包括被配置为进行如下操作的指令:当不接受图像区域时,通过使所述索引原子地递增,更新针对正执行所述分类器程序的所述计算单元所保持的数据,以更新所述搜索范围,并且使得所述下一图像区域的标识符被返回到所述分类器程序。
每个分类器程序都被配置成使用它的识别图像区域的数据在正执行对象检测的图像中的所识别的区域中查找数据。
分类器序列的每个分类器程序是单个程序,所述单个程序被布置成在其计算单元处迭代地执行,以针对所识别的区域测试所识别的特征并且更新所述数据。
所述单指令多数据处理单元还可以包括:另一组计算单元,所述另一组计算单元能够操作以执行所述多个分类器序列,其中,所述一组计算单元形成第一计算组,并且所述另一组计算单元形成第二计算组,并且其中,所述多个图像区域被划分为图像区域的多个子集,并且所述第一计算组和所述第二计算组中的每个被分配图像区域的所述多个子集中的不同的一个子集用于测试。
所述单指令多数据处理单元还可以包括:全局存储器,所述全局存储器存储全局索引,所述全局索引表示由所述第一计算组和所述第二计算组经过图像区域的所述多个子集进行的搜索范围;其中,每个分类器程序包括被配置为进行如下操作的指令:当针对其相关的计算组耗尽图像区域的所述子集时,根据所述全局索引使得图像区域的新子集被分配给所述相关的计算组。
每个分类器程序都包括被配置为进行如下操作的指令:通过原子地更新所述全局索引,使得所述全局索引将图像区域的新子集分配给所述相关计算组,以更新经过图像区域的所述多个子集的搜索范围,并且使得将图像区域的下一子集的标识符被返回到所述分类器程序。
当将图像区域的新子集分配给第一计算组时,可以更新所述索引。
第一计算组的存储器能够被该计算组存取而不能被其它计算组存取。
每个图像区域在它在帧中的位置、尺寸和方位中的一个或更多个方面都不同于其它图像。
每个对象特征是Haar-like特征,并且每个分类器程序都被配置成确定所述特征是否满足预定义的阈值。
可以提供定义单指令多数据处理单元的机器可读代码。可以提供定义单指令多数据处理单元的、在其上编码有非瞬时机器可读代码的机器可读存储介质。
根据本发明的第二方面,提供一种用于在单指令多数据处理器处在图像中执行对象检测的方法,所述单指令多数据处理器具有一组计算单元,所述一组计算单元被布置成并行地执行多个分类器序列,每个分类器序列包括多个分类器程序,所述多个分类器程序与所述多个分类器序列中的每个分类器序列中的其它分类器程序具有相同的指令,并且所述方法包括以下步骤:
在所述一组计算单元的每个计算单元处并行地执行每个序列的分类器程序,以在多个图像区域中针对多个对象特征进行测试;
每个分类器程序:
独立地保持识别通过所述分类器程序测试的图像区域和特征的数据;
存取所述数据;
针对所识别的图像区域测试所识别的特征;以及
更新所述数据,使得所述计算单元能够操作以针对不同图像区域同时测试不同特征。
当针对所识别的图像区域测试所识别的特征时,每个分类器程序可以:
接受所述图像区域,并且更新识别正在测试的图像区域和特征的数据,以使所述分类器序列中的下一个分类器程序针对相同的图像区域测试下一个特征;或者
不接受所述图像区域,并且更新识别正在测试的图像区域和特征的数据,以使所述分类器序列中的所述下一个分类器程序针对下一图像区域测试所述第一特征。
所述方法还包括以下步骤:保持表示所述一组计算单元经过所述多个图像区域的搜索范围的索引,并且当不接受图像区域时,每个分类器程序通过使所述索引原子地递增来更新识别正在测试的图像区域和特征的数据以更新所述搜索范围,并且使所述下一图像区域的标识符返回到所述分类器程序。
每个分类器程序可以使用它的识别图像区域的数据,以在正执行对象检测的图像中的所识别的图像区域中查找数据。
该方法可以包括以下步骤:在其计算单元处迭代地执行每个分类器程序,以针对所识别的区域测试所识别的特征并且更新所述数据。
每个分类器程序可以在多组计算单元中的一组计算单元的计算单元处执行,并且所述方法还可以包括以下步骤:
将所述多个图像区域划分为图像区域的多个子集;以及
分配图像区域的所述多个子集中的一个不同子集用于在每组计算单元处进行测试。
所述方法还可以包括以下步骤:
保持表示由所述多组计算单元经过图像区域的所述多个子集的搜索范围的全局索引;以及
当分类器程序针对其相关计算组耗尽图像区域的所述子集时,使得根据所述全局索引将图像区域的新子集分配给所述相关计算组。
每个分类器程序可以通过原子地更新所述全局索引,使得图像区域的新子集被分配给所述相关计算组,以更新经过图像区域的所述多个子集的搜索范围,并且使得图像区域的下一子集的标识符返回到所述分类器程序。
可以提供用于实现该方法的机器可读代码。可以提供用于实现该方法的、在其上编码有非暂时性机器可读代码的机器可读存储介质。
附图说明
现在将参考附图,通过举例描述本发明。在附图中:
图1示出在传统SIMD处理器的计算单元处的分类器的级联的处理。
图2示出在分类器的级联中通常使用的四个Viola-Jones特征类型。
图3是适于在一组计算单元处并行地执行对象检测的处理单元的示意图。
图4是示出在图3中所示的处理单元的计算单元处操作的分类器程序的操作的流程图。
图5示出在图3中所示的处理单元的计算单元处的分类器的级联的处理。
图6示出帧内的在多个位置处具有给定尺寸的子窗口。
图7是适于在多组计算单元处并行地执行对象检测的处理单元的示意图。
具体实施方式
通过举例提供以下描述,以使得本领域技术人员能够做出和使用本发明。本发明不限于在此描述的实施方式,并且对所公开的实施方式的多种修改对于本领域技术人员来说是显而易见的。
提供一种用于在SIMD处理器处执行对象检测的单指令多数据(SIMD)处理单元和方法。在于此描述的示例中,所执行的对象检测是在图像中对人脸的检测,但是在此描述的原理不限于人脸的检测。显而易见的是,相同原理可以应用至在图像中对其它对象类型(例如,人体的其它部位、汽车号牌、以及动物,仅举几个例子)的检测。关于用于执行对象检测的Viola-Jones框架描述了在此阐述的示例。然而,将想到,在此描述的原理应用至利用级联分类器识别图像中的候选对象的任何对象检测系统。
使用如在此描述的分类器序列执行对象检测包括:测试主体图像区域(此后还称为子窗口)中的一个或更多个对象特征,子窗口表示将执行对象检测的图像的区域。
通过上下文,考虑传统SIMD处理器如何根据Viola-Jones框架执行用于检测图像中的人脸的分类器序列的并行处理是有益的。图1中示出这样的传统处理的示例。在该示例中,每个序列包括六级,这六级分别针对为图像定义的每个子窗口测试对象特征F0至F5。SIMD处理器包括四个计算单元,每个计算单元都对不同子窗口并行地运行相同指令,使得在任何给定时间,所有计算单元都评估相同特征(或者计算单元可以在其分类器序列终止之后为空闲的)。通常,存在针对主体图像定义的大量子窗口。SIMD处理器的计算单元被强制同时执行相同指令,以每次按四个子窗口为一组将子窗口被分配给计算单元CU0至CU3用于同时处理。
在图1中,示出在计算单元CU0至CU3处处理第一组子窗口和第二组子窗口。在第一组中,可以看到子窗口SW0接受由计算单元CU0执行的分类器序列的所有特征F0至F5。从而,子窗口SW0表示可能存在人脸的候选窗口。子窗口SW1-SW3中的每个不接受分类器特征测试,使得在其相应计算单元处运行的分类器序列终止。这使得那些计算单元为空闲的,直到计算单元CU0继续执行有用工作为止。例如,在计算单元CU2处处理的子窗口SW2不接受第二分类器特征F1,并且从而为空闲的,同时其它计算单元执行特征F2-F5中的一个或更多个。
只有当第一组子窗口的处理在所有计算单元处都终止时,才可以再次开始被配置成执行分类器序列的指令的循环。如图1中所示,第二组子窗口SW4-SW7被分配给计算单元,并且同时对那些子窗口中的每个子窗口执行分类器序列。在第二组中,窗口SW5接受所有特征测试F0至F5,并且子窗口SW4、SW6和SW7均在该序列完成之前终止,使得相应计算单元CU0、CU2和CU3在关于特征测试F2至F5的一个或更多个指令序列期间为空闲的。
在图1中所示的示例中,可以看出,传统SIMD处理器的计算单元在超过可用于处理第一组和第二组的子窗口SW0至SW7的处理器时间的30%内都是空闲的。
图3中示出用于在图像中执行对象检测的SIMD处理单元301。在一个示例中,该处理单元301可以是图形处理单元(GPU)的一部分。在该示例中,正在执行的对象检测是图像304的子窗口303中的人脸的检测。每个子窗口表示图像的区域。处理单元301包括具有多个计算单元309-312的SIMD处理器302。在该示例中,存在四个处理单元,但是更通常地,可以存在任何数量的计算单元。计算单元共同形成SIMD处理器,SIMD处理器被布置成对不同数据并行地(即,“步伐一致”)执行相同指令。由每个计算单元执行的指令具体实现分类器程序的序列,每个分类器程序都被配置成针对将执行对象检测的图像的区域测试一个或更多个对象特征。
处理单元301被配置成接收表示将执行对象检测的图像304的区域的子窗口303。图像304可以例如是来自数码相机管线的帧,诸如,静止图像帧或者视频流的帧。图像304可以是在其中对象将被检测的源图像的衍生物:例如,图像304可以是以下描述的亮度图像金字塔。
处理单元301被配置成通过在其计算单元处并行运行的分类器序列执行图像中的对象检测,每个分类器序列都对不同子窗口303操作。每个分类器序列都测试分配给其的子窗口中的多种图像特征。分类器序列可以是Viola-Jones级联的分类器,并且特征可以是图2中所示的类型的对象特征。在该示例中,分类器是二元分类器:针对子窗口测试该序列的每个二元分类器,并且子窗口接受或不接受该测试。更通常地,每个分类器都可以是产生任何数量的可能结果的任何合适种类的分类器,包括三元分类器(其具有三个可能结果)。
在SIMD处理器302的计算单元309-312处执行的每个分类器序列包括相同指令。换句话说,每个计算单元对不同数据执行相同指令。每个计算单元被布置成对不同子窗口操作,使得并行地处理将被搜索的子窗口。可以以任何合适方式针对帧304生成子窗口303,并且在图3中所示的示例中,子窗口303被存储在能够由在计算单元处运行的分类器程序存取的子窗口池306处。在该示例中,子窗口306被保存在能够由处理单元存取的存储器305处,但是更通常地,子窗口池的至少部分可以保存到处理单元外部,诸如,保存在图形处理单元(GPU)的存储器处和/或保存在实现处理单元的主机系统的存储器处。
每个子窗口均表示将执行对象检测的图像304的区域。子窗口303例如均可以承载从图像304(分类器程序在图像304上操作)获得的数据部分。另选地,子窗口可以是到所有或部分图像304的表示的参考(诸如,指针或者存储地址),使得每个窗口识别图像304的区域。例如,子窗口可以指示以下中的一个或更多个:图像304中的坐标的集合、旋转的度量、以及尺寸的度量,从以上项中的一个或更多个可以识别由子窗口表示的图像区域。图像304的全部或部分或者其衍生物均可以被存储在存储器305处用于由分类器程序存取。
预处理器308可以另选地被提供用于将表示图像304的数据处理为可以有效地执行对象检测的形式。这样的处理可以包括图像和/或颜色空间变换。在图3中所示的示例中,预处理器308被设置在处理单元外部,诸如,在实现处理单元的GPU的另一个处理实体处。更通常地,预处理器可以被设置在任何合适位置,包括在包括处理单元的主机数据处理系统处或者在处理单元本身处。
在人脸检测系统中,图像中的非彩色信息通常是重要的,彩色信息通常不太重要,并且为了人脸检测的目的,通常可以丢弃彩色信息以缩减图像尺寸并且因此减少所需要的处理资源。例如,图像304可能是从相机管线接收的高分辨率sRGB彩色帧。为了缩减搜索空间的尺寸,预处理器308可以被配置成将该图像按比例缩放为较低像素分辨率(例如,640×480个像素)。另外地或者另选地,预处理器可以被配置成将图像304变换到另一个颜色空间,诸如,YUV颜色空间,其Y-分量(亮度)承载亮度信息,通常对亮度信息执行人脸检测。在其它示例中,可以使用自定义颜色空间。
预处理器308被配置成生成具有如下分辨率的亮度图像是有利的:该分辨率在保持足够细节以允许在图像中可靠地识别人脸与将搜索空间限制到在期望时间帧内可以(例如,在由相机管线提供的帧之间实时地)被搜索的尺寸之间提供平衡。当检测到除了人脸之外的对象时,处理所接收的图像以形成除了亮度图像之外的图像是有利的。例如,如果已知对象为特定颜色,则可以处理所接收的帧,以加重该颜色和/或丢弃关于在识别对象时没有显著帮助的其它颜色的信息。
可以以任何合适方式针对处理单元301定义子窗口303,包括在处理单元外部(例如,在如图3中所示的预处理器308处)定义子窗口303并且提供给处理单元,以及在处理单元本身处定义子窗口303。定义子窗口303的多个方面(例如,关于某个预定方向的位置、尺寸和角度)的数据可以与表示由子窗口识别的图像304的一个或更多个区域的数据一起或者与表示由子窗口识别的图像304的一个或更多个区域的数据分开,被提供给处理单元。可以针对处理单元预先定义子窗口303的位置和尺寸。例如,根据像素坐标定义的图像区域的固定集合可以被保持在子窗口池306处,以使得处理单元能够识别将执行对象检测的图像304的每个区域。另选地,可以基于图像的特征针对图像生成子窗口(例如,可以基于在图像中被识别为可能包含人脸的位置处的颜色或者形状,针对那些位置生成子窗口)。
通常,当使用Viola-Jones框架时,子窗口预定义集合被用于将执行对象检测的给定尺寸的(可能重调尺寸的)图像。例如,针对640×480像素图像,可以生成从尺寸等于图像的子窗口减小到尺寸为20×20个像素的子窗口的子窗口集合。给定尺寸的每个子窗口通常可以占据帧内的很多可能唯一位置。例如,图6示出沿着图像304的对角线的子窗口303的一组可能位置。将针对640×480源帧搜索的子窗口的总数量可以是成千上万个。如果还搜索所有可能旋转的子窗口,则将想到,搜索空间实际上将变得非常大。
本领域中使用多种技术针对给定尺寸的图像来定义子窗口集合,该给定尺寸提供了对象检测性能与搜索该集合的所有子窗口所需要的处理时间之间的良好平衡。一些技术预定义了针对给定工作图像尺寸有利的子窗口集合。与图像的看起来不太可能包含人脸的那些区域相比,针对图像的看起来很可能包含人脸的那些区域,其它技术定义不同密度的子窗口。
为了避免混淆这些问题,将预处理器308配置为将图像304处理为包括为多个不同尺度的图像(通常为亮度图像)的图像金字塔或者纹理映射(mipmap)。然后,可以通过针对作为一个整体的图像金字塔/纹理映射定义子窗口303,在单次接受中在为多个不同尺度的图像金字塔或纹理映射中有效地执行对象检测。用于形成图像金字塔和纹理映射的技术是本领域中众所周知的。对于640×480像素亮度图像,示出具有六个等级的图像金字塔以提供良好性能,每个等级的分辨率均是比以上等级小的因数2(例如,图像金字塔包括具有尺寸为基本亮度图像的尺寸的1/1、1/2、1/4、1/8、1/16、1/32的亮度图像-在该情况下为640×480个像素)。可以使用2之外的比例因数,但是因为比例因数2与在计算机图形学中通常使用的比例因数匹配,所以比例因数2是便利的,其中,图像金字塔还被已知为纹理映射。在在GPU中实现处理单元的情况下,可以使用GPU的纹理映射硬件来加速在图像金字塔中查找像素数据。
Viola-Jones框架要求将执行对象检测的图像被表示为完整图像的形式,其中,在坐标(x,y)处的给定像素值是由拐角(0,0)和(x-1,y-1)定义的矩形中的像素值的总和。预处理器308可以被配置成提供以完整图像的形式表示的图像或图像金字塔/纹理映射。这大大改进为了评估每个二元分类器执行的Viola-Jones求和计算的效率。
本领域技术人员将想到,可以基于对象的视觉特征(诸如,从多个观点看对象在图像中通常提供对比度的图案)确定适用于识别图像中的对象的分类器序列。一旦定义了分类器序列,就可以根据经验确定用于分类器使用的合适阈值,以获得期望命中率(正确地识别对象)和/或失误率(未能识别对象)。例如,可以针对测试图像集合使用诸如AbaBoost的学习算法,以训练分类器并且实现期望性能特性。
Viola-Jones框架提供用于以二元分类器的级联的形式检测图像中的人脸的合适分类器序列,但是可以使用用于实现对象检测的任何分类器序列。在Viola-Jones框架下,二元分类器的复杂性随着级联进展而增加,这具有最初拒绝大量子窗口但是保持级联的每个分类器都接受给定子窗口的高匹配率的优点。
如关于图1解释的,在传统SIMD处理器处并行地评估子窗口导致计算单元的未充分利用显著。这是因为对于分配给处理器的给定的一组子窗口,在处理器的计算单元处运行的一些分类器序列比其它分类器序列更早终止(例如,当分类器序列中的一个序列不接受特征测试并且拒绝子窗口时),新级联可能还没有开始评估新子窗口,直到所有计算单元都完成处理并且可以再次开始在处理器的计算单元处运行的指令的循环为止。在传统SIMD处理器处的对象检测处理期间的任何给定时间,很大比例的计算单元很可能是空闲的。
以下参考图3、图4和图5描述解决该问题的、用于在SIMD处理器上执行对象检测的技术。在图3的处理单元301中,计算单元309-312中的每个都被配置成针对子窗口并行地评估分类器序列。每个分类器序列都可以包括例如针对子窗口测试Viola-Jones框架的一个或更多个特征。在计算单元处执行分类器序列包括:运行多个分类器程序,每个分类器程序都能够操作以针对对象特征的存在测试窗口。每个计算单元都执行分类器程序,分类器程序包括与在所有其它计算单元处运行的程序相同的指令。而且,每个分类器程序都能够评估任何子窗口上的任何对象特征,这意味着相同分类器程序可以在分类器序列的每级被使用,并且在每个计算单元上并行地使用。因为包括相同指令的相同分类器程序被用于在任何计算单元处测试分类器序列中的任何特征,SIMD处理器的计算单元均可以同时测试该序列中的不同特征。通过将不同子窗口提供给每个计算单元,SIMD处理器还可以在子窗口中并行地执行对象检测。例如,在计算单元309处的程序可以针对为图像定义的第一窗口测试该序列的第一特征,同时在计算单元310处的程序针对为图像定义的第二子窗口并行地测试该序列的第一特征。
分类器程序还被配置成在完成它们的当前子窗口的处理时,从子窗口池306独立地获取新子窗口。这通过以下操作来实现:(a)针对每个计算单元保持定义计算单元正在操作的子窗口和正在测试的图像特征的数据,和(b)将一旦完成当前子窗口的处理就获取新子窗口的指令包括在定义分类器程序的指令中。从而,不像传统SIMD处理器的情况那样将子窗口成组地分配给计算单元。而是,当要求新子窗口时,在每个计算单元处运行的每个分类器程序单独确定要评估的新子窗口。
每个计算单元都保持定义计算单元正在操作的子窗口和正由在该计算单元处运行的分类器程序所测试的对象特征的数据313-316。图3中示意性地示出数据315-316的位置:数据可以被保持在计算单元、存储器305、或者在计算单元处运行的分类器程序能够存取的任何其它数据存储器处。
程序可以被配置成当针对子窗口(针对其进行评估)的对象特征测试不接受时或者当程序完成分类器序列时,从子窗口池306获取新工作。因为SIMD处理器302的所有处理单元在分类器序列的每一个等级同时运行指令的公共集合,所以可以连续地利用一组计算单元,直到子窗口池306被耗尽并且针对图像304定义的所有子窗口303均被搜索为止。当子窗口池被耗尽时,不再向计算单元提供子窗口,并且图像304中的对象检测完成。
为了保持跟踪哪些子窗口303已被SIMD处理器的计算单元搜索以及哪些未被搜索,索引307可以以共享变量的形式保持在存储器305中,存储器305能够由在计算单元309-312处运行的程序存取。索引指示通过子窗口池306的搜索范围。每个分类器程序均被配置成当从子窗口池306请求或者接收到新子窗口时更新索引,以反映通过子窗口进行搜索的范围已经进展。例如,每个子窗口可以分配有标识符,子窗口从具有最低值标识符的子窗口开始依次被处理并且向上工作。通过将每个程序配置成当其请求新子窗口时使索引递增,索引表示被分配用于处理的最高值标识符,并且因此指示还将被分配给程序用于处理的子窗口池的子窗口的子集。将想到,这仅是用于保持指示经过帧的子窗口的集合的搜索范围的索引的很多可能示例中的一个。
为了确保索引表示由计算单元作出的共同进展(collectiveprogress),优选使用原子指令通过每个程序使索引递增。使索引原子地递增确保在每个计算单元处通过程序的写入之间不发生冲突。否则,冲突可能发生,这是因为SIMD处理可能意味着多于一个计算单元可能试图同时准确地修改索引(当指令相同并且在每个计算单元上步伐一致时)。索引可以表示将被处理的池306中的下一个子窗口的索引。当索引达到子窗口池中的子窗口的总数时,池被耗尽。在其它示例中,指示经过子窗口池的搜索范围的索引可以从子窗口的总数减少到零来倒计数,或者索引的增量/减量可以为除了1之外的量。在此描述的索引仅表示适用于保持跟踪经过子窗口池的搜索范围的一种机制。
图3中所示的存储器305是存储器的示意性表示,存储器可以包括位于处理单元301的不同点处或者位于支持处理单元301的数据处理系统处的一个或更多个物理和/或逻辑部分。例如,存储器305可以包括对于每个计算单元为本地的寄存器、对于多组计算单元为本地的存储器、所有计算单元能够存取的全局存储器、以及在处理单元外部(例如,在主机数据处理系统处)设置的一个或更多个存储器。表示子窗口池306和索引307的数据可以以任何合适方式分布在存储器305的一个或更多个部分处。
以下以伪码示出在计算单元309-312中的每个处运行的分类器程序的示例。F是正由程序评估的分类器序列中的特定特征的标识符,S是正通过程序操作的子窗口的标识符,并且R是通过针对子窗口S评估特征F返回的结果(即,接受或不接受)。在数据313-316处保持用于每个计算单元的值F和S。在该示例中,在序列中存在50个特征测试(F=0至49),并且在SIMD处理器102处处理的池306中存在1000个子窗口。
在分类器序列开始处,通过设置F=0和S=atomic_inc(workindex)初始化变量,使得每个程序接收不同子窗口并且开始评估第一特征。指令“S=atomic_inc(workindex)”执行索引307的原子(atomic)递增,参数workindex开始于零,使得当在计算单元上运行的分类器程序调用“atomic_inc(workindex)”时,多个程序中的一个程序接收子窗口1,另一个程序接收子窗口2等。换句话说,虽然在计算单元上运行的所有分类器程序均同时请求子窗口标识符,但是原子递增函数处理该争用,并且确保所有分类器程序被分配有不同子窗口。
然后,每个程序同时步伐一致地执行以下指令:
i.R=eval(F,S)
ii.if(R==1)F=F+1
iii.if(F==50){faceFoundAt(S);}
iv.if(F==50ORR==0){F=0;S=atomic_inc(workindex);if(S>=1000)return;}
Line(i)针对子窗口S评估特征F,使用索引S的程序识别将被评估的池306中的子窗口。如果评估返回“接受”(R=1),则Line(ii)使得该程序移动到序列中的下一个特征。Line(iii)检验序列中的最后特征(编号49)是否已被成功地评估(只有那时,F可以具有值50);如果是,则在正被处理的子窗口中找到对象候选,并且该程序调用输出函数“faceFoundAt(S)”。Line(iv)确定是否检测到人脸(F==50)或者评估不接受(R==0)。如果是,则程序被重新初始化,以从特征零开始处理子窗口池中的下一个子窗口。如果子窗口池被耗尽,则线程终止处理。以此方式,以上指令(i)-(iv)的相同集合被执行,以针对池的任何子窗口评估序列的任何特征,并且被迭代以通过针对每个子窗口的特征并且通过可用子窗口工作。
图4的流程图中还示出以上示例性分类器程序的操作。在401处,分类器程序400通过程序根据在410和411处保持的用于F和S的值,评估特征F和子窗口S。如果在步骤402处特征接受,则在步骤403处,值F410递增,并且在404处,程序检验以查看针对子窗口是否完成分类器序列。如果序列的所有特征已被评估并且接受,该程序在405处返回检测到人脸;如果不接受,则程序被迭代以继续针对当前子窗口评估下一个特征。当特征不接受或者检测到人脸时,在406处重置特征值F,以识别序列中的第一特征,在407处,子窗口值S递增,并且在408执行检验以确定子窗口池是否已经耗尽。一旦子窗口池被耗尽,则程序终止,否则程序被迭代以继续根据在410和411保持的F和S的值针对子窗口评估特征。
图5中示出优于传统SIMD处理器的SIMD处理器302的改进效率的简单示例。在该示例中,子窗口池包括八个子窗口S0至S7,并且分类器序列包括六个特征F0至F5。SIMD处理器302的计算单元309至312中的每个都根据上述原理运行分类器程序,并且通过索引307保持跟踪经过子窗口池的处理范围。在该示例中,图5中所示的特征F0-F5与图1中的特征F0-F5相同,并且子窗口S0-S7与图1中所示的子窗口SW0-SW7相同。从而,在图1和图5中,每个给定特征和子窗口对的评估结果是相同的。
当初始化时,四个计算单元(例如,从对索引的原子操作)接收前四个子窗口S0-S3,并且开始评估每个序列的第一特征F0。然后,在每个计算单元处运行的程序继续进行以便以在此描述的方式操作。子窗口不是按组被分配给计算单元;而是,当通过在计算单元处运行的程序要求子窗口时,请求新子窗口。例如,可以看出,当子窗口S2不接受第二特征F1时,在计算单元311处运行的程序首先接收新子窗口。然后,计算单元311立即开始针对来自子窗口池的下一个可用子窗口S4评估分类器序列。随后,子窗口S4不接受在计算单元311处的第五特征F4的评估。在该点处,子窗口池的所有子窗口已被耗尽,并且在计算单元311处运行的程序终止,使得在SIMD处理器302处并行运行的程序的两次迭代期间计算单元是空闲的。
在图5中,子窗口池的所有八个子窗口都通过处理单元301处理,在计算单元处运行的程序的总计36次迭代中仅3次是空闲的。这等于在计算单元处的约8%的空闲时间,其远低于当针对相同子窗口评估相同特征时由传统SIMD处理器的计算单元经历的超过30%的空闲时间。将想到,处理单元301可以在计算单元处并行地执行对象检测,可以比以传统方式配置的SIMD处理器具有充分更大的效率。
由于存在检验是否要求新子窗口并且保持识别用于每个程序的当前子窗口和特征的数据的指令,在SIMD处理器302的计算单元处执行的程序的每次迭代中存在很小开销。在为了处理分配有多组子窗口的传统SIMD处理器的操作中不存在这样的开销。然而,该开销导致的对性能的负面效果充分小于从由SIMD处理器302的计算单元经历的与传统SIMD处理器相比远远更低比例的空闲时间得到的对性能的正面效果。
索引307以上被描述为处理单元的所有计算单元能够存取的共享变量。然而,当可能存在为了存取变量竞争的大量程序(例如,以上示例中描述的远远多于四个程序),和/或变量被保持在GPU的全局存储器或者主机数据处理系统的存储器处时,这样的变量可能存取缓慢。为了解决这些问题,有利的是,可以将子窗口池306分割为子窗口的多个子集并且对SIMD处理器的计算单元在逻辑上分组,使得子窗口的每个子集都通过不同组计算单元处理。与存在多组计算单元相比,可以存在远远更多的子窗口的子集。通过将子窗口的子集分配给多组计算单元,可以减轻以上问题。在图7中示出这样做的一个示例性方式。
图7中示出被配置成利用多组SIMD计算单元的SIMD处理单元700,示出三组计算单元701-703,每组计算单元都可以包括SIMD处理器的任何数量的计算单元。计算单元可以属于一个或更多个不同SIMD处理器–例如,每组计算单元均可以是以与图3中的SIMD处理器302相同的方式配置的SIMD处理器。每个计算单元执行被配置成以上述方式操作的分类器程序。
每组计算单元(或者“计算组”)均具有相应本地存储器707-709,在该组的计算单元处运行的程序可以以比所有计算组均存取全局存储器704的等待时间更低的等待时间存取相应本地存储器。给定计算组的本地存储器能够由该计算组而不是其它计算组存取。在图7的示例中,每个本地存储器都包括用于计算组的子窗口的本地子集710-712(其可以为对图像的多个部分的参考、图像区域标识符、或者图像数据本身的形式)和指示经过该子窗口的子集的搜索范围的本地索引713-715。在另一个示例中,每个本地存储器都仅存储本地索引,并且子窗口的子集被存储在别处(诸如,在处理单元外部的存储器中或者在全局存储器中)。在一组计算单元处运行的分类器程序处理其相应子集的子窗口,并且以如上关于图3至图5描述的方式从该集合单独请求新子窗口。
计算组每个均可以表示图3中所示的处理单元301。例如,计算组701可以是SIMD处理器302,本地存储器707可以是存储器305,本地集合710可以是子窗口池306,并且本地索引713可以是索引307。然而,在图7中所示的布置中,由计算组707操作的子窗口的子集仅表示全部子窗口池的针对图像304定义的一部分。
每个计算组均通过子窗口的子集单独地工作。当计算组耗尽其子窗口的子集时,子窗口的新子集从保持在全局存储器704中的全局子窗口池706被分配给该计算组。这可以以任何合适方式被实现,包括通过监测本地索引713-715中的每个本地索引以确定子窗口的相应本地子窗口何时被耗尽并且使子窗口的新子集被写入到合适本地集合710-712。这样的监测例如可以通过在实现计算组的GPU处运行的处理执行。在另一个示例中,在多组计算单元处运行的分类器程序被提供有当子窗口的本地子集被耗尽时从全局存储器706请求子窗口的新子集的又一指令。
例如,以上伪码描述的分类器程序的步骤(iii)可以被修改为请求将子窗口的新子集分配给该计算组,而不是终止。相应本地索引还可以被重置或者更新以使得通过新子集中的子窗口对索引开始进行计数。全局存储器706可以包括全局索引705,全局索引705指示经过用于将执行对象检测的图像的全局子窗口池的搜索范围。分类器程序可以通过使用响应于子窗口的本地子窗口被耗尽而执行的原子指令更新全局索引705,使得子窗口的新子集被写入到其本地存储器。原子指令可以用于使全局索引递增,以反映经过子窗口池的搜索范围并且使得将子窗口的新子集写入到本地存储器。当全局索引指示全局子窗口池已被耗尽时,针对处理可以不再提供子窗口的集合,并且执行原子指令的程序可以此时终止。
虽然由程序对全局存储器的存取比本地存储器更慢,但是因为它们仅当子窗口的子集被耗尽时才发生,所以这些存取是不频繁的。而且,由于任何程序都可以请求在当前集合被耗尽时将子窗口的新子集写入到本地存储器,所以可以连续地占用在每组的计算单元处运行的程序。
在该示例中,在GPU上实现处理单元,然后API(诸如,OpenCL)可以被用于提供分类器程序,并且计算单元可以是在GPU上运行的线程。OpenCL使得线程能够被分组为“工作组”,并且工作组每个都可以设置有仅该工作组能够存取的本地存储器。OpenCL还使得能够提供所有线程和工作组都能够存取的全局存储器,但是这比本地存储器更慢地存取。GPU(和一些CPU)的架构还倾向于被布置成使得它们具有分组的计算单元的多个集合,分组的计算单元可以为多个内核或者计算群集的形式。单独内核或者群集不共享本地存储器,并且因此不能在本地存储器中快速地存取相同数据。可以设置可以由所有内核或者群集存取的一些存储器,但是这些存储器离内核/群集更远并且不能快速地存取。从而,上述计算组可以被配置成使得它们对应于设备的内核/群集,使得能够快速地存取对于内核/群集为本地的数据,并且更慢地存取在所有计算组之间共享但是不太频繁需要的数据。
在一些示例中,子窗口池可以被划分为多个子集,使得每个子集的子窗口指的是将执行对象检测的图像的一些公共区域(或者其衍生物,诸如,图像金字塔或者纹理映射)。这最小化被复制到用于分类器程序操作的本地存储器中的图像数据,并且改进了在每个计算组的本地存储器处操作的任何高速缓存处理的效率。
在以上参考图7描述的另选示例中,将子窗口的子集分配给计算组可以由SIMD处理器本身的调度系统部分地处理。例如,一些SIMD处理器(诸如,GPU和一些CPU)具有以SIMD方式操作的多个计算单元,并且在这些计算单元上运行的程序为线程的形式。与存在计算单元相比,这些SIMD处理器通常能够在系统中具有更多的线程。换句话说,不是所有线程都可以同时执行。相反,在资源变为可用时,SIMD处理器可以在线程之间切换(例如,如果一个线程变得空闲,则该线程被关掉并且另一线程被接入)。
在这样的情况下,子窗口可以被划分为子集,如上所述,并且每个子集可以被分配给一组线程。与比处理单元上具有多个计算组相比,将存在更多组的线程。处理单元将开始执行尽可能多的线程组,并且一旦这些线程组中的一个线程组完成评估其子窗口的子集,其就被关掉并且用分配有子窗口的不同子集的另一个线程组代替。以此方式,将评估子窗口的所有子集,并且避免使用全局存储器。然而,这依赖于处理单元的线程调度,其更专用于执行对象检测的各个处理单元。
根据在此描述的原理执行的对象检测在很多类型的设备中都是有用的。特别是,接受作为人脸候选的子窗口的位置可以通过相机管线的自动聚焦系统优化为自动聚焦点,目标在于确保图像中的人脸被聚焦。可以在视频编码装置中使用所检测的人脸信息,以通知编码器人脸在视频流中的位置,并且允许通过优先增加视频流中的人脸的编码质量改进编码后的视频的外观质量。所检测的人脸信息可以被提供作为用于由相机捕捉的照片的元数据,以指示人脸在照片中的位置。
在此描述的SIMD处理单元可以被用于在例如数码相机、智能电话、平板计算机、或者包括相机(诸如,安全监控相机)的任何其它种类的设备的相机管线中执行对象检测。更通常地,SIMD处理单元可以从任何合适源(包括从提供所记录的视频流或者一系列一个或更多个数字图像的存储子系统或者从提供所接收的视频流或者一系列一个或更多个数字图像的通信子系统)接收帧。
当一些平台提供SIMD处理器时,图像可以被划分为用于处理(例如,用于在特定种类的GPU进行处理)的瓦片(tile)。对于本领域技术人员来说明显的是,执行在此描述的对象检测的原理可以容易地扩展到被表示为瓦片的集合的图像,每个瓦片都具有所定义的子窗口的集合。
术语软件、程序和程序代码可以包括用于处理器(例如,CPU和/或GPU)、固件、字节码、程序设计语言(诸如,C或者OpenCL)、以及用于可重配置逻辑器件(FPGA)的模块的可执行代码。机器可读代码可以包括软件/程序代码、以及用于在任何等级(包括在寄存器传送级(RTL))、以高级电路表示(诸如,Verilog或者VHDL)和低级表示(诸如,OASIS和GDSII)限定集成电路的硬件表示的代码。
术语SIMD处理器将被理解为是指能够操作以对不同数据并行地执行相同指令的任何种类的处理器,并且包括单个指令、多线程(SIMT)处理器和其它变体。在此描述的计算单元形成一个或更多个SIMD处理器的一部分或者可以被聚集以表示一个或更多个SIMD处理器。计算单元可以由任何合适处理实体(包括CPU、GPU、或者固定函数或者可编程硬件)提供。软件和程序可以以非暂时形式被存储在机器可读介质(诸如,集成电路存储器或者光学或者磁性存储器)处。机器可读介质可以包括多个存储器,诸如,芯片上存储器、计算机工作存储器、以及非易失性存储设备。
由此,申请人公开了在此描述的单独每个相应特征和两个或更多个这样的特征的任何组合,在这个意义上,这样的特征或组合能够基于本说明书结合本领域技术人员的公知常识作为一个整体被实现,而不管这样的特征或者特征的组合是否解决在此描述的任何问题,并且不限制权利要求的范围。申请人指出本发明的多个方面可以由任何这样的相应特征或者特征的组合构成。考虑到在前描述,对于本领域技术人员来说在本发明的范围内作出多种修改是显而易见的。
Claims (20)
1.一种用于通过在多个图像区域中对多个对象特征进行测试在图像中执行对象检测的单指令多数据处理单元,所述单指令多数据处理单元包括:
一组计算单元,所述一组计算单元能够操作以并行地执行多个分类器序列,每个分类器序列都包括多个分类器程序,并且每个分类器程序都包括与所述多个分类器序列中的每个分类器序列中的其它分类器程序相同的指令;
其中,每个计算单元被配置成在所述计算单元上独立地保持识别正在测试的图像区域和特征的数据,并且每个分类器程序被布置成存取所述数据,针对所识别的图像区域测试所识别的特征,并且更新所述数据,使得所述计算单元能够操作以针对不同的图像区域同时测试不同的特征。
2.根据权利要求1所述的单指令多数据处理单元,每个分类器序列都被配置成针对图像区域中的对象特征执行一序列的测试,所述分类器序列的每个分类器程序被配置成执行所述序列的测试。
3.根据权利要求1或2所述的单指令多数据处理单元,每个分类器程序都被配置成接受或者不接受图像区域,并且包括被配置为进行如下操作的指令:
当接受图像区域时,更新针对正执行所述分类器程序的所述计算单元所保持的数据,以使得所述分类器序列中的下一分类器程序针对相同的图像区域测试下一特征;
当不接受图像区域时,更新针对正执行所述分类器程序的所述计算单元所保持的数据,以使得所述分类器序列中的下一分类器程序针对下一图像区域测试第一特征。
4.根据权利要求3所述的单指令多数据处理单元,所述单指令多数据处理单元还包括所述一组计算单元能够存取的存储器,所述存储器被布置成存储表示经过所述多个图像区域的搜索范围的索引,并且每个分类器程序包括被配置为进行如下操作的指令:当不接受图像区域时,通过使所述索引原子地递增,更新针对正执行所述分类器程序的所述计算单元所保持的数据,以更新所述搜索范围,并且使得所述下一图像区域的标识符被返回到所述分类器程序。
5.根据任一项前述权利要求所述的单指令多数据处理单元,每个分类器程序都被配置成使用它的识别图像区域的数据在正执行对象检测的图像中的所识别的图像区域中查找数据。
6.根据任一项前述权利要求所述的单指令多数据处理单元,分类器序列的每个分类器程序是单个程序,所述单个程序被布置成在其计算单元处迭代地执行,以针对所识别的区域测试所识别的特征并且更新所述数据。
7.根据任一项前述权利要求所述的单指令多数据处理单元,所述单指令多数据处理单元还包括:另一组计算单元,所述另一组计算单元能够操作以执行所述多个分类器序列,其中,所述一组计算单元形成第一计算组,并且所述另一组计算单元形成第二计算组,并且其中,所述多个图像区域被划分为图像区域的多个子集,并且所述第一计算组和所述第二计算组中的每个被分配图像区域的所述多个子集中的不同的一个子集用于测试。
8.根据权利要求7所述的单指令多数据处理单元,
其中,所述处理单元还包括:全局存储器,所述全局存储器存储全局索引,所述全局索引表示由所述第一计算组和所述第二计算组经过图像区域的所述多个子集的搜索范围;
其中,每个分类器程序都包括被配置为进行如下操作的指令:当针对其相关的计算组耗尽图像区域的所述子集时,根据所述全局索引使得图像区域的新子集被分配给所述相关的计算组。
9.根据权利要求8所述的单指令多数据处理单元,每个分类器程序都包括被配置为进行如下操作的指令:通过原子地更新所述全局索引,使得所述全局索引将图像区域的新子集分配给所述相关计算组,以更新经过图像区域的所述多个子集的搜索范围,并且使得将图像区域的下一子集的标识符被返回到所述分类器程序。
10.根据权利要求7至9中任一项所述的单指令多数据处理单元,所述单指令多数据处理单元还包括所述第一计算组能够存取但是所述第二计算组不能存取的存储器,所述存储器被布置成存储索引,该索引表示由所述第一计算组经过所述多个图像区域的搜索范围;
其中,所述第一计算组的每个分类器程序被配置成接受或者不接受图像区域,并且包括被配置为进行如下操作的指令:当不接受图像区域时,通过使所述索引原子地递增更新针对正执行所述分类器程序的所述计算单元所保持的数据,以更新所述搜索范围,并且使得将下一个图像区域的标识符返回到所述分类器程序。
11.根据任一项前述权利要求所述的单指令多数据处理单元,每个图像区域在它在帧中的位置、尺寸和方位中的一个或更多个方面都不同于其它图像区域。
12.根据任一项前述权利要求所述的单指令多数据处理单元,每个对象特征是Haar-like特征,并且每个分类器程序都被配置成确定所述特征是否满足预定义的阈值。
13.一种用于在单指令多数据处理器处在图像中执行对象检测的方法,所述单指令多数据处理器具有一组计算单元,所述一组计算单元被布置成并行地执行多个分类器序列,每个分类器序列包括多个分类器程序,所述多个分类器程序与所述多个分类器序列中的每个分类器序列中的其它分类器程序具有相同的指令,并且所述方法包括以下步骤:
在所述一组计算单元的每个计算单元处并行地执行每个序列的分类器程序,以在多个图像区域中针对多个对象特征进行测试;
每个分类器程序:
独立地保持识别通过所述分类器程序测试的图像区域和特征的数据;
存取所述数据;
针对所识别的图像区域测试所识别的特征;以及
更新所述数据,使得所述计算单元能够操作以针对不同图像区域同时测试不同特征。
14.根据权利要求13所述的方法,当针对所识别的图像区域测试所识别的特征时,每个分类器程序:
接受所述图像区域,并且更新识别正在测试的图像区域和特征的数据,以使所述分类器序列中的下一个分类器程序针对相同的图像区域测试下一个特征;或者
不接受所述图像区域,并且更新识别正在测试的图像区域和特征的数据,以使所述分类器序列中的所述下一个分类器程序针对下一图像区域测试所述第一特征。
15.根据权利要求14所述的方法,所述方法还包括以下步骤:保持表示由所述一组计算单元经过所述多个图像区域的搜索范围的索引,并且当不接受图像区域时,每个分类器程序通过使所述索引原子地递增来更新识别正在测试的图像区域和特征的数据以更新所述搜索范围,并且使所述下一图像区域的标识符返回到所述分类器程序。
16.根据权利要求13至15中任一项所述的方法,每个分类器程序使用它的识别图像区域的数据在正执行对象检测的图像中的所识别的图像区域中查找数据。
17.根据权利要求13至16中任一项所述的方法,所述方法包括以下步骤:在其计算单元处迭代地执行每个分类器程序,以针对所识别的区域测试所识别的特征并且更新所述数据。
18.根据权利要求13至17中任一项所述的方法,每个分类器程序在多组计算单元中的一组计算单元的计算单元处执行,并且所述方法还包括以下步骤:
将所述多个图像区域划分为图像区域的多个子集;以及
分配图像区域的所述多个子集中的一个不同子集用于在每组计算单元处进行测试。
19.根据权利要求18所述的方法,所述方法还包括以下步骤:
保持表示由所述多组计算单元经过图像区域的所述多个子集的搜索范围的全局索引;以及
当分类器程序针对其相关计算组耗尽图像区域的所述子集时,使得根据所述全局索引将图像区域的新子集分配给所述相关计算组。
20.根据权利要求19所述的方法,每个分类器程序通过原子地更新所述全局索引,使得图像区域的新子集被分配给所述相关计算组,以更新经过图像区域的所述多个子集的搜索范围,并且使得图像区域的下一子集的标识符返回到所述分类器程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011443846.4A CN112560643A (zh) | 2014-12-11 | 2015-12-11 | 单指令多数据处理单元和在图像中执行对象检测的方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1422066.9 | 2014-12-11 | ||
GB1422066.9A GB2533284B (en) | 2014-12-11 | 2014-12-11 | Performing object detection |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011443846.4A Division CN112560643A (zh) | 2014-12-11 | 2015-12-11 | 单指令多数据处理单元和在图像中执行对象检测的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105701446A true CN105701446A (zh) | 2016-06-22 |
CN105701446B CN105701446B (zh) | 2020-12-29 |
Family
ID=54783532
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510919951.3A Active CN105701446B (zh) | 2014-12-11 | 2015-12-11 | 单指令多数据处理单元和在图像中执行对象检测的方法 |
CN202011443846.4A Pending CN112560643A (zh) | 2014-12-11 | 2015-12-11 | 单指令多数据处理单元和在图像中执行对象检测的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011443846.4A Pending CN112560643A (zh) | 2014-12-11 | 2015-12-11 | 单指令多数据处理单元和在图像中执行对象检测的方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9875420B2 (zh) |
EP (1) | EP3035241A1 (zh) |
CN (2) | CN105701446B (zh) |
GB (1) | GB2533284B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018068533A1 (zh) * | 2016-10-10 | 2018-04-19 | 深圳云天励飞技术有限公司 | 一种人脸检测的方法及装置 |
CN110598008A (zh) * | 2018-06-13 | 2019-12-20 | 杭州海康威视系统技术有限公司 | 录制数据的数据质检方法及装置、存储介质 |
WO2020134408A1 (zh) * | 2018-12-29 | 2020-07-02 | 深圳光启空间技术有限公司 | 多路负载均衡异步目标检测方法、存储介质及处理器 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2533284B (en) * | 2014-12-11 | 2017-04-12 | Imagination Tech Ltd | Performing object detection |
US10891255B2 (en) * | 2015-03-18 | 2021-01-12 | Intel Corporation | Heterogeneous multiprocessor including scalar and SIMD processors in a ratio defined by execution time and consumed die area |
GB2541179B (en) | 2015-07-31 | 2019-10-30 | Imagination Tech Ltd | Denoising filter |
US20180005059A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
KR102574449B1 (ko) * | 2016-11-17 | 2023-09-04 | 삼성전자 주식회사 | 데이터 처리 방법 및 장치 |
US10255525B1 (en) * | 2017-04-25 | 2019-04-09 | Uber Technologies, Inc. | FPGA device for image classification |
US11263541B2 (en) * | 2017-09-27 | 2022-03-01 | Oracle International Corporation | Ensembled decision systems using feature hashing models |
US11334960B2 (en) | 2018-06-08 | 2022-05-17 | Uatc, Llc | Systems and methods for pipelined processing of sensor data using hardware |
US11144637B1 (en) * | 2018-08-24 | 2021-10-12 | Ca, Inc. | Systems and methods for executing decision trees |
US11853394B2 (en) | 2018-11-21 | 2023-12-26 | Datalogic Ip Tech S.R.L. | Image multiprocessing method for vision systems |
CN109886135A (zh) * | 2019-01-25 | 2019-06-14 | 桂林远望智能通信科技有限公司 | 一种低分辨率人脸识别方法、装置及存储介质 |
US11529742B2 (en) | 2019-10-21 | 2022-12-20 | Silicon Laboratories Inc. | Control of low-cost robotics and method therefor |
US11878432B2 (en) * | 2019-10-21 | 2024-01-23 | Silicon Laboratories Inc. | Low-cost robotics for placement of integrated circuit and method therefor |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1403997A (zh) * | 2001-09-07 | 2003-03-19 | 昆明利普机器视觉工程有限公司 | 数字视频人脸自动识别系统 |
US8649612B1 (en) * | 2010-01-06 | 2014-02-11 | Apple Inc. | Parallelizing cascaded face detection |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128642A (en) * | 1997-07-22 | 2000-10-03 | At&T Corporation | Load balancing based on queue length, in a network of processor stations |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US6748593B1 (en) * | 2000-02-17 | 2004-06-08 | International Business Machines Corporation | Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system |
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
CN101091175B (zh) * | 2004-09-16 | 2012-03-14 | 辉达公司 | 负载均衡 |
JPWO2007004522A1 (ja) * | 2005-06-30 | 2009-01-29 | オリンパス株式会社 | 検索システム及び検索方法 |
JP5137434B2 (ja) * | 2007-03-28 | 2013-02-06 | 株式会社ソニー・コンピュータエンタテインメント | データ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラム |
US8108876B2 (en) * | 2007-08-28 | 2012-01-31 | International Business Machines Corporation | Modifying an operation of one or more processors executing message passing interface tasks |
US8200025B2 (en) * | 2007-12-07 | 2012-06-12 | University Of Ottawa | Image classification and search |
ES2628778T3 (es) * | 2009-04-10 | 2017-08-03 | Sk Chemicals, Co., Ltd. | Procedimiento de preparación de una poliamida resistente al calor |
US8423799B2 (en) * | 2009-11-30 | 2013-04-16 | International Business Machines Corporation | Managing accelerators of a computing environment |
US9092267B2 (en) * | 2011-06-20 | 2015-07-28 | Qualcomm Incorporated | Memory sharing in graphics processing unit |
US9235769B2 (en) * | 2012-03-15 | 2016-01-12 | Herta Security, S.L. | Parallel object detection method for heterogeneous multithreaded microarchitectures |
US9009712B2 (en) * | 2012-03-16 | 2015-04-14 | Advanced Micro Devices, Inc. | GPU distributed work-item queuing |
US9449257B2 (en) * | 2012-12-04 | 2016-09-20 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
US9466091B2 (en) * | 2013-09-26 | 2016-10-11 | Imagination Technologies Limited | Atomic memory update unit and methods |
GB2519620B (en) * | 2013-10-23 | 2015-12-30 | Imagination Tech Ltd | Skin colour probability map |
GB2533284B (en) * | 2014-12-11 | 2017-04-12 | Imagination Tech Ltd | Performing object detection |
-
2014
- 2014-12-11 GB GB1422066.9A patent/GB2533284B/en active Active
-
2015
- 2015-12-07 EP EP15198278.2A patent/EP3035241A1/en active Pending
- 2015-12-11 CN CN201510919951.3A patent/CN105701446B/zh active Active
- 2015-12-11 CN CN202011443846.4A patent/CN112560643A/zh active Pending
- 2015-12-11 US US14/966,288 patent/US9875420B2/en active Active
-
2017
- 2017-12-15 US US15/843,979 patent/US10572756B2/en active Active
-
2020
- 2020-02-24 US US16/799,734 patent/US11961286B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1403997A (zh) * | 2001-09-07 | 2003-03-19 | 昆明利普机器视觉工程有限公司 | 数字视频人脸自动识别系统 |
US8649612B1 (en) * | 2010-01-06 | 2014-02-11 | Apple Inc. | Parallelizing cascaded face detection |
Non-Patent Citations (4)
Title |
---|
HAIPENG JIA等: ""Accelerating Viola-Jones Facce Detection Algorithm on GPUs"", 《IEEE》 * |
LI-CHAO SUN等: ""Acceleration Algorithm for CUDA-based Face"", 《IEEE》 * |
NGUYED TAN等: ""A software-based dynamic-wrap scheduling approach for load-balancing the Violo-Janes face detection algorithm on "", 《JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTER》 * |
REN MENG等: ""CUDA-based Real-time Face Recognition System"", 《IEEE》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018068533A1 (zh) * | 2016-10-10 | 2018-04-19 | 深圳云天励飞技术有限公司 | 一种人脸检测的方法及装置 |
CN110598008A (zh) * | 2018-06-13 | 2019-12-20 | 杭州海康威视系统技术有限公司 | 录制数据的数据质检方法及装置、存储介质 |
CN110598008B (zh) * | 2018-06-13 | 2023-08-18 | 杭州海康威视系统技术有限公司 | 录制数据的数据质检方法及装置、存储介质 |
WO2020134408A1 (zh) * | 2018-12-29 | 2020-07-02 | 深圳光启空间技术有限公司 | 多路负载均衡异步目标检测方法、存储介质及处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20180107890A1 (en) | 2018-04-19 |
CN112560643A (zh) | 2021-03-26 |
US20200193208A1 (en) | 2020-06-18 |
EP3035241A1 (en) | 2016-06-22 |
US11961286B2 (en) | 2024-04-16 |
GB2533284A (en) | 2016-06-22 |
CN105701446B (zh) | 2020-12-29 |
GB2533284B (en) | 2017-04-12 |
US9875420B2 (en) | 2018-01-23 |
US10572756B2 (en) | 2020-02-25 |
US20160171331A1 (en) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105701446A (zh) | 执行对象检测 | |
US11074717B2 (en) | Detecting and estimating the pose of an object using a neural network model | |
Işık | A comparative evaluation of well-known feature detectors and descriptors | |
US10977560B2 (en) | Efficient decision tree traversal in an adaptive boosting (AdaBoost) classifier | |
Shen et al. | Shadow optimization from structured deep edge detection | |
CN108427927B (zh) | 目标再识别方法和装置、电子设备、程序和存储介质 | |
Marengoni et al. | High level computer vision using opencv | |
WO2017077938A1 (ja) | 粗密探索方法および画像処理装置 | |
Codreanu et al. | GPU-ASIFT: A fast fully affine-invariant feature extraction algorithm | |
CN111626295A (zh) | 车牌检测模型的训练方法和装置 | |
He et al. | Pointinst3d: Segmenting 3d instances by points | |
CN105190689A (zh) | 包括基于毗连特征的对象检测和/或双边对称对象分段的图像处理 | |
US20200219250A1 (en) | Image analysis device | |
Akagic et al. | Superpixel accelerator for computer vision applications on arria 10 soc | |
Bani Baker et al. | Accelerating white blood cells image segmentation using GPUs | |
US11004205B2 (en) | Hardware accelerator for histogram of oriented gradients computation | |
KR100837244B1 (ko) | 자동차 번호판의 영상 인식 시스템 및 그 방법 | |
Fabijańska et al. | New accelerated graph‐based method of image segmentation applying minimum spanning tree | |
WO2016053343A1 (en) | Intent based clustering | |
WO2019082283A1 (ja) | 画像解析装置 | |
US10657415B2 (en) | Image correspondence determining method and apparatus | |
US10043081B2 (en) | Image processing device and image processing program | |
CN116434032A (zh) | 基于pp-yoloe的抗原检测试剂盒自动识别方法和系统 | |
CN114359645A (zh) | 基于特征区域的图像拓展方法、装置、设备及存储介质 | |
Liu et al. | Reconciling global and local optimal label assignments for heavily occluded pedestrian detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |