APP下载

基于AdaBoost的行人检测预警方法

2018-03-31张书娟王震洲

电脑知识与技术 2018年6期

张书娟 王震洲

摘要:在辅助驾驶中对行人检测的实时性要求较高,然而现有方法的计算复杂度普遍较高,难以满足实时应用的需求。该文提出了一种基于AdaBoost算法的行人检测与预警方法。行人探测器由Opencv训练,并且训练12级行人探测器。通过在处理器上使用检测器,实现视频图像的行人检测功能。另外,通过使用可变步长和分区扫描跟踪方法,有效提高了检测率,实时检测的要求基本达到。采用均匀化预处理和多尺度融合技术提高了检测过程中检测率;通过直方图均衡办法有效地剔除了光影等因素对测试结果的影响;在测试完成后,通过多尺度融合技术消除冗余部分的测试结果,最终不仅减低了误报率而且大大提高检测效率。

关键词:AdaBoost;行人检测;多尺度融合;快速扫描

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)06-0174-04

行人检测是指在图像中或者视频图像中,确认是否有行人,如果有行人,那么将会对其进行预警的处理。行人检测是汽车安全的关键技术,也是行人跟踪,行为分析,步态分析,等研究的必要步骤。近年来行人检测越来越多的向新兴领域靠近,但是在处理的过程中特别容易受到外界环境的一些影响。现在常用的行人检测的方法就是模式识别类的方法。

庄家俊等人通过模板匹配的方法来检测夜间行人,首先通过预处理图片来选取可能存在目标的局部区域,再根据候选区域利用特征末班匹配进行分类,这种二次处理检测的算法虽然降低了算法冗杂度,但是由于第一级处理的程度太大,剔除掉了一部分目标区域,从而导致漏检现象。郭烈根据行人腿部具有边缘对称性,利用sobel算子提取车载视频中图像的垂直边缘并且找到对称中心,再根据行人的高度与宽度比,从而检测图像中的行人,但是该方法的计算量太大,算法非常的冗杂的弊端。宁博利用集成学习方法改变传统学习中泛化能力;根据特征选择的方法来选取关键特征,这样很大程度地减少了计算量;并且其引入了动态分类器的方法,增大了外界环境变化的鲁棒性,但是由于算法太过复杂,根本无法达到实时检测。

本文提出了一种基于Ada Boost算法的行人检测与预警方法。行人探测器由Opencv训练,并且训练12级行人探测器。通过在处理器上使用检测器,实现视频图像的行人检测功能。另外,通过使用可变步长和分区扫描跟踪方法,增大了检测率,实时检测的要求基本达到。采用均匀化预处理和多尺度融合技术提高了检测过程中检测率;通过直方图均衡办法有效地剔除了光影等因素对测试结果的影响;在测试完成后,通过多尺度融合技术消除冗余部分的测试结果,最终提高检测率,降低误报率。

1训练分类器

训练分类器的就是先选择样本,再对样本进行离线训练。训练分类器的过程如图1,首先选择训练样本集即选择正样本集和负样本集,再通过开源软件opencv的程序来完成训练分类器的训练。

1.1选择样本

我们将HKPC得到的行人样本作为正训练样本集;负样本集采用INRIA样本集即没有行人的任何图片。我们使用了4454份行人正面样本和9万份INRIA负样本。训练的样本如图2。

1.2创建级联分类器

创建Ada Boom级联分类器即使用opencv的开源代码来完成。首先新建2个文件夹,一个在其储存4454个正样本,一个保存9000个负样本。然后新建文本文档,类似img/1.jpg 100 20 40…其中20是检测窗口的初始宽,40是检测窗口的初始高。接着创建文本文档,类似于-img/1.ipg…。接着运行程序,将正样本文件转成vec文件。最后运行程序将得到的vec文件和负样本一起作为参数并训练分类器,训练24小时。部分训练参数见表1。

1.3数据分析

从表中可以看出,在少数情况下,前者的强分类器才具有特征的数量

超过强分类器中包含的数量。在宏观上,具有大数字的强分类器通常包含更多的特征。

2行人检测

