目标检测物体的候选框是如何产生的?
如今深度学习火热的今天,RCNN/SPP-Net/Fast-RCNN等文章都会谈及bounding boxes(候选边界框)的生成与筛选策略。那么候选框是如何产生,又是如何进行筛选的呢?其实物体候选框获取当前主要使用图像分割与区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。滑窗法作为一种经典的物体检测方法,个人认为不同大小的窗口在图像上进行滑动时候,进行卷积运算后的结果与已经训练好的分类器判别存在物体的概率。选择性搜索(Selective Search)是主要运用图像分割技术来进行物体检测。
—————————— 滑窗法(Sliding Window) ——————————
首先来看一下滑窗法的物体检测流程图:
滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。
—————————— 选择搜索(Selective Search) —————————
同样来看一下选择搜索的物体检测流程图:
选择搜索算法的主要观点:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取bounding boxes候选边界框。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes(外切矩形),这些子区域外切矩形就是通常所说的候选框。
选择搜索优点:
计算效率优于滑窗法。
由于采用子区域合并策略,所以可以包含各种大小的疑似物体框。
合并区域相似的指标多样性,提高了检测物体的概率。
代码下载:
分割代码工程vs2015 x64 :
链接:https://pan.baidu.com/s/1JfZuUvMGaz7rvDyh9ZQn2Q 密码:7k6l
选择搜索cpp文件 or (作者官网下载matlab code):
链接:https://pan.baidu.com/s/1ioLEjuydczshp0XDbtDk7w 密码:ymr3
(需要配置opencv_contrib文件)
参考文献:
https://www.learnopencv.com/selective-search-for-object-detection-cpp-python/
http://cs.brown.edu/~pff/segment/
https://koen.me/research/selectivesearch/
<深度学习与计算机视觉> 作者:叶韵