目标识别、目标检测、滑动窗口、候选区域算法和选择性搜索算法区别

weixin_43405434 2019-12-08 06:18:34
目标识别、目标检测、滑动窗口、候选区域算法和选择性搜索算法区别


本帖只是本人对这几个概念的理解随笔,为了让初学者少走弯路,更好理解,就写了一下自己记录,大神勿喷,如有侵权,及时联系删除,谢谢!!

其中主要参考的blog为:
物体检测之选择性搜索(Selective Search):https://blog.csdn.net/yuanlulu/article/details/82157071#commentBox

注意:object dection=目标检测=物体检测
object recognition=目标识别=物体识别


目标检测的核心是目标识别

两者概念

目标识别是要分辨出图片中有什么物体,输入是图片,输出是类别标签和概率。而目标检测输入是图片,不仅要检测图片中有什么物体,还要输出物体的外框(x, y, width, height)来定位物体的位置。

为了定位物体,我们需要选择一些子区域并在子区域上运行物体识别算法。物体的位置就是物体识别算法返回最高概率的子区域内。


问题来了,那怎样定位物体位置呢?就有人想到用框来标记,这个框起来的区域就叫做候选子区域。那这些候选子区域是怎么生成的呢?

生成候选子区域的方法总共分为两类:滑动窗口算法(sliding window algorithm)和 候选区域算法(region proposal algorithm)

产生候选子区域的最直接的方法就是滑窗法,但是这种办法效率比较低,所以我们一般使用‘候选区域’算法,而择性搜索(Selective Search)就是最流行的候选区域产生算法之一(个人理解:这个最流行可能是针对论文那两年说的,现在深度学习都是使用网络产生候选区域,不用算法生成了)。


滑窗(sliding window)法

在滑窗方案中,我们要使用一个小窗口遍历搜索整张图片,在每个位置上对滑窗内的图片做物体识别算法。不仅要搜索不同的位置,还要遍历不同的大小,工作量可想而知。

问题还没完,对于人脸和人体这种长宽比基本固定的物体还好,对于长宽不固定的物体,搜索起来简直就是噩梦,计算量直接飙升


候选区域(Region Proposal)算法

候选区域算法用分割不同区域的办法来识别潜在的物体。在分割的时候,我们要合并那些在某些方面(如颜色、纹理)类似的小区域。相比滑窗法在不同位置和大小的穷举,候选区域算法将像素分配到少数的分割区域中。所以最终候选区域算法产生的数量比滑窗法少的多,从而大大减少运行物体识别算法的次数。同时候选区域算法所选定的范围天然兼顾了不同的大小和长宽比。

候选区域算法比较重要的特征就是要有较高的召回率。我们要通过这种方法保证拥有物体的区域都在候选区域列表里。所以不介意有很多区域什么都有,这都没关系,物体检测算法会过滤掉他们,虽然会浪费一点时间。


选择性(selective search)搜索算法

而在候选区域算法中,最常用的算法就是选择性搜索(selective search)算法,因为这个算法速度相对较快,并且召回率高。

选择性搜索算法需要先使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域,然后使用相似度计算方法合并一些小的区域。

下列两张图分别是原图和原始分割图:






但是我们不能使用原始分割图的区域作为候选区域,原因如下:

1. 大部分物体在原始分割图里都被分为多个区域

2. 原始分割图无法体现物体之间的遮挡和包含。

如果我们试图通过进一步合并相邻的区域来解决第一个问题,我们最终会得到一个包含两个对象的分段区域。

我们不要需要完美的的分割区域,我们只想要和实际物体高度重合的区域就行了。


选择性搜索算法使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域作为输入,通过下面的步骤进行合并:

1. 首先将所有分割区域的外框加到候选区域列表中
2. 基于相似度合并一些区域
3. 将合并后的分割区域作为一个整体,跳到步骤1

通过不停的迭代,候选区域列表中的区域越来越大。可以说,我们通过自底向下的方法创建了越来越大的候选区域。表示效果如下:


相似度

选择性搜索算法如何计算两个区域的像素度的呢?
主要是通过以下四个方面:颜色、纹理、大小和形状交叠
最终的相似度是这四个值取不同的权重相加


效果
opencv实现了选择性搜索算法,可以给出上千个根据有物体的可能性降序排列的候选区域。
下图是画出了前面200250个候选区域的效果。一般来说。10001200个候选区域基本能胜任物体检测的任务了。






参考资料

#selective search作者网站:https://www.koen.me/research/selectivesearch/
国外博客:https://www.learnopencv.com/selective-search-for-object-detection-cpp-python/
国内翻译的上面的博客:https://blog.csdn.net/guoyunfei20/article/details/78723646
国内的博客:https://blog.csdn.net/surgewong/article/details/39316931/
国内博客2:https://www.cnblogs.com/zhao441354231/p/5941190.html
图像分割:http://cs.brown.edu/people/pfelzens/segment/
...全文
1612 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,505

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