摘要 本文提出了一种实时并且精准的人体检测架构c4。c4在目前最高精确度下可以达到20帧每秒的检测速度,并且是在只使用一个处理线程和不使用gpu等硬件的情况下达到的。能达到实时而精确的检测源于以下两点:第一,相邻像素差值的符号是描述轮廓的关键信息;第二,centrist描述子非常适合做人体检测,因为它编码了符号信息并且可以隐式地表达全局轮廓。使用centrist描述子和线性分类器,我们提出了一种不需要显式生成特征向量的计算方法,它不需要图像的预处理或特征向量的归一化,只需要o(1)时间去测试一个图片区域。c4也非常适合进一步的硬件加速,我们在一个嵌入式的1.2ghz cpu上同样实现了20fps的高速人体检测。
ⅰ引言
人体检测在生活中应用广泛:监控系统和机场安全,自动驾驶和驾驶辅助系统,人机交互,互动娱乐,智能家庭和老人辅助,军方的寻人应用等。广泛的应用和挑战吸引了很多研究者参与到其中来。
本文的目的是以最少的误报率进行实时而精确的人体检测。在机器人系统上,计算效率尤其重要,不仅要达到实时的检测,还要做的占用尽量少的cpu资源,使得其他任务例如路径规划、导航等不会受到影响。
目前的人体检测在很多方面已经达到问题的前沿,例如:特征、分类器、速度、遮挡处理等,引文[1]~[11]做了详细论述。然而,至少还有两个重要问题没有得到解决:
(1)实时检测检测速度非常重要,因为实时检测是很多现实应用[12]的先决条件。
(2) 确定最重要的信息源 hog[1]和lbp[8]特征在人体检测中取得了成功,但我们还不是很清楚的了解这些特征中最重要的信息是什么,或者说,为什么这些特征可以取得这么好的检测效果。
在本文中,我们认为这两个问题是紧密相关的,我们证明合适的特征选择会带来高效的检测结果。事实上,特征计算是现有方法的主要瓶颈,现有方法即使使用gpu的100+并行处理线程,也只能达到大约10fps的检测速率。大多数时间都耗费在了特征计算上(包括图像预处理、特征构建和特征向量归一化)。
本文主要解决了两个问题。第一,通过一系列精心设计的实验(见sectionⅲ-a)表明表征身体外沿的轮廓特征可以提供人体检测的重要信息。我们发现相邻像素差值的符号对于表示轮廓至关重要,但差值的大小没有符号信息重要。
第二,我们提出用轮廓线索(contour cues)进行人体检测,并表示成熟的centrist[13]特征非常适合人体检测(见sectionⅲ-b)。centrist编码了像素差值的符号信息,并且可以表示全局(大规模)轮廓。在sectionⅲ-c中,我们将centrist与其他特征进行了对比。
centrist特征在速度上非常吸引人,在sectionⅳ中,我们提出了一种不包括图像预处理和特征向量归一化的评价方法。事实上,没有必要显式地计算centrist特征向量,因为它已经无缝的嵌入在分类器中,能够达到视频流检测速度。我们使用层级分类器,所以将此方法叫做c4:detecting humancontour using acascadeclassifier and thecentristdescriptor.
c4可以在不使用gpu的单线程上实现精确地实时人体监测。在sectionⅴ中,我们用两种评价方法展示实验结果,第一,在一个标准人体检测数据集上的实验结果;第二,在线检测结果,即在irobot packbot上的实验结果。特别的,我们还展示了基于实时行人检测的行人跟踪。我们将此检测系统提供给其他研究者使用。
ⅱ相关研究工作
人体检测的精确度仍是主要研究方向,尤其是在低fppi[2] (false positive per image)时的高检测率。在此方面的研究主要向两个方向发展:特征和分类器。
人体检测中使用过各种特征,例如haar[7],edgelet[10],然而hog是使用最多的人体检测特征[1,3,4,6,8]。边缘在不同方向上的强度分布似乎可以有效地在图像中捕获人体。近来,lbp(localbinary patern)方法的变体也表现出很大潜力[5][8]。最近人体检测趋向于联合多种信息源,例如颜色、局部纹理、边缘、运动等等[14,6,8,15],引入更多信息通道会提高检测精度,但同时也会增加检测时间。
在分类器方面,线性svm由于速度快而被广泛使用。hik svm(histogram intersectionkernel svm)[16][17]可以达到更高的精度,耗时有所增加[4]。
最近的研究还提高了人体检测的速度。层级(cascade)[7][11]和积分图[14][8]被广泛用来加速检测。然而,检测速度仍远低于帧率,所以人们使用gpu来做并行计算,例如,[9]中的系统达到了10fps,[8]中达到了4fps,两者都使用了gpu。在sectionⅳ中,我们展示了一种可以在不使用gpu的单线程上达到20fps的方法(并且此方法非常易于做gpu加速)。表ⅰ对比了当前的几种快速检测方法的速度和精度,包括本文提出的c4方法。
表ⅰ,几种人体检测方法的速度比较。vga分辨率是640*480,qvga是320*240,精度单位是1fppi(false positive per image)
移动机器人平台上的人体检测系统已有很多相关研究工作[18,19,20,21],多数都是利用测距传感器(ranging sensor)[18][21]。3d传感器对于检测和跟踪有很大作用(人体位于地平面之上,可以在深度上被很好的分割),此方面也已经有一些不错的系统出现。然而这些方法有一个缺点:测距系统的解析度有限、临时采样率有限、难以处理强烈的室外光。因此,探索被动光电传感器例如摄像机的可用性变得更加重要。
ⅲ使用centrist描述子检测人体轮廓
a 像素差值的符号对于编码轮廓和人体检测至关重要
我们认为轮廓是人体检测中最有用的信息,而相邻像素差值的符号是对轮廓进行编码的关键。这两个假设都在本节有实验支持。
假设1:对于人体检测,最重要的就是编码轮廓信息,而这正是hog描述子的关键。
局部纹理可能对检测有害,例如人衣服上的图案可能扰乱检测器。图1b是图1a的sobel梯度图(计算图1a中每个像素的sobel梯度,归一化到[0,255],然后替换原像素值)。sebel图会平滑局部高频纹理信息,所以图1b中剩下的轮廓可以清晰地显示人体的位置。
图1 (a)原图,(b)sobel梯度图,(c)梯度符号图
dalal的hog论文[1]中的图6也表明在人体轮廓周围的图像块是hog描述子中最重要的。然而,我们还没有清楚地知道hog描述子中编码的到底是什么信息,使得它在人体检测中如此成功。
我们要通过实验表明轮廓是hog描述子中编码的最重要的信息。我们使用论文[1]中的原始hog检测器,但使用sobel图进行测试。原始hog svm检测器使用轮廓和其他信息(例如有衣服上的纹理)交织在一起进行训练,这样训练出来的检测器如果在只有轮廓信息的sobel图上能够检测出人体,就表明轮廓信息是hog编码的主要信息。结果,检测精度在1fppi时是67%,比[14]中评价的12个检测器中的7个都要好。
因此,我们相信轮廓是hog描述子中用于人体检测的最重要的信息。c4和其他现有方法的最大不同是c4明确地从sobel图中检测人体轮廓。
假设2:相邻像素间差值的符号是编码轮廓的关键信息。我们经常使用梯度来检测轮廓,而梯度是通过相邻像素做差来获得的。我们将说明差值的符号是编码轮廓的关键信息,而差值的幅值(大小)并没有符号重要。
为了证明此假设,对于给定的图像i,我们生成图像i’,i’与i保持相邻像素差值符号的一致,但差值大小被忽略。即
上式中,i中的96对应i’中的3,因为存在比较路径:2<32<38<96。换句话说,虽然i’中忽略了差值的大小,但元素之间的空间相对位置仍会提供一种大小关系。此外,i和i’中的梯度幅值也会有很大不同。将图1b看做i,则图1c就是对应的i’(像素值变换到[0,255]区间),可以很容易地从中检测出人体轮廓。
我们仍通过实验验证假设2,使用原始hog检测器在梯度符号图(类似图1c)上进行人体检测,在1fppi时达到了61%的精度,比[14]中评价的7中方法的精度都要高。虽然在sobel图和符号图上的检测精度都比较低,但要注意到,所用的分类器都是在原图上进行训练的,我们在没有改变原始hog分类器的情况下就取得了比现有的一些方法还要高的精度。这充分证明了,人体检测中最有用的信息是人体的全身轮廓信息,而相邻像素的差值符号是编码轮廓信息的关键。
b centrist描述子
我们建议使用centrist描述子[13]来识别人体,因为它简洁的编码了关键的符号信息,并且不需要图像的预处理和后处理。centrist意思是censustransform histogram。在此节中我们会说明为什么centrist描述子适合人体检测,并将centrist描述子与其他描述子进行对比(在sectionⅲ-c中)。
#p#ct比较像素点e#
censustransform(ct,普查变换)最初是为了建立局部区域的一致性而设计的[22]。ct比较像素点与其周围像素的灰度值大小,如下式所示:
如果中心像素值大于或等于周围的某个像素值,对应位置的值为1,否则值为0。从像素值比较得到的这8个值以一定的顺序(我们以从左到右、从上到下的顺序)排列在一起,转换为[0,255]间的一个十进制数,这个数就是中心像素的ct值。centrist描述子就是这些ct值的直方图[13]。
如公式(3)所示,ct值简洁的编码了相邻像素的差值符号信息。centrist所遗漏的似乎只有捕获全局(大尺度)轮廓的能力。
对于给定的具有centrist描述子h的图像i,和有匹配的centrist描述子的图像i’,我们希望i’与i相似,尤其是在全局轮廓上相似。如图2所示,图2a是一个108*36的人体轮廓,我们将此图分割为12*4个块(block),每个块的大小是9*9。对于每个块i,我们找到具有相同centrist描述子的图像i’。如图2b所示,根据centrist描述子重建的图像与原图很相似,虽然图像的左边有些许错误,但人体轮廓的全局特征仍被很好的保留下来。
图2 从centrist描述子重建的图像
centrist描述子不仅编码了最重要的局部差值符号信息,而且还隐式地编码了人体的全局轮廓信息,所以我们认为centrist描述子可以很好的表达人体轮廓。
c 与hog和lbp的比较
在本节我们将centrist与hog和lbp这两个最常用的人体检测描述子进行对比。
对于分类来说,同类别样本的特征向量应该彼此相似,不同类别样本的特征向量应该不相似。对于任意样本x,计算x与所有其他样本的相似度。设xin是同类别的样本中与x相似度最高的,xout是不同类别样本中与x相似度最高的。s(x,y)表示x与y的相似度,值越大表明相似度越高。很明显,我们希望snn = s(x,xin)– s(x,xout)值是正的并且越大越好。snn是正值表明x被最近邻规则正确分类。因此snn是一个直观并且易计算的评价描述子是否适合分类的标准。
在图3中,我们在inria数据集[1]上对比了centrist(在sobel图上)和hog(在原始图上)。我们使用2416个含人体的正样本,从1218个不包含人体的图中随机截取2436个不包含人体的负样本(每个图上截取2个)。图3a显示了centrist和hog的snn值分布。相似度被归一化到[0,1]之间,负snn值(在黑色虚线的左边)表示被最近邻规则分类错误。很明显centrist的结果都在正确的一边(2.9%错误),而近乎一半的hog结果在错误的一边(46%错误)。图3b进一步表明hog的错误多数都在数据集的前一半,即含人体的正样本部分。
图3a
图3b
在[13]中已讨论过,hog或sift描述子[23]描述的更多是图像的详细局部纹理信息,而不是结构属性(例如轮廓)。我们进一步推测这是由于hog中使用的局部差值大小描述的更多是局部纹理信息。很明显我们也无法从hog或sift描述子重建一个图像。在图3中,hog描述子使用l2范数归一化,相似度s(x,y) = xty;对于centrist描述子,使用直方图交叉核[24]来计算相似度。
centrist描述子和lbp很相似,如果我们将公式(3)中的所有1变为0、0变为1,则修改后的公式就是计算3*3区域的lbp值[25]的一个中间步骤。然而,更重要的区别是lbp值如何使用。人体检测方法中使用统一lbp(uniform lbp)[5][8],非统一lbp放在一起,由于非统一lbp被丢弃了,无法根据lbp描述子重构全局轮廓。此外,[5][8]中对像素值进行了插值处理,使得描述子只能编码模糊过的重要图像信息(相邻像素差值符号)。我们计算了统一lbp描述子的snn分布,有6.4%的最近邻分类错误率,比centrist(2.9%)的两倍还多,但要好于hog(46%)。我们猜想是lbp中不完整且模糊的符号信息对于噪声和局部纹理干扰的敏感度没有hog描述子那么高。
ⅳ快速线性方法和检测框架
鉴于centrist描述子的优点,我们使用它来进行人体检测。使用108*36大小的检测窗口,将检测窗口分为9*4个块(block),每个块的大小为12*9,含108个像素。类似论文[1],我们将每个相邻的2*2个块组成超级块(super-block),并从每个超级块中提取centrist描述子。超级块之间有一半的重叠,所以一个检测窗口内共有共有个超级块,由于每个超级块中ct值(取值范围为[0,255])的统计直方图为256维,所以特征向量的维数是256*24=6144维。由于ct值的计算需要3*3的区域,所以会忽略超级块周围一像素宽的边缘。
a 使用线性分类器进行快速扫描
假设我们已经训练好了一个线性分类器ω∈r6144,我们可以根据对应的超级块将ω分割为小的单元。也就是说,ω可以看做是24个ωi,j∈r256,1≤i≤8,1≤j≤3的串接。对于给定的特征向量为f(同样分割为fi,j)的图像区域,如果满足下式就将其分类为含有人体:
只需要一个积分图来计算公式(9),即节省内存空间又节省时间。实际上,公式(9)计算起来要比公式(7)快3到4倍,并且公式(9)是通用的,可被用来加速其他计算。
这里所描述的方法不包括图像预处理(例如平滑)和特征向量的归一化。事实上,特征提取部分是无缝嵌入到分类器中的。这些特性一起构成了一个实时人体检测系统。
b 检测框架
在训练方面,使用108*36的正样本集p以及不包含任何人体的负样本原图集合n,从n中随机裁取108*36大小的区域得到负样本集合n1,用p和n1训练线性svm分类器h1。然后使用二次训练程序(bootstrap 自举法、自助法)产生一个新的负样本集合n2,也就是用h1在负样本原图n上多尺度穷尽搜索误报的负样本。然后用p和n2训练分类器h2,继续此迭代过程直到负样本原图n中的所有区域都被h1,h2…中的至少一个分类为不含人体。最后使用正样本集合p和所有ni的并集训练最终的分类器hlin。
线性svm分类器可以保证检测速度,但hik核svm分类器可以达到更高的分类精度[17][4]。所以我们再训练一个hik svm分类器,使用hlim在n上自举(bootstrap)出一个新的负样本集合nfinal,使用[27]中的方法训练hik svm分类器,叫做hhik。在检测中,使用有两个节点hlin和hhik的级联方法。
我们将这种方法叫做c4,因为是使用centrist描述子和级联分类器基于人体轮廓信息检测人体:detecting human basedon theircontour informationusing acascadeclassifier and thecentrist descriptor.
c 机器人上的行人检测
我们将c4算法集成到一个机器人irobot packbot上,目的是实现机载行人检测和跟踪。首先利用tyzx g2立体摄像机捕捉图像,然后使用英特尔1.2ghz的酷睿2双核cpu处理图像。我们使用原始图像进行检测,利用距离信息估计到人体的距离,使用粒子滤波进行行人跟踪。最后,向机器人底盘和脖子转轴发出命令进行跟踪。
我们将上面描述的方法和使用立体数据的当前最优方法进行比较。我们用距离图像进行人体位置的假设。使用ransac算法从立体数据中估计地平面的位置,沿着地平线采样深度信息。利用深度信息和地面坐标,可以计算出包含站在给定位置和距离的地面上的人体的包围盒。这个计算出的包围盒大大减少了检测窗口的数量,从而减少计算量和误报率。图4a,4b,4c显示了c4算法的原始检测结果,根据立体数据预测的结果以及c4在预测结果上的检测结果。
图4 机器人上的检测示例。(a)c4算法的原始检测结果,(b)c4结合立体数据的结果,(c)c4结合立体数据处理后的结果。其中的绿线是用立体数据估计的地平面。
在机器人上应用时,c4算法使用了3层节点的级联分类器而不是原来的2层节点(速度更快但精度低)。默认的检测流程如下:检测系统在多尺度空间上进行搜索,每个尺度的每个可能的位置上用分类器判断是否有行人。在缺乏其他信息的情况下,这是唯一可靠的检测方法。然而,当有其他信息可用时,我们应该用这些信息来减少搜索窗口的数目,减少误报率。特别地,我们可以使用从立体摄像机获得的地平面信息。例如,图4a显示了使用c4算法在所有可能的窗口上进行行人检测的结果,产生了很多冗余窗口,没有考虑到在某些位置是根本不可能出现人体的这一事实[28]。行人必须站在地面上,根据这一事实可以限制搜索范围,如图4b所示的c4加立体数据的结果。然后再过滤多余的包围盒,即得到处理后的结果,如图4c(在sectionⅴ-c中有后处理的详细说明)。
ⅴ结果
我们在inria数据集上做了实验,在sectionv-a到v-c中讨论了c4的速度和精度,在sectionv-d中讨论在机器人上的实验结果。
inria数据集中共有2416个正样本图片,1218个负样本原图。我们去掉样本中人体四周的像素,将样本都裁剪成108*36大小。测试时使用暴力搜索查找图片所有可能的位置是否含有人体,对测试图像进行0.8倍的连续降采样,并以步长为2的网格进行扫描。
我们使用dollar的”pedestrian detection:a benchmark”(cvpr2009)[2]中的groundtruth和评价标准。检测到的矩形框rd和groundtruth的矩形框rg之间的关系如公式(10)所示则被认为是正确匹配的:
我们同样遵守[2]中规定的一个groundtruth矩形框最多匹配一个检测到的矩形框的。
a 检测速度
c4能够达到比现有人体检测算法更高的速度。在640*480的20fps视频上,使用单核2.8ghz处理器,现有的最快系统(保证有较低的虚警率和较高的检测率)能达到大约10fps[9],但它是使用了gpu的并行处理。详细的对比结果见表1。
实时处理是很多人体检测应用所必须的特性。我们的系统在一些领域已经可以应用,例如机器人。然而,还有很多可以提升速度的空间,使得c4可以适应更多应用的要求,例如自动驾驶辅助系统。表ⅱ给出了c4系统中不同模块的时间花费,这些模块都对于硬件加速(例如gpu)非常友好。
表ⅱ,各模块花费时间
不需要显式地构造hlin的特征向量并不是使得c4如此快的唯一原因。在inria数据集上进行的测试表明,第一级线性分类器hlin是一个强大的分类器,可以过滤大约99.43%的图片区域,只有不到0.6%的图片区域需要hik核分类器hhik的处理。c4处理inria测试集中的所有图片用了27.1秒,而hog检测器[1]需要2167.5秒(所以c4相对于hog大约有80倍的加速)。
c4在小分辨率的图片上速度更快,在480*360的youtube视频上速度达到36.3fps,在320*240大小的视频上能达到109fps。
b 在inria数据集上的检测精度
图5显示了c4在fppw(false positive perwindow)和fppi(false positive perimage)两种精度指标上与hog的对比。hog用的是论文[1]中的可执行文件,在与其他算法对比时,我们直接使用所发表论文中的精度数值。
图5 c4与hog的精度对比
c4在0.96fppi时能达到83.5%的检测率,与inria数据集上的当前最优结果(state of the art)具有可比性,例如chnftrs[14]和hog-lbp[8],这两个算法在1fppi时都能达到大约86%的检测率。这两个方法中都使用了多特征融合,c4中也可以使用多特征融合来改善效果。c4比hog的检测精度高(在1fppi时是74.4%),并且比[14]和[2]中对比的很多其他方法都要好。
图5b显示了hhik的fppw结果(计算fppw曲线时没有使用hlin)。fppi与fppw并不是线性相关的,但有相似的趋势。在误报率大于10-4(fppi曲线中是0.1)时,c4的结果要优于hog,在较低的误报率时不如hog好,但两者的曲线在最左边会收敛在一起。
c 后处理的重要性
图5中,c4和hog的曲线分别在10-1fppi和10-4fppw处相交,这是由非极大值抑制(nms)引起的。在c4中,如果某个位置检测到的矩形框小于3个,就会将其看做误报。这个要求不会影响正确检测,因为由于滑动窗口步长为2所以真正有人的位置周围往往有很多检测到的矩形框。
较小的移动步长意味着非极大值抑制会大大减少误报的个数,如图6所示,在两幅图像中分别有17个和5个(中间有两个距离非常近)误报窗口,进行非极大值抑制后,第一张图只有1个误报,第二张图中的误报全部消除了(不懂为什么)。
图6 非极大值抑制消除误报
图5a中的hog曲线与论文[14]中的略有不同。在图5a中,hog在所有测试图只有1个误报的情况下检测率为34%,而在[14]中仅为10%。相反,[14]中hog在1fppi时能达到更高的检测率(77%),我们的实验中为74%。虽然不能清楚地知道造成这些差别的原因是什么,但我们认为非极大值抑制和检测窗口的紧缩是重要原因。
在训练时我们使用非常紧凑的108*36大小的窗口,在后处理阶段将检测窗口松弛到120*42大小。在[2]或[1]中使用的过度松弛的检测窗口对于降低误报率是有害的。
d 在机器人上的检测结果
为了更好地了解机器人上使用的联合方法(c4加立体数据),我们在irobot的bedford设备搜集的图像上进行了测试。图7a和图7b显示了详细分析结果,图7a是roc曲线,图7b是precision-recall曲线,其中还有不同级联级别的结果分析。
图7a
图7b
roc曲线表明加入立体信息后误报减少,然而,检测率的峰值小于无立体信息的独立c4,这可能是由于独立c4并不是由在地平线上的人体所训练得来的。precision-recall曲线同样表明在高recall率时加入立体信息precision会增加,同样recall率的峰值不如独立c4高。图中展示了roc和precision-recall曲线在不同级联级别的对比结果,表明了级联分类器对性能的提升作用。
总之,加入立体信息的联合方法有助于减少误报率,增加检测速度。联合方法可以减少60%的计算量,并将漏检率降低5倍。
ⅵ 总结和未来的工作
在此论文中我们提出了一个实时而精确的人体检测器c4,它使用轮廓线索、级联分类器和centrist描述子检测人体。
首先,我们通过精细设计的实验,证明轮廓是人体检测中最重要的信息源,并且相邻像素差值的符号是编码轮廓的关键。centrist[13]特别适合人体检测,因为它简洁的编码了符号信息,并且可以捕获全局轮廓信息。
本文的主要贡献是快速人体检测,c4可以在640*480的图像上只使用一个处理线程达到20fps,并且达到与当前最优的检测精度可比的精度。
centrist不需要耗时的预处理和特征向量归一化操作,并且,使用线性型分类器和centrist,我们不需要显式生成特征向量,只需要o(1)时间来表示一个图像块。
当前c4的检测精度不如[8]和[2]中描述的方法,然而,通过使用[8]和[2]中的多特征融合方法,c4也可以改善检测精度。此外,c4对于硬件加速非常友好。
最后,我们在配备intel酷睿2双核1.2ghz cpu的机器人irobot packbot上,将c4与立体视觉信息融合,在不影响机器人其他功能的前提下达到了精确的实时人体检测效果。
论文下载:[2011 icra]real-time human detection using contour cues
南京大学吴建鑫教授的主页:,其中可下载c4的源码
什么是微型控制电机
联创电子2019年的经营目标是实现营业收入65亿元
基于LM7815的简单实验室电源电路
NB-IoT成为5G三大应用场景中mMTC的核心技术
华为平板升级Android7.0,业界良心,国内首款升级Android7.0平板,EMUI5.0告别卡顿
C4对人体轮廓检测的精度的实验分析与实验结果
Linux之父 活着的传奇人生
蓝牙技术还存在许多不足之处,但为什么它依旧长盛不衰
MAX1677构成的电源变换电路
稳压器封装概述
物联网发力,为智能终端带来新一轮发展浪潮
未来受到AI领域发展影响很大的3个行业浅析
3GPP计划在2021年实现5G可穿戴,多播和60GHz标准
RC振荡器电路网络角和图及公式
核医学成像设备分类、特点及核医学成像过程简介
Two Bit Circus建造的VR未来游乐园,即将开业
QLM量子气体激光雷达在甲烷连续监测试验中取得成功
杭州将全力助力萧山打造成为全国5G产业发展高地
realme不再全球首发125超级快充?
神秘而复杂的漏洞披露程序阻碍了安全性