本文主要是介绍行人检测(总结),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看了将近半年的行人检测的资料,最近开题了,我也趁着这个机会把脑袋里的东西总结一下:
先说下常用的数据库:最早的是MIT,这个库比较简单,行人图片背景简单,只有正面和背面。在2005年以前流行,2005年后随着HOG的提出,MIT库上的准确率已经达到100%,所以INRIA成为标准数据库中的大家通用的数据库。这个库背景复杂,人的姿势也比较多,还有些光照等环境的影响。另外一个关于车辆内行人的图像库是Daimler,不过我总下载不下来。。。
现在常用的方法分这么几类—
行人检测的目标是得到每个行人在视频中每帧的空间位置。根据对行人描述(表达)方法的不同,行人检测算法可以基本分为三类:基于形状模板匹配的方法和基于表观特征描述的方法,以及将形状和纹理结合的方法。根据对人体是以一个整体进行检测还是分部件进行检测,又可以将行人检测算法分为基于部件的检测方法和基于整体的检测方法。下面针对国际上常用的行人检测方法进行阐述。
(1)基于形状模板匹配的检测方法
形状是人体明显的一个特征,例如头肩部的“Ω”形、躯干部分的竖直边缘轮廓,可以利用形状之间的相似性来判断图像中是否有行人的存在。Gavrila[3-5]使用一系列人体形状来表示人体形状,然后在测试图像中提取边缘,基于Chamfer距离来评测图像与模板之间的相似性。LinZhe[6]等将人体分为头肩躯干、大腿和小腿三个部件,然后按照从上倒下使用Gavrila提出的方法分层次进行匹配,最后和基于背景建模得到的前景图像进行形状匹配,在检测行人的同时将其大致形状从背景中分割出来。
基于形状匹配方法的优点是直接描述人体的形状,比较直观,检测完成以后可以根据模板的形状和姿势,判断检测到行人的姿势并切割出行人的大致轮廓。但由于其在线检测时很难获得待匹配图像中目标的轮廓,且其利用样本来描述类别的形状,导致其一些显著的缺点:离线训练时的人体外围轮廓需手工标定,边缘提取受背景的影响,没有采取鉴别性学习等
(2)基于表观特征向量的检测方法
基于表观特征向量的检测方法使用能够描述目标表观特性的特征向量表示目标模式和非目标模式,然后使用基于统计学习得到的分类器根据特征向量做出判决。
特征提取将原始的图像灰度(彩色)信息映射到特征空间,其目的是减小待分类类别的类内变化和增大类间变化,理想的特征是不同类别的分布没有交叠,完全可分。特征提取的方法有两种:基于整体特征向量的方法和基于关键点提取的方法。
在基于整体特征向量的方法中,较早用于行人检测的是Haar小波,Papageorgiou[7]等使用Haar小波变化系数描述行人,然后使用线性SVM分类器进行判决,建立了一个基于统计学习和表观特征相结合的行人检测系统。之后,为了避免边缘提取误差,很多方法直接使用梯度信息来表示人体的形状,提高的鲁棒性。例如局部边缘方向直方图EOH[8](Local Edge Orientation Histograms)、Edgelet[9]和Shapelet[10]等,这其中以Dalal[1]等人提出的HOG(Histograms of Oriented Gradients)的工作影响最大。HOG特征成为最近一个主流使用的特征。在找寻更好描述行人特征的同时,另一个发展的趋势的特征融合。实验证明:融合多种能够描述人不同特点的特征,能够获得比仅利用单一特征类型时的检测性能。
基于感兴趣区域的人体描述方法,首先使用感兴趣点(或关键点)提取算法,提取关键区域,然后使用这些感兴趣区域内提取到的特征向量,描述相关的区域,然后使用关键区域的空间位置关系描述人体。由于衣服多样性和人体姿势变化等因素的影响,人体上的感兴趣区域提取不够稳定,限制了该方法的性能。
(3)基于部件检测的方法
Felzenszwalb[11]等人根据人体的关节特性,将人体的分为十个部件,每个部位都有自己的表观特征,部位之间的几何关系允许一定的变化,建立了一个运行形变的基于部件的检测模型。之后对部件的数量进行了改进,以及检测结果的一些特征融合。
基于部件检测的方法在一定程度上可以客服局部遮挡带来的问题,,但是由于这种方法都是人工将人体划分部件,而且要求训练数据中标定每一个部件的位置,造成了人力资源的消耗和性能的不确定性。因此,现在在使用这一方法时,经常与HOG等特征结合使用,以提高性能。
现在主要的检测方法还是以HOG特征为主,我把我看过的几篇论文放在这里,需要的朋友们可以点击下载:
最初提出HOG特征的论文:hog_cvpr2005_
这篇文章是研究行人检测的必看文章
Dalal(上面那篇文章的作者)的博士论文:Dalal-phd06(较大,链接在俺的机子上,可能不能下载) 对大家进一步了解HOG会有很大帮助
Fast Hog,对最初的HOG特征进行了改进:Zhu_Fast Human Detection Using a Cascade of Histograms of Oriented Gradients
这篇论文在原文的基础上加入了积分图,cascade结构。我没有把这篇论文实现,因为cascade中的每一级所使用的弱分类器是svm,训练时间会很长——如文中所述的“a few days”
另外还有Edgelet特征貌似也不错。不过,我没研究过。不做评论。
再链接两篇中国人发的关于行人检测的cvpr:Granularity-tunable Gradients Partition (GGP) Descriptors for Human Detection(翻过,没细研究)
cvpr09-0515-Adaptive Contour Features in Oriented Granular Space for Human Detection(仔细研读了:提出一种新的特征,但是有些特别重要的地方没讲清楚)
现在在INRIA库上的最好结果是:Maji S., Berg A C, Malik J. Classification using Intersection Kernel Support Vector Machine is Efficient. 是对SVM进行了改进。
上面主要是针对图像库来检测的。不能达到实时,要做到实时是不可能的。下面是我草拟的一个行人检测的流程:
离线训练过程:
1.输入为标准图像库中的图像,对于正样本,直接提取特征;对于负样本,多尺度遍历整幅图像,进行特征提取。提取Harr,LBP,HOG三种特征并保存为积分图形式。
2.对于cascade的每一级进行如下操作:用Adaboost进行特征选择,选出最好的特征。
在前面的几级用Harr和LBP这两种计算较快的特征,后几级用HOG。
3.进行级数调整,直到达到要求的检测率和错误率。
检测过程: 1.输入图像,多尺度遍历整幅图像,进行特征提取:提取Harr,LBP,HOG三种特征并保存为积分图形式。 2.将所有子窗口输入训练得到的模型中,如下图,经cascade分类器后,根据检测结果即可标定行人区域,通过一些后处理(例如,合并临近的窗口),就可以对行人进行定位,达到检测的目的。
这篇关于行人检测(总结)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!