行人检测流程图如图3所示,首先,捕获并输入视频图像,然后预处理图像。接着利用不同尺度的检测窗口对整个检测图像进行扫描,以确定检测窗口中是否有行人,若发现有行人,则触发警示系统进行提醒。行人检测的主要过程如图3所示。

2.1图像灰度化

通过摄像头来获得原始图像,将原始图像数据通过DSP(数字信号处理器)进行处理,将YUV格式的图像数据存储在存储器中。具体过程为每帧后将新的原始图像的输入,就会触发一个中断,这个中断可以把RGB格式的图像转换成YUV格式的图像数据保存在内存中。图像获取过程如图4。

在YUV格式图像中,Y表示图像的灰度值,UV表示色差的两个分量。由于我们只需要测试图像的图像灰度值,因此可以直接忽略UV值。所以在检测中只需要得到Y分量数据即就可以得到灰度图像。

2.2检测窗口扫描

由于利用Ada Boost方法特征是稳定的,所以只需将计算出的特征值除以分类器的阈值,并且除以检测窗口的面积,就可以任意改变检测窗口而不会影响结果的判断。在行人检测过程中检测每次放大比例为1.25为最佳效果。如图5是误检以及漏检的情况。

从统计的行人检测数据中,如表3所示。检测率仅为84%,漏检的图像大;误检率为34%,虽然比一个弱分类器的能力强,但远离实际需要;并且该速度满足不了实时的检测。

3检测性能提升

3.1预处理输入图像

(1)对输入图像做直方图均衡化预处理,以减少光照阴影对检测的影响。

(2)训练分类器和分类器的检测过程都需要对特征值进行归一化处理,以获得更好的适应性,防止检测过程中出现严重的过度拟合现象。

(3)对感兴趣区域中的待检测图像进行有针对性的检测。首先通过边缘检测找到行人可能存在的位置,然后使用分类器进行扫描检测。本文中使用sobel算子来提升检测速率。

3.2扫描速度的提升

例如检测窗口大小为w×h,输入图像的大小为W×H,则用式1可以得到检测判断的次数。图片的计算量非常大,这个过程占用了70%以上的检测时间。因此,提高检测率的方法就是要解决实时检测的问题

扫描速度的提升我们通过变速扫描窗口来实现。即当检测窗判断输出为0时,增加窗口扫描步长;当检测窗输出为1,减小扫描步长;我们设置最大扫描步长Vmax,以避免超出窗口。

此外,我们可以进一步提高检测率,在前两级联分类器的强分类器逐行扫描的帮助下,然后去除虚警区域用完整的级联分类器扫描得以完成。因为前一级强分类器检出率高率而且对最终检测率没有影响,所以加快检测速度可以进行两次扫描来完成,并且实现实时检测。两次扫描过程如图6。

3.3多尺度融合

为了实现每个目标只有一个输出的目标,必须删除多余输出。只有当一个组中有三个以上的相邻矩形时,才可以将行人包含在该组矩形所在的區域。因此,多尺度融合有利于降低检测结果的误报率。遍历检测行人的子窗口后,找到相邻的子窗口,以相邻窗口的坐标位置和宽度作为最终的输出子窗口。

算法优化后的检测数据如表4所示,表中第一行为没有优化处理的数据,第二行为经过多尺度融合和方差归一化方法提升后的数据,第三行显示的是在方法提升后的情况下加入了快速扫描算法后的数据。分析数据可知多尺度融合和方差归一化有利于增加检出率、较小误检率,但是检测速率会有一点的降低;本文中通过快速扫描提高检测速率。

4结论

基于AdaBoost的行人检测预警方法有效地实现了行人的检测,近一步的预警的实现保护了行人的安全。该方法首先在图像检测中训练级联分类器。进而得到的分类器用来扫描视频图像中的多个区域,确定局部区域是否有行人,若有行人就会触发语音提示,即预警提示。该方法采用图像预处理和多尺度融合技术增加检测的准确率,减小误报率。并且对检测的窗口进行变速扫描和两种扫描方式提高检测率。所以基于Ada-Boost的行人检测预警方法不仅可以有效地检测出行人并且可以进行预警提示,而且提升了性能,可以有效大力的推广使用。