基于YOLO和GMM的视频行人检测方法

2019-06-25 08:03李俊毅仝小敏
中国电子科学研究院学报 2019年3期
关键词:虚警边框行人

李俊毅,高 斌,仝小敏,李 鹏

(1.西安电子科技大学,陕西 西安 710071;2.中国电子科学研究院,北京 100041)

0 引 言

随着计算机硬件技术(例如GPU、高清摄像头等)和软件技术(例如并行计算库CUDA、图像处理库OpenCV)的快速发展,视频行人检测的速度越来越快,然而要想达到较高的检测准确率仍然很困难。因此不管是学术界还是商业界,视频行人检测都是研究和应用的一个热点。

传统的运动目标检测方法包括背景差分法、帧间差分法、光流法等,这类方法[1-4]的主要目的是从视频中提取出运动目标的特征信息,如颜色、形状、轮廓等。这个提取运动目标的过程实际上是一个图像分割的过程,而运动物体只有在连续的视频图像序列中才能体现出来。其主要原理是分析运动目标相对于背景图像的差异,确定运动目标所在的位置。针对视频运动目标检测这个特定的应用,仅仅利用目标运动信息并不能精确定位目标,尤其是目标之间有交叠、部分遮挡等情况下,无法区分不同的目标。

深度学习是人工智能领域[5]中一种基于对数据进行表征学习的方法,在自然图像分类、通用目标检测、语义分割等计算机视觉领域取得了突破性的成绩并逐渐应用于工程实践。将深度学习用于视频运动目标检测的方法[6-8],能够有效描述目标外观、结构、色彩等视觉特征,从而检测定位目标。基于监督的深度学习可以通过对具有标签的数据集进行训练,从而获得分类检测的能力。这类方法的局限性在于没有利用目标运动信息,当检测阈值设置较低时,会对一些形似目标的静止物体产生虚警误判,当阈值设置较高时,又可能出现漏检的情况。要达到阈值和准确率两者的平衡,势必要损失某一参数性能来提高另一个参数,并且过于依赖人为设定参数。

将深度学习方法和传统视频运动目标检测方法相结合,利用深度学习方法对行人目标准确、全面的外观描述的同时,挖掘行人目标的运动信息,利用运动信息去除深度学习方法产生的虚警目标,以期提高行人检测准确率。运动检测采用背景建模法中比较成熟的混合高斯建模法GMM[9],深度学习采用YOLO深度神经网络模型[10-12],实现行人与背景的二分类。

1 基于YOLO和GMM的视频行人检测方法

本文算法流程如图1所示。首先利用公开数据集训练YOLO行人检测模型参数,利用视频第一帧背景图像进行GMM背景建模。然后将原始图像分别输入GMM模型和YOLO模型,分别获得两种检测结果。结合GMM运动检测结果限定YOLO行人检测结果的位置,设置阈值保留融合结果较好的结果,利用该方法可以有效地利用运动信息去除场景中的虚警信息。

图1 基于YOLO和GMM的视频行人检测流程图

1.1 GMM运动目标检测

采用基于混合高斯模型的背景差算法对当前帧图像进行运动前景提取,得到的前景图记为I。表示一个权重为w的单高斯模型,假设对图像中坐标为(x,y)的点处混合高斯模型为Model={,i=1,2,...,num} (num表示混合高斯模型所包含的单高斯模型的数目),那么前景提取公式如下:

(1)

式(1)中,I0为当前 输入原始图像,θ为前景提取阈值,可以为固定阈值,也可取为自适应的(如取所有权重中的次小值)。

这里使用OpenCV自带的BackgroundSubtractorMOG算法,实验中设置5个高斯分布混合对背景像素进行建模,阈值使用默认值,颜色在视频序列中存在的时间长短作为混合的权重,得到对应的二值图。使用OpenCV中的threshhold工具获取核大小,实验中设置为25,再使用dilate工具进行膨胀处理,迭代次数设置为2。

1.2 YOLO行人目标检测

YOLO-v3利用整个深度卷积神经网络学习特征来检测和分类目标,特征提取层达到了53层深度,但由于引入了残差网络(Residual Net)结构,使得精度提升比较明显的同时并不会影响训练难度和网络速度。YOLO-v3算法的基本思想是:使用特征提取网络对输入图像提取特征,得到S*S*B*(5+C)维特征图(feature map),对应于将图像分成S*S个栅格(cell),每个栅格都会对目标预测B个大小不一的边框(bounding box),包括目标位置信息tx、ty、tw、th和置信度p0(该边框有目标存在的得分),以及该目标分别属于C个类的得分。如图2所示:

图2 特征图向量构成

