“目标检测也叫目标提取,是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,定位目标,确定目标位置及大小。”---百度百科
目标检测是目前图像处理算法中的一个热门话题。特别是最近几年随着深度学习的发展,我们可以看到不管是工业界还是学术界,目标检测在准确度和实时性方面都取得了长足的进步。由于篇幅原因,本文只介绍传统的目标检测算法,在后续的文章中,我们将介绍基于深度学习的目标检测算法,基于深度学习的目标检测算法的整体思路非常优雅,敬请大家期待。
由于物体在不同的角度,不同的距离具有不同的形态,所以准确检测目标的难度是非常高的。传统的目标检测算法是从图像中通过滑动窗口的方法取得候选区域,然后在候选区域通过分类算法判断是否是所需要的目标。也有根据物体的形态纹理等特征获得候选区域的方法,包括selective search等一系列方法。这些方法在一定程度上能够满足应用的需要。
传统的目标检测算法由两部分构成,一个是目标候选区域的提取,另一个是对候选区域的分类。这两个部分构成了传统目标检测算法的整体框架。因此,传统目标检测的不同算法也由这两个部分的差异而不同。本文将从这两个不同的结构介绍不同的算法。
根据目标候选区域的提取方式不同,传统目标检测算法可以分为基于滑动窗口的目标检测算法和基于纹理的目标检测算法。
1 基于滑动窗口的目标检测算法
采用滑动窗口的目标检测算法思路非常简单,它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了。但是这个方法有致命的缺点,就是你并不知道要检测的目标大小是什么规模,所以你要设置不同大小和比例的窗口去滑动,而且还要选取合适的步长。但是这样会产生很多的子区域,并且都要经过分类器去做预测,这需要很大的计算量,所以你的分类器不能太复杂,因为要保证速度。
2 基于纹理的目标检测算法
由于基于滑动窗口提取候选区域的方式计算量太大,因此有学者提出根据纹理特征提取候选区域的方法,而其中非常具有代表性的一种方法是selective search.在选择性搜索(selective search,SS)中,我们首先将每个像素作为一组。然后,计算每一组的纹理,并将两个最接近的组结合起来。但是为了避免单个区域吞噬其他区域,我们首先对较小的组进行分组。我们继续合并区域,直到所有区域都结合在一起。
step0:生成区域集R,具体参见论文《Efficient Graph-Based Image Segmentation》
step1:计算区域集R里每个相邻区域的相似度S={s1,s2,…}
step2:找出相似度最高的两个区域,将其合并为新集,添加进R
step3:从S中移除所有与step2中有关的子集
step4:计算新集与所有子集的相似度
step5:跳至step2,直至S为空
根据使用的候选区域分类模型的不同,又可以对目标检测算法进行更加细致的分类。在分类模型中,常用的图像特征有HOG,SIFT,HBP,Haar等特征,常用的分类算法有SVM,随机森林以及各种级联分类器,这些特征和分类算法共同组成了丰富的目标检测算法。这些算法由于篇幅原因本文将不再赘述。
本文介绍了传统的目标检测算法,这些方法在一定程度上能够满足应用的需要。但是随着实时检测要求的日益增高,上面算法由于效率低下不能适应新的需求,迫切希望提出更高效的算法替代传统的算法。目前深度学习算法在图像分割中应用广泛,由于深度学习在目标检测中的理论非常丰富,因此需要额外找出时间对其进行总结。最后欢迎各位读者批评指正。
图像处理系列历史文章:
参考文献:
selective search : https://blog.csdn.net/guoyunfei20/article/details/78723646
目标检测 : https://blog.csdn.net/T7SFOKzorD1JAYMSFk4/article/details/80117518
本文内容发表于公众号"无熵大雅" , 欢迎关注公众号了解更多内容!