董秀娟,兰建平
(1.湖北汽车工业学院电气与信息工程学院,湖北十堰,442002;2.湖北汽车工业学院汽车工程师学院,湖北十堰,442002)
行人检测( Pedestrian Detection)是利用计算机视觉技术判断图像或者视频序列中是否存在行人并给予精确定位[1]。行人检测需要解决的问题是:找出图像或视频中所有的行人,包括位置和大小,用矩形框表示,和人脸检测类似,它是一类特殊的目标检测问题[2]。因行人表观和姿态变化多样化,行人检测难度比人脸识别,车牌检识别的难度要大。关于智能汽车的行人检测,可以采取多种方法,与当前常用于智能汽车上的传感器(激光扫描雷达、相控阵声纳、毫米波雷达等)相比,光学视觉信号具有目标完整、检测范围宽、成本低、更符合人们的认知习惯等优点,因此计算机视觉在智能汽车障碍物检测中的应用显得越来越重要。对行人进行检测能有效辅助驾驶员及时对外界环境做出反应,避免碰撞行人,这对于保障现代城市道路交通安全具有重要的作用,已经引起了各国政府部门和相关研究机构的高度重视。
针对车载行人检测系统存在系统鲁棒性和实时性的要求,智能汽车行人检测技术重点包括两个工作:⑴感兴趣区域分割,实际系统中结合基于图像特征信息来获取基于区域候选框ROI[3](Region of Interest)的方法。⑵目标识别,原始图像经过感兴趣区域分割得到可能含有行人的区域,然后再从这些区域中找出真正的行人[1,4]。另外介绍两种行人检测方法:利用经典的HOG+SVM[5]检测算法做行人检测;在深度学习YOLOv3算法框架下实现行人检测,并分析两种方法的优缺点。最后展望复杂城市交通环境下行人检测技术目前面临的困难和亟待解决的问题。
为了找到每个行人在视频中每帧的精确位置,行人检测算法根据对行人描述方法不同进行分类。如图1所示,基于形状模板匹配的检测方法,通过部位检测器在单帧图片中检测人体。这里用到 5 个部位检测器(行人的头部、躯干、四肢)和一个装配检测器组成,它们都是基于Haar小波特征,采用支持向量机(support vector machine, SVM)方法训练得到,然后从上到下分层次进行匹配,最后和基于背景建模得到的前景图像进行形状匹配,在检测行人的同时将其大致形状从背景中分割出来。基于部件检测的方法在一定程度上可以克服局部遮挡带来的问题,使用该方法时,经常与HOG等特征结合使用,以提高检测性能。
图1 人体五个部位的检测区域定义示意图
梯度方向直方图HOG[6](Histogram of Oriented Gradient)特征成为最近一个主流使用的特征。已有实验证明融合多种能够描述人不同特点的特征,能够获得更多比仅利用单一特征类型的检测性能。
目标识别的目的是找到图像中的行人和行人的具体位置,并从中过滤出真正的行人。目标识别的方法:⑴将摄像机拍摄的图像简单的分割成左上角、右上角、左下角、右下角四个部分;⑵增加图像分割的数量;⑶为了更有条理的创建一个行人检测系统,将图像划分成10×10的网格,定义分割后每个块的中心,对于每个中心,取三种不同长宽比例的块组合;⑷优化系统来提高效率;⑸增加网格的数量,将原来的10×10网格的数量提高到20×20,从之前的3个块增加到更多不同长宽比的块,在同一个中心上取出9个块;⑹将深度学习运用到目标识别中,将原始图像输入到神经网络中来降低维度,使用神经网络来检测所选择的预测块,使用强化深度学习算法,确保算法能够提供更加精确的边界框预测。
梯度方向直方图(Histogram Of Gradient,HOG),通过检测局部物体的梯度和边缘方向信息得到被检测物体的局部特征,是一种使用广泛的行人特征表示方法。使用HOG + SVM进行行人检测时, 从数据集读入正样本(行人)和负样本(非行人, 比如汽车, 树木, 路灯等),计算HOG特征,根据采集到的HOG特征向量,提取HOG特征,然后送入SVM训练,得到行人检测模型,进行行人检测。
YOLO(You Only Look Once)目标检测算法是 Redmon 等[7]在CVPR2016 上提出的一种全新的遵循端到端深度学习的目标检测算法,它能够提升小目标检测的精度。近几年Redmon又提出了YOLOv3 目标检测算法。YOLOv3检测算法将对象检测重新定义为一个回归问题,YOLOv3 算法将一幅输入图像分成 13×13块,在每一个小块上预测 3个目标的边界框,每个边界框使用四个描述符:边界框的中心、高度、宽度、值映射到对象所属的类进行描述。YOLOv3 引入了多尺度融合的方法,目标边界框参数的计算方法如图2所示。
每个边界框的中心点坐标均为相对于其对应的cell左上点坐标的偏移,注:(bx,by,bw,bh)为预测的边界框在特征图中的中心点坐标和长宽;(tx,ty,tw,th)为网络学习的相对于先验框的偏移量;(cx,cy)是各个单元的左上角坐标;Ph, Pw为先验框相对于特征图的长和宽。
本文的实验环境:Intel Core i7-7700k CPU, NVIDIA GeForce GTX 1070,16GB内存,编程语言是anaconda+ pycahrm python。HOG+SVM行人检测用的数据集是INRIA;YOLOv3行人检测用的数据集是coco2007。
图2 YOLOv3目标边界框参数的计算方法
下面在多个视频序列上做行人检测测试,Positive目录中有2000个正样本,Negative目录中有5000个负样本,TestData目录中有179个样本。图3(a)是原始测试图片,窗口宽高为64×128;图3(b)是用自己训练的检测器,HOG+SVM的检测结果,速度比较慢,但是在没有遮挡的情况下识别效果较好;图3(c)是YOLOv3框架下基于深度学习的行人检测结果;图3(d)1YOLOv3检测时出现了误检,把视频中宽高比接近0.4的树当做行人;图3(d)2两个行人遮挡超过50%,YOLOv3检测时,只出现一个检测框,不能把单个的行人一一标注出来;图3(d)3 HOG+SVM做检测时,把墙上的人物广告当成真正的行人标注出来了,假行人容易误检,后期需要增加负样本的数量;HOG+SVM做行人检测时不能处理关于遮挡的问题。为获得比较好的检测效果,这里采用多特征融合的方法以及级联分类器;为解决速度问题,采用了背景差分法的统计学习行人检测。该实验结果表明基于深度学习的算法,使用YOLOv3目标检测框架,能够提高行人检测的精度。
图3
关于智能驾驶行人检测,许多汽车厂家、大学和研究机构都做了有益的尝试,到目前为止还没有一个通用的行人检测算法能够在任何场景下检测出行人来,许多算法和模型要么过于简单而不能普遍采用,要么过于复杂难以在实际中应用[8]。行人检测技术只能“具体问题具体分析”,该领域的相关先验资料特别重要(比如监控系统中的固定背景,车辆辅助驾驶中的路面信息,交通标志等)。对于智能汽车的行人检测技术研究目前拟解决的关键问题主要有:⑴ 行人的着装、姿态、外界环境变化较大。在城市交通环境下,运动或停留的车辆、交通标志、信号灯等物品都增大了从背景中分割出感兴趣区域的工作量。⑵ 遮挡问题。在很多应用场景中,行人密集,存在严重遮挡时,要想把行人一个个检测出来,这需要对现有的算法大幅改进。⑶行人检测一般采用了复杂的模型,运算量大,要达到实时非常困难,一般需要大量的优化。随着行人检测研究的深入,检测方法的不断完善, 可以预见未来道路交通安全问题会得到很大的改善。