为了避免在训练时直接预测边框而导致梯度不稳定,YOLO-v3不直接回归目标的绝对中心坐标和宽高,而是使用k均值(k-means)聚类算法对训练集计算了k组边框的宽pw和高ph,称作锚点框(anchor box),再通过式(2)转换为预测目标的中心坐标和宽高,式中cx和cy是该栅格左上角的点在图片中的坐标,bx、by是预测目标边框的中心坐标,bw、bh是边框的宽高。由于sigmoid函数值域的特性,可以保证预测目标边框的中心坐标始终在它对应的栅格中,而引入指数则能保证宽高不为负数。

(2)

坐标转换示意图如图3所示,在训练中,将预测值做转换后得到以白点为中心坐标的预测边框,期望其与真实边框(ground truth box)尽可能相似,每个真实边框只匹配一个IOU最大的预测边框。

图3 坐标转换图

YOLO对每个预测边框给出是否存在目标的置信度预测,这个值同样经过sigmoid函数,使得输出约束在0到1之间,以此表示存在目标的概率。对于C个类别概率,YOLO-v3摒弃了Softmax和全连接层的方法,转而直接使用sigmoid回归概率,这样做可以有效地保证有层次关系的类不相互排斥,比如女人和人类这样有包含关系的类别依然可以同时分类。

图4为本实验中一组特征向量示意图,为方便展示,我们将参数取整,栅格数简化。这里我们将原来针对COCO数据集的80类检测模型修改为针对人类的检测模型,所以类别检测参数只有p1。

图4 特征向量示意图

针对视频行人目标检测的应用场景,我们对YOLO-v3的网络模型做了一些优化。修改网络读入图片尺寸,从416×416改为到480×480,有助于使网络训练更加精确。将第97层和第36层融合改为第97层和第11层融合,可以增加细粒度特征,目的是提高对小目标的检测精度。利用k均值算法计算了更加符合训练集的预定义锚点框,加速训练收敛的速度。

1.3 融合检测

YOLO算法对所有可能的目标都给出属于某个类的概率以及预测框的左上角坐标和宽高,其中包括背景中形似人的虚警目标,当虚警目标和人相似程度较高时,其概率和真人比较接近,只通过手动设置阈值的方式无法有效地排除所有虚警信息。而GMM算法由于是基于像素样本统计信息的背景表示方法,可以有效地检测出运动目标。

(1) 如式(3),当边框左上角坐标和宽高差值都在某一阈值α内时,则认为该物体是真实目标。当四个差值至少一个至多三个满足在某一阈值内时,依然认为可能有真实目标,进入下一步判断,实验中α取20;

(3)

(4)

(3) 如式(5),GMM和YOLO边框的面积为Yi,Gi,计算它们的交集占各自面积的比例Ai,Bi,至少一个大于某一阈值β则认为是真实目标,实验中β取值0.8,除此之外的结果都认为是虚警目标。计算方式如下:

(5)

图5 可能出现的边界框情况

2 实验结果和分析训练数据

为了提高模型的检测和分类准确度,需要提供大量带标注的图片训练网络模型。我们使用两个比较主流的开放数据集PASCAL-VOC和COCO进行模型训练,这两个数据集的优点是已经有人工标注好的目标位置和类别信息,并且一张图片中可能出现多个类别且大小各异的目标,非常适合用来训练检测网络的模型参数。PASCAL-VOC包括20个种类,COCO包括80个种类。我们筛选出了这两个数据集中所有的包含有人物的图片,并制作了只包含人物标注信息的标注文件和训练列表文件,得到含有75000余张人物图片的训练集。对训练集进行了126000次迭代训练得到实验中用到的权重。

2.1 实验数据

为了测试本文方法对去除虚警信息的有效性,我们选择分辨率较低,光照强弱影响较大,目标存在遮挡重叠,以及带有虚警目标的场景做测试。实验数据来自CAVIAR项目的测试用例场景,可以在如下链接找到http://homepages.inf.ed.ac.uk/rbf/CAVIAR/。该测试集提供了某购物中心过道的多组监控视频数据及标注信息,其中包括行人购物、相遇、进出商店等26组视频。视频分辨率为384*288,每秒25帧。我们以每段视频的第一帧图像做GMM背景建模,随机抽取10帧图像,共260个测试样本。

2.2 评价指标

以三个指标来评价实验结果,分别为AIOU(Average Intersaction Over Union,平均交并比)、Recall(召回率)、Precision(准确率)。检测出的目标边框Di和真实边框Ti的IOU的均值作为检测框精确度评价指标。如图6所示,Recall为成功检测出的行人个数Pd,t和总的行人个数Pd,t+Pn,t的比。Pre为成功检测出的行人个数Pd,t和所有检测个数Pd,t+Pd,f的比。

