1.3 国内外基于视觉的行人检测技术的研究现状
基于视觉的行人检测目前仍旧是计算机视觉领域内一个很具有挑战性的课题,原因在于以下几点。
(1)行人姿态变化万千:可能会站立、行走或者奔跑等,在行走时可能会不可预测地改变运动方向。
(2)行人的服饰多样化:穿着各种款式、颜色的衣服,而衣服的颜色有时很容易和背景混淆,行人可能戴着帽子、挎着背包等。
(3)行人所处的背景非常复杂:包括建筑物、移动或停泊的车辆、道路标志牌和信号灯、电线杆、树木等,有些背景的形状与行人也很相似。
(4)运动状态的摄像机:这是由于其特定的应用领域决定的,这样广泛应用于智能监控领域中检测动态目标的方法便不能直接使用。
(5)算法的顽健性和实时性要求:行人检测面临的是一个开放的环境,要考虑不同的路况、天气和光线变化,这些对算法的顽健性提出了很高的要求,另外实时性也是系统必须满足的,这就要求采用的图像处理算法不能太复杂。
基于视觉的行人检测通常分为两种模式。第一类检测方法分成以下两个步骤:感兴趣区域分割(ROI, Regions of Interest)和目标识别阶段。感兴趣区域的分割是用粗略的检测方法从图像中快速分割出所有可能含有行人的候选区域,而后续精确的目标识别都在这些候选区域中进行,从而大大减少了所需处理的数据量;第二类方法对行人的检测在一个阶段内完成,用不同大小的窗口遍历整幅图像,对所有的窗口进行检测,判断其是否为行人。出于实时性的需要,本文采用基于感兴趣区域分割和目标识别的两阶段检测方法,避免了穷尽搜索,提高系统的速度。下面分别从这两个方面来介绍一些常用的检测方法。
1.3.1 感兴趣区域分割
感兴趣区域分割是行人检测的第一阶段,其目的在于剔掉一些明显不具备行人特征的检测窗口,缩小目标识别阶段的检测范围,从而大大减少了所需处理的数据量。根据分割所用的信息,可将ROI分割的方法分为基于运动信息、基于距离信息和基于图像特征信息三种方法。各种方法具有不同的约束环境,在实际系统中,也可以将各种方法结合在一起使用,彼此互补。
(1)基于运动信息
运动信息是在一个场景中检测感兴趣区域的常用线索。它主要使用了图像序列的时域信息。同样由于摄像机运动的原因,基于图像差分的方法很难直接用于智能汽车的行人检测。大部分基于运动信息的区域分割算法都是使用基于光流分析的运动检测来进行行人候选区域的分割。
光流(Optical Flow)是指时变图像中模式运动的速度。因为当物体运动时,它在图像上对应点的亮度模式也在运动。这种图像亮度模式的表观运动(Apparent Motion)就是光流。光流表达了图像的变化,包含了目标运动的信息,因此可用来确定目标的运动情况。由光流的定义可以引申出光流场,它是指图像中所有像素点构成的一种二维瞬时速度场,其中的二维速度矢量是场景中可见点的三维速度矢量在成像表面的投影。光流场的不连续性可以用来将图像分割成对应于不同运动物体的区域。首先在图像中计算表征相邻帧间像素运动的光流场,然后根据光流场估计出摄像机的主运动,最后通过分析光流场中与主运动不一致的光流,检测出障碍物。
例如,Stein等[41]首先利用光流法估计车的运动,补偿车辆的运动后再利用时间差分从而得到运动物体。Heisele等[42]根据行人走路时腿部周期性的运动特征,从彩色序列图像中对运动的行人进行检测和识别。它首先对每幅图像依据其颜色特征进行聚类分块,然后采用实时立体算法检测和跟踪可能包含行人的图像区域,最后基于行人腿部的特定运动模式使用时滞神经网络的分裂式聚类算法来对行人进行分类。这种方法要求假设行人的双腿必须是可见的,而且只能检测运动的行人,对于静止行人的检测是失效的。Bregler[43]的分析基于相同颜色像素小区域的连贯运动,每个像素点都被赋予了一个属于某给定小区域的可能概率,而且每个小区域的移动都被按照运动的概率模型进行分类以准备下一阶段的行人识别。
基于运动信息来获取ROI的方法的优点是不受行人姿态的影响,顽健性较好。缺点是只能检测运动的行人。所以目前主要应用在智能监控领域,在智能汽车系统中往往只作为一个辅助的手段[44]。
(2)基于距离信息
基于距离信息的方法是通过测量目标到智能汽车的距离来获取ROI。一般可以通过立体视觉来完成基于距离信息的ROI分割。20世纪80年代初期,Marr[45]提出了一种视觉计算理论并应用在双眼匹配上,使两张有视差的平面图产生有深度的立体图形,奠定了双目立体视觉发展的理论基础。立体视觉是仿照人类利用双目线索感知距离的方法,实现对三维信息的感知。在实现上采用基于三角测量的方法,用两个或多个摄像机对同一景物从不同位置成像,并进而从视差中恢复距离。
Zhao等[13]利用基于立体视觉获得的视差图像对目标区域进行分割,然后将子目标候选图像合并和分离成满足行人尺寸和形状约束的子图像,最后将所有探测到的可能含有行人目标的矩形区域输入到前馈神经网络进行行人的识别。
Liu等[46]结合了运动信息和距离信息来获取行人的ROI。首先基于立体视觉获取图像的视差图,然后根据连续图像帧的视差图,可以获得图像中运动物体的分割,最后通过基于形状特征的分类器对ROI进行识别,剔除其他移动目标(如车辆等)。相关的实验结果表明了该算法的有效性。
基于距离信息的ROI的分割算法的优点是受行人姿态变化的影响较小,受周围环境、光照等条件的影响也不大,但是由于需要额外的设备,增加了系统的成本,同时计算量也相应增加,不利于满足系统实时性的要求。
(3)基于图像特征信息
基于图像特征信息来获取ROI的方法是指通过检测与行人相关的图像特征从而得到ROI。对于一般的可见光图像来说,常用的特征包括行人的形状轮廓特征、局部区域的熵和纹理等,如Broggi等[47]提出将图像中的垂直对称性与站立行人(运动或静止)的候选区域关联起来。进一步的信息从对称图的水平边缘及每列的数目得到。然后用一个边界框将感兴趣区域封闭起来以用于一个独立的识别步骤。Curio等[48]提出了一个更复杂的系统,该系统使用一个由局部图像熵组成的激活域。一个有着Λ形状的基于模型匹配的模板被用来代表行人的双腿,通过逆投影映射(双目视觉)来得到短距离域。得到的信息被组合进时间动态激活域以进行后续的分析。再如Shashua等[44]将图像的纹理特征引入ROI的检测,将图像中缺乏纹理、或者位置和尺寸不满足先验知识的区域剔除,将剩余的区域作为ROI使用。
对于红外图像来说,主要根据人体尤其是人脸的温度比周围环境温度较高这一特征,通过检测一些热点(Hot Spot)来得到ROI。例如,Xu等[49]提出根据红外图像中的热点获取ROI,然后利用支持向量机的方法对行人候选区域进行分类,最后结合卡尔曼预测估计和Mean-shift算法对行人进行跟踪。另外,Bertozzi等[50, 51]提出了利用红外立体成像对行人进行检测,由于传统的CCD摄像机采集的图像易受光照的影响,对图像中目标的识别变得困难,且在夜晚、雨天或有雾的天气情况下根本无法使用。而红外成像基本不受上述因素的影响,同时依据人体的特殊形状及对称性的特征,可排除其他物体如车辆干扰,利用双目系统同时还能获得行人的距离信息。
基于图像特征信息获取ROI方法的优点是直接利用了图像信息,不需要额外的传感器。缺点是由于智能汽车的应用环境复杂多变,很难定义每种场景都适合的特征信息。
1.3.2 目标识别
经过感兴趣区域分割从原始图像中得到可能含有行人的一些小区域后,目标识别的目的就是从这些小区域中找出真正的行人。根据利用信息的不同,目标识别可以分为基于运动信息的识别和基于形状信息的识别两种方法[52]。
(1)基于运动信息的方法
基于运动信息的识别方法指通过分析人运动时的步态(Gait)特征来识别行人。行人步态的周期性是识别行走中行人的非常有用的线索。特别是在视觉方向上横向移动时,步幅一般平行于摄像机平面而且特征比较明显,这样就提供了一个有效的方法来减少之前感兴趣区域中的误检。
一些系统通过对图像区域进行频率分析来提取行人的步态特征。提取的步态特征经过分类器或简单阈值化(类似于带通滤波器的处理方法)的统计方法做出最终的判断[53, 54]。Cutler等[55]首先将t时刻图像与在t-τ时刻同样稳定的图像相减,通过选择合适的阈值,得到代表运动目标像素点的映射图。通过跟踪感兴趣的运动目标,计算出目标随着时间变化的自相关特性,然后使用一个带有Hanning窗函数的短时傅里叶变换来分析得到的相关信号,进而识别出行人。Curio等[48]提出了一种综合步态和统计分析的方法。在感兴趣区域内跟踪行人的躯干部位,根据人体各部位之间的位置关系,对躯干部位的底部进行运动分析,得到关于腿部的运动特性。两条腿的粗糙模型包括两条棒状的部分,在膝盖处有连接,并列在跟踪得到的躯干部位下方的图像区域中。将周期性的运动检测与从行人步态周期的统计平均中得到的实验曲线进行相关,相关函数曲线的顶点处就表示有行人的存在。Wohler等[56]提出将一个执行局部时空处理的自适应时间延迟神经网络算法用于对图像序列进行分析,以识别典型的运动模式。在该方法中,行人在一个完整步态周期中的形状通过网络学习得到。
基于运动信息的目标识别算法,具有较强的顽健性,不受行人纹理特征和环境光照变化的影响,但该算法也常常依赖于一个清晰的行人侧视图,因此经常用于对车辆前方横穿马路的行人进行检测。另外,应用该算法是无法检测到静止的行人的。
(2)基于形状信息的方法
通过分析目标的灰度、边缘和纹理等信息来对目标进行识别。基于形状信息的方法的优点是不需要考虑图像序列时间域的信息,可以检测出静止的行人,但是缺点是容易产生大量的虚警(False Poisitve)。现将基于形状信息的行人识别方法进一步细分为基于模板匹配(Template Matching)的方法和基于统计分类(Statistical Classification)的方法。
① 基于模板匹配的方法
该方法使用预先定义的行人类别的模板与感兴趣区域进行比较,通过度量模板与感兴趣区域之间的距离来检测出真正的行人。不同的文献对模板的定义不尽相同,有的松散,有的严格。基于模板匹配的算法的优点是计算简单,缺点是由于行人姿态的复杂性,很难构造出足够的模板以处理不同的姿态,因而算法的不确定性较高。基于模板匹配的典型算法是由Gavrila[57]提出的两阶段行人检测算法,该算法已经应用于PROTECTOR项目的UTA(Urban Traffic Assistant)系统中。第一阶段是基于轮廓特征的分层匹配,有效地获取行人目标。系统中使用了大约2 500个轮廓模板,这些模板可以是参考模板的几何变形或者行人常表现的轮廓形状。为了解决众多模板引起的匹配速度下降问题,Gavrila采用了由粗到细的分层搜索策略以加快搜索速度。匹配的时候不是直接计算模板与原始图像的距离,而是首先对原始图像进行距离变换(DT, Distance Transform),然后再计算模板与经过距离变换之后的图像之间的Chamfer距离。采用DT图像而不是原始图像计算距离的好处是,得到的距离测度是模板变换参数的平滑函数,方便了快速搜索。算法的第二阶段,对模板匹配成功的区域提取其亮度信息,运用径向基(RBF, Radial Basis Function)函数对其进行进一步的验证。再如Broggi等[47]和Beymer[58]等对头和肩膀使用了一个Ω模板。这种方法对比例变化很敏感,所以需要不同比例的多个模板。在这两个系统中,分别使用了按照距物体不同的估计距离从粗糙到精细分辨率的3和5个不同的模板。Fujiyoshi和Lipton[54]使用了一个提取骨架的过程来表示之前检测到的前景物体的形状。对每个物体,首先计算该区域的质心,然后计算每个边界点距离质心的距离。距离函数的局部最大值就被作为骨架的外部点。
② 基于统计分类的方法
基于统计分类方法的原理是从一系列反映行人不同外观的训练图像(通常也会有一些非行人的训练图像用以改善性能)中学习行人的特征从而用于检测。首先,每幅训练图像被一系列局部或全局的特征表示,接着行人和非行人的判决边界通过训练的分类器或每类特征的概率分布模型来学习。基于统计分类的方法的优点是适用范围很广,顽健性强,缺点是需要很多训练数据,并且很难解决姿态变化和遮挡的问题。基于统计分类的方法主要包括两个步骤:特征提取和分类器设计。特征提取的基本任务是如何从许多的特征中找出最有效的特征。一般针对小样本集,用很多的特征进行分类器设计,无论从计算的复杂度还是分类器的性能来看都是不适宜的。因此降低数据的维数,得到能反映模式本质属性的特征,方便后面的分类是特征提取阶段的重要任务。分类器设计属于机器学习领域的范畴,其目的是得到一个计算复杂度较低,并且推广性较好的分类器。针对行人识别问题,可根据分类器的设计方法将现有的基于统计分类的方法分为基于神经网络(NN, Neural Networks)的方法、基于支持向量机(SVM, Support Vector Mechine)的方法和基于Adaboost的方法[52]。
神经网络对外界输入样本具有很强的识别与分类能力。对输入样本的分类实际上是在样本空间找出符合分类要求的分割区域,每个区域内的样本属于一类。神经网络可以很好地解决对非线性曲面的逼近,因此比传统的分类器具有更好的分类与识别能力[59]。神经网络已经成功地应用在模式识别领域中的光栅字符识别和人脸检测上,它在行人的检测上也有广泛的应用。例如,Zhao等[13]利用基于立体视觉获得的视差图像对目标区域进行分割,然后将子目标候选图像合并和分离成满足行人尺寸和形状约束的子图像,最后提取候选图像的梯度信息作为特征训练,得到一个三层的前馈神经网络用于行人的识别。采用梯度信息而不是原始灰度图像或者二值图像作为特征的原因是为了消除光照的影响,同时避免二值化时阈值的选择问题。又如Szarvas等[60]采用卷积神经网络(Convolutional Neural Network)训练得到行人检测分类器。卷积神经网络可以避免显式的特征提取,而隐式地直接从训练数据中进行学习,通过结构重组和减少权值将特征提取功能融合进多层感知机(MLP, Multi-Layer Perceptron)。系统能够通过自动优化检测过程中的特征来获得高准确度并自动调整网络,网络输入直接为行人样本的灰度图像。
支持向量机(SVM)是在统计学习理论的基础上发展起来的一种新的模式识别方法。在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势。传统模式识别理论认为,分类器的识别能力可以用样本训练中得到的经验风险来衡量,即只要经验风险足够小,那么对未知数据识别时所产生的实际风险一定也小。支持向量机理论却认为[61],分类器对未知数据进行分类时所产生的实际风险不是由经验风险单独决定的,而是由两部分组成:一部分是训练时得到的经验风险(如果经验风险很小,而实际风险很大,就叫过学习问题);另一部分称作置信范围,它和分类器的VC维及训练样本数有关。支持向量机使用结构风险最小化准则来选取VC维,使每一类别数据之间的分类间隔最大,最终使实际风险最小。所以基于结构风险最小化的SVM分类方法,相比较基于经验风险最小化的神经网络方法具有更好的泛化能力。
SVM被广泛地应用于模式分类问题,在行人检测方面也有许多成功的应用。例如,Mohan等[62]提出了一个基于部位(Component-based)的行人检测框架,通过用部位检测器在单帧图片中检测人体。行人检测系统由4个部位检测器和一个装配检测器组成。4个部位检测器分别为头部、腿部、左臂和右臂检测器,部位和装配检测器都是基于Haar小波特征,采用SVM方法训练得到。实验结果显示这个系统的检测性能明显优于单个检测器,它能够检测出部分被遮挡的行人和某些部位跟背景对比度低的行人,如Cheng等[39]利用稀疏Gabor滤波器提取行人样本中的特征,然后利用SVM方法来训练分类器进行行人检测,Dalal等[63]提出了一个在单帧图像中用面向梯度的直方图描述子为特征以SVM为训练方法的行人检测算法。这种新方法对原始的MIT行人数据库[64]得到了接近完美的检测效果。
Adaboost是一种分类器组合的策略,其基本思想是利用大量的分类能力一般的弱分类器通过一定的方法叠加(Boost)起来,构成一个分类能力很强的强分类器。Adaboost得到的分类器具有较好的推广性能,现在广泛地应用于模式识别和计算机视觉领域。最早将Adaboost应用到计算机视觉领域的是Viola等人,他们提出基于Haar-like特征和Adaboost的层叠人脸检测器,成功地实现了第一个实时人脸检测系统[65]。Viola后来将该方法应用到了监控系统的行人检测上[66],该方法同时利用连续两个图像帧的信息,提取训练样本关于外貌和运动信息,从而实现了监控系统中的低分辨率的行人检测。从Viola开始,基于Adaboost的分类算法受到越来越多学者的重视,提出了许多针对该算法的改进方案,其中也有部分被应用于行人检测领域,如Wu等[67]采用Edgelet特征集描述行人的轮廓,提出了一个基于部位的行人检测方法。利用改进的Adaboost算法分别训练3个部位(头部、躯干和腿部)分类器和1个人体训练器。最后将得到的部位检测器响应值利用联合似然概率进行融合。他们的集成检测方法对单个人体的检测效果很好,而且能够处理人群拥挤的场景。除了方便快速计算的类Haar特征外,SIFT(Scale Invariant Feature Transform)特征[68]由于其尺度不变的良好特性,与Adaboost的结合也越来越受到学者的重视。Mikolajczyk等[69]将人体分成7个部分,针对每一个部件利用类SIFT特征和Adaboost建立起一个检测器,然后将检测结果利用概率图模型进行融合从而识别站立的行人。Zhu等[70]对Dalal提出的梯度直方图描述子特征进行了改进,并且将其引入Adaboost层叠分类器的检测框架下,显著提高了行人检测的速度。
基于统计分类的方法尤其是SVM和Adaboost算法,顽健性较强,近几年被广泛地应用于文本分类、自然语言识别、图像检索和行人检测等领域。但是,上述提到的统计分类算法都是基于离线学习的,分类器的学习需要大量的训练样本,这些样本大多是通过手工标识得到的,标识样本是一项耗时且代价昂贵的工作,特别是对于行人检测工作来说更是如此。另外,离线方式生成的分类器参数固定,不能随着场景和样本的变化进行更新。针对上述问题,近几年人们开始研究基于在线学习的统计分类方法。例如,Tax等[71]提出了基于SVM的在线学习算法,将该算法用于非监督的学习,解决了人工标注样本的问题,Oza等[72, 73]提出了基于Adaboost的在线学习算法,分类器中的弱分类器根据当前的训练样本依次地完成在线更新,当前样本学习结束后不再保存,随着样本数目的增多,分类器的性能得到提高。Oza在文章中证明对于相同的训练样本集,基于在线学习的Boosting分类器,其性能渐进于离线方式得到的分类器。Huang等[74]提出基于Domain-Partitioning型弱分类器的Real Adaboost在线学习算法,并将其用于人脸检测,得到了良好的效果。