基于HOG+SVM的目标检测与识别的方案设计和分析

描述

在数字图像处理中ATR(自动目标识别)是一个富有挑战性的课题,特别是在背景环境不可控的情况下,其难度与复杂度不言而喻。国家也投入了大量的财力物力推进其发展,在各大高校、科研院所也有相应的机构进行专门的研发,在研究生学历攻读阶段,也有相应的基础和高级课程的设计。今天,我不是以一个科研人员的身份进行说话,而是站在一个普通的图像算法应用工程师的角度总结下我的工作经验,不足之处,多多海涵! 

下面,我以一个人脸目标的检测为例,使用OpenCV2.4.7做一个HOG+SVM的检测实例。实例中,使用皮肤检测分割作为快速目标检测。HOG参数设置为64X64,Cell:16,Block:32,Bin:9

1、总体设计 HOG是一个图像的特征,全称梯度方向直方图,是使用图像局部梯度对图像进行描述的一种方式。SVM是一个高维度的分类器,全称支持向量机,是一种结构化风险较低的分类器,也是目前研究领域较为热门的分类器。我们关注的焦点不是如何实现他们,而是如何在开发中正确有效的使用他们。从总体上,可以将方案分为四大部分,一是分类器的训练;二是目标疑似区提取,即检测部分;三是使用分类器进行虚警踢除,即识别部分;四是聚类定位。 

2、分类器的训练部分主要是完成样本的采集、管理、特征提取以及SVM的训练。样本的采集部分一般是使用现有的标准数据库,或者使用PS一类的图像处理软件进行裁剪采集,需要说明的是所有样本尺寸需一致,且符合HOG特征提取要求。样本管理是正确的组织管理大量样本,最好有一个样本管理软件。不要小看这部分,对于小量样本来说管理部分确实简单,但是,对于海量数据来说,其管理难度可想而知。特征提取部分我建议使用opencv的HOGDescriptor类进行实现,使用简便。svm分类器训练部分可以使用opencv的SVM类,但是,出于对训练结果的可视性,我建议使用C语言版本的libSVM,这是***一大学教授耗时3年多编制而成,opencv也是使用他的源码进行封装,连调用接口都几乎一致。完成训练部分以后,保存训练模型,以便于识别部分使用。特别提醒的是, 对于SVM的训练而言,对训练数据进行归一化是一个很重要的过程,有可能影响到训练的成功与否。

3、快速目标检测                     (1)原始图像

目标疑似区提取是一个快速目标检测的过程,这也是一个比较棘手的过程。目标疑似区提取有两大原则,一是不能丢失目标,二是尽可能减少疑似区。根据这两个原则,针对实际情况进行算法定制。常见的有局部对比度分割,或者是恒虚警算法、基于颜色的分割、基于边缘的分割等等……局部对比度分割适用于尺寸较小,与周围背景对比度强烈的目标。基于颜色分割适用目标颜色特征较为明显的目标,如车牌、绿色植物、鼠标垫等。快速检测部分的设计应该基于量大原则:一是目标不遗落原则。快速检测部分只是在宏观选上对目标进行筛选,此时遗落目标后续算法就毫无意了;二是高效原则。快速检测部分应该是基于底层图像信息,如亮度、边缘等知识进行处理,尽可能减少算法耗时。

(2)、皮肤检测

(3)、皮肤分割

4、目标识别部分是在快速检测的结果上进行,快速检测部分提供了目标的疑似区域,在疑似区域对应的原始图像上,形成目标切片、提取特征、分类器判定,形成目标候选区域。目标识别部分的主要工作体现在分类器的训练,因为识别部分只是使用与训练部分相同的特征提取方式,以及分类模型的导入等。

(4)、HOG+SVM检测

5、目标聚类部分的目的是为了准确找出目标的中心。在分类器鉴别后形成的目标候选点集合中,如果可以确认只存在一个目标,那么聚类部分就非常简单了,只需要求出所有候选点的质心就是目标的中心了。对于目标个数不确定的情况,我们通常有这样几种解决方案:一是通过领域候选点矩阵进行联通域提出,以每个联通域的质心为目标中心。二是使用领域候选点增长法。

(5)、聚类结果

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分