图6

(6)

2.3 实验结果

实验在ubuntu16.04、CUDA9.1、cuDNN7.05、OpenCV3.4、darknet环境下进行,使用基于darknet框架的YOLO-v3模型进行改进,使用Python实现GMM运动检测和融合检测部分,操作界面如图。

图7 操作界面

使用YOLO-v3作者给出的基于COCO训练的80类权重参数对实验数据的260张图片进行测试,得到人类的AP(Average Precision)为68.67%,而本文优化后的YOLO网络的AP达到了74.82%,平均准确率提高了6.15%。本文训练的YOLO行人检测权重对不同门限的准确率,召回率,平均交并比如表1所示。准确率和召回率是一组负相关的指标,对本测试数据,当门限为0.10到0.15之间时,两者可以达到较好地平衡,而实际应用中往往只能依靠经验判断设置门限,造成应用的不便和检测效果的降低,或者检测准确率较高但出现漏检,或者不出现漏检但准确率较低。

表1 本文训练的YOLO行人检测及融合检测结果

目前,计算机视觉领域的专家和技术人员都迫切希望在提高准确率和平均交并比的同时尽可能不降低召回率,而大多数研究重点局限于深度卷积网络本身的优化上。本文提出的方法为本问题提出了新的解决思路,将GMM运动检测信息引入YOLO行人运动检测中,由GMM检测结果选择和修正YOLO检测结果而不再依赖人为设置门限,绕开了准确率、召回率、平均交并比指标之间的冲突。

图8 检测结果图

本文方法对测试集260张图片的准确率为0.95,召回率为0.91,平均交并比为85.31%。为了尽量不漏检目标,人为设置YOLO门限为0.01,从而得到最高的准确率。再通过GMM检测框筛选出合适的YOLO检测框,排除虚警目标,变相提高了召回率,降低了准确率和召回率之间的耦合性。而由于GMM算法检测框相对更不精确,对YOLO检测框的修正作用较小,对交并比没有明显提高。实验结果表明,该方法相较于门限设置为0.01的YOLO检测方法,在保证召回率在可接受范围内降低的同时,检测准确率提高了约3.3倍,平均交并比提高了约3.7倍;相较于门限设置为0.3的YOLO检测方法,在保证准确率和平均交并比在可接受范围内降低的同时,召回率提高了约1.9倍。

截取两帧本文方法检测的结果如图8所示,由GMM算法得到(1)二值图、(2)膨胀处理图以及(3)GMM检测图。(1)二值图中存在的镂空部位的主要原因是人物衣服颜色和背景颜色相近,并且因为店内光照较强,阴影明显,所以膨胀处理后阴影部分有所增大,导致实际检测框较高。第二张图中,三个行人存在遮挡时,GMM只能检测出有运动目标存在的一片连续区域,并不能对行人做出区分,但它有效地标记出了真实目标所处位置。而(2)膨胀处理图的第四张图中,由于两个行人比较接近,被膨胀处理后只得到了一个检测框(4)YOLO检测图中,假人模特多次被错误地识别为行人,第四张图中黑衣行人错误地得到两个检测框,需要通过融合检测去除虚警信息。(5)选择修正输出图中,通过1.3节所述方法,有效地去除了虚警信息,同时可以一定程度上去除较差的YOLO检测结果。从图中可以看出,结合后的方法有效地去除了检测结果中的虚警目标,使检测到的行人区域更加精确。

3 结 语

针对物体遮挡、光照影响较强,以及有虚警目标的场景,本文提出了一种融合GMM运动目标检测和YOLO行人检测的视频行人检测方法。首先利用GMM算法得到运动目标信息,再利用低门限下的YOLO得到所有可能的行人目标,最后利用运动检测信息去除YOLO检测结果中的虚警目标。相比于只利用深度学习模型检测行人的方法,本文方法在确保较低的漏检率的情况下有效地去除了虚警目标,提高了行人目标的检测准确率。本文方法的局限性在于没有关注运动检测方法的检测精度,如何利用运动检测结果修正和提高检测精度是接下来的主要工作。

猜你喜欢
虚警边框行人
毒舌出没,行人避让
综合航空电子系统机内自检测技术研究
一种电阻式应变传感器的数据处理方法
路不为寻找者而设
用Lightroom添加宝丽来边框
给照片制作专业级的边框
空管自动化系统二次代码劫机虚警分析
民用飞机货舱烟雾虚警浅析
我是行人
曝光闯红灯行人值得借鉴