关于车辆检测算法的总结与改进探讨

限时干货下载:回复“资料”获取获取机器视觉教程,行业报告等资源,百度盘群组分享链接更新时间:2018-02-28,失效请在文末留言,不要在后台留言,你也可以在后台菜单“资源搜索”搜索更多你想要的网盘资源!

从第一篇博文《Haar Adaboost 检测自定义目标(视频车辆检测算法代码)》发表以来有不少读者留言,有点赞称好的,也有吐槽结果不理想的,当然更多的还是提问一些关于细节上的问题。对于大部分问题,我还是很乐意很耐心地回答的。因为我觉得这也是一个相互学习的过程。我想说的是,我不能保证检测效果能达到每一个读者的要求,我自己发布的训练器和训练样本也只是针对我的需求发布的。如果把分类器用来检测夜间的车辆是行不通的,因为我训练过程没有考虑夜间问题,都是针对白天做的。这篇文章的宗旨无非就是可以帮助很多还没有入门图像处理的或者急于在类似课题上有成果的读者。今天写这篇博文,主要是把这五个月以来的读者的反馈以及我自己的一些理解做一些总结。另外,对于这类扫描机制的车辆检测算法的优化提出自己的一些观点。

首先对这篇文章做一些总结。Haar特征和Adaboost分类算法的结合最早是用于人脸检测,也就是这种结合得到的效果让adaboost算法火了好几年,各种变种的adaboost都出来了,甚至什么特征和这种算法结合一下都能刷一些论文出来。如果想对原理理解的更加透彻可以参考博客http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html或者研读原文《Robust Real-Time Face Detection》

第一个问题,样本数量怎么选的问题。虽然说分析比较重要,但是我觉得尝试更重要,如果你选择了几百个样本来训练得到了满意的效果,那可以停止了,样本也不是越多越好。因为单方面的偏移会使得TP,TN,FP,FN发生改变。我给的数据只是我自己的一个建议而已。为什么要负样本比正样本多呢?因为非车的情况肯定要比车的多。如果两者数量相等的话,对于非车来讲是不全面的。我自己也做过验证,如果两者数量一致,效果不理想,很多非车被判断为车了。但是,可能换了别的算法,这比例可能就不是这样了。所以还是一句话,多尝试吧!

第二个问题,样本尺寸的问题。有读者问到,在训练车辆的时候改变高宽比有影响吗?为什么要resize成24X24?可以选取其他数值吗?检测的窗口是多大?为什么显示出来的框看着比24X24大,检测窗口大小和样本大小不是得一样大吗?我觉得这是个比较重要的问题,在很多目标检测算法中都有体现。我的看法是:尺寸不是固定24*24的,但是建议根据目标的形状来选取,如果是行人的话,建议1:3比较符合目标实际比例的。resize成的大小只影响特征数量和训练的时间长度,对效果影响不大。对于每一帧待检测图像,本文的算法都有进行多尺度的检测。例如一辆车是30*30,如果用24*24的窗口来检测是不会被检测出来的,所以当我们把图片缩小0.8倍成为24*24时,就可以检测出来。但是,我们在原图像中还是能以30*30的矩形来框住车辆,这是为什么呢?因为我们在图片缩小为0.8倍时检测出来的车辆,都是要以24/0.8=30的尺寸显示出框的,这也就是你看到的窗口比24*24大的原因了。这个很重要,在很多扫描图片进行检测的问题都会遇到这问题。因为我们不知道目标就是满足检测窗口的大小,所以得尺度变换。24*24是不是最好的,未必!所以还是一句话,多尝试吧!

第三个问题,样本的质量问题。如果是做监控摄像头下的车辆检测的话,一般分辨率都不会很高。分辨率越低,本文算法的优越性更加突出了。在分辨率比较低的情况下,大部分基于运动检测的算法都失效了。因为背景和目标区分不明显了。但是基于特征的方法依旧站得住脚。我提供的样本其实分辨率都不算高,我检测的视频分辨率也都不高。我试过了分辨率高一些的视频,特备是高清视频,效果也没有我自己提供的那些好。所以还是一句话,多尝试吧!

下面我来探讨另一个问题,如何优化这一类扫描机制的算法?会用haar和adaboost来检测目标也只能用于工程项目,参加一些比赛,效果还是挺炫的,可以拿出来秀一下。如果要想有点改进,可以从三个方面入手。我一年前做了改进然后写了一篇论文,投了neurocomputing,这个期刊觉得创新点不够被拒,后来改投还是觉得创新点不够。我还在修改中,接下来要不要继续投稿还是个问题,因为我对图像处理的学习也可能到此止步了。只学了个皮毛。后面我可能会写一篇和图像分割有关的文章,这是我两年前做的工作,有时间就整理一下,没时间或者忘了,就忘了吧。

方向一:先进行运动目标检测,然后把背景去除,不参与扫描。这样子做的好处有两个,节省了扫描的时间,另外,很多长得像车的背景也可以去除。但是为了保证车辆特征完整,应该有一个形态学上的处理保留特征。

方向二:特征融合。这会使得算法变慢,但是对于检测性能上是有帮助的。

方向三:在线的adaboost学习。如果能在线的学习更新分类器,也是一个方向,有一篇中国台湾的论文提到。或者根据具体场景对正负样本进行学习。

更多的问题探讨,如果有接触到再更新了~~

2016.07.24 更新 考虑将运动检测加入,检测出前景目标,然后在前景目标上作验证。优点一:可以减少滑动窗口扫描的范围,也从而减少扫描时间;优点二:可以减少一些背景(特征和车辆类似的背景)造成的干扰。

可以参阅paper《Real-time vehicle detection with foreground-based cascade classifier 》 http://download.csdn.net/detail/zhuangxiaobin/9733793

限时干货下载:回复“资料”获取机器视觉教程,行业报告等资源。持续更新中。。。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302A018RL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券