在目标检测、目标跟踪领域,提取region proposal都是最基本环节。本文概述了从 sliding window 到 selective search, 然后升级到 region proposal network的过程。 核心在于理解 selective search算法 和 region proposal network的设计思想。

1. 从sliding window 到 selective search 的候选区域提取

  • 目标检测 vs. 目标识别


目标识别算法是指在一张给定的图像中识别出给定的物体。他将整张图像作为输入,然后输出类别的标签并给出图像中出现物体的概率。如上图,直接输入objection recognition算法中,算法会反馈图像的类别dog, confident score 0.9987.

目标检测任务不仅仅要返回图像中主要包含那些物体,而且还要返回该图像中包含了多少物体? 他们在哪里(一般用BoundingBox进行标注)?
目标识别算法是所有目标检测算法的核心。假设我们已经拥有了非常强大的目标识别算法,但是该算法也仅仅能够告诉我们目标(如狗)是什么, 却不能告诉我们目标在哪里? 有多少个目标?

为了完成目标检测任务,我们需要选择一个更小的区域(sub-regions,patches),然后利用目标识别算法去识别各个patches是否包含high confident scoreobjections

因此,一个非常基础但很重要的环节在于:如何从一张图像中又快又好地提取出这样的patches?其实最直接的方法提取region proposal(候选区域)的方式就是采用滑窗方法。但是sliding window方法非常消耗时间,因此研究学者提出了基于selective search策略的区域候选算法。

note1:提取patches算法更学术一点叫做region proposal algorithm

note2:好,指的是patches中尽可能恰好包括objects

note3:快,指的是有效速度。因为不同目标之前存在位置和尺度差异,如果采用遍历法,明显就是不合理的。

  • Sliding window 滑窗技术


使用sliding window方法中,我们使用window对整幅图像进行遍历,然后利用目标识别算法所有的patches进行检查。这实际上就是一个穷举的过程。此外,在遍历搜索过程中,我们不仅仅要遍历单个尺度的window,还有对多尺度的window进行检测。 因此,sliding window策略是非常消耗时间的。还有就是,sliding window算法对固定比例patches提取非常适合,但是由于projection的时间原因,固定的比例是很难保证的。 如果要将不同比例考虑进去,sliding window的时间效益又将大打折扣。

  • region proposal algorithm

    sliding window (受平移、尺度、比例影响)存在的根本问题就是漫无目的性的搜索, 恰恰region proposal algorithm就是为了解决这个问题。候选区域提取算法将图像作为输入,并输出边界框BoundingBox,该边界框对应于图像中最有可能是对象的所有patches。这些BoundingBox可能存在噪声、重叠,也可能偏离了目标,但是大多数候选区域应该与图像中的目标非常接近。这样,我们在后面直接对这些BoundingBox进行目标识别就好了。 在所有的region proposal algorithms中, selective search based 非常有代表性(快,有很高的召回率recall),进而提取BoundingBox
  • selective search

    图一 原始的输入图像 图二 采用graph-based适当分割结果 图三 采用graph-based过分割结果
    selective search最核心的点在于通过颜色、文理、形状或者大小等 将原始的输入图像划分成等级区域(实质就是分割,如上图所示)。但是直接分割的图片不能用来做物体检测,原因有二:

1 大多数物体包含俩种以上的颜色(尤其受到光照影响,一个物体可能包含更丰富的颜色信息)

2 如果物体之间有重叠,这种方法无法处理,比如杯子放在盘子上的情况

为了更好地解决上面的两个问题,自然而然的我们想到了使用更好的分割方法,但是这并不是我们的目标(图像分割本来就是一个非常大的领域)。 我们这里需要的是一个不错的分割结果就好,至少需要满足分割后的区域可以尽可能的覆盖原图像中的物体。所以,selective search中使用了[1]中的分割算法进行过分割(如上图所示)。selective search将过分割图像作为初始输入,并执行以下步骤:

step 1:根据论文[1]分割的图片画出多个框,把所有框放入列表Region

step 2:根据相似程度(颜色,纹理,大小,形状等),计算Region中框之间的俩俩形似度,把相似度放入列表A中

step 3:从列表A中找出相似度最大的俩个框a,b并且合并

Step 4:把合并的框加入列表Region中,从A中删除和a,b相关的相似度,重复步骤2,直至清空A

最终只需要对Region中的框进行图片分类,就可以得到原图的检测结果。候选框从数十万降到几千(R-CNN中俩千左右)。
graph-base过分割后形成Hierarchy - bottom-up 策略。它显示了等级分割过程的初始、中间和最后一步
绿框:生成的真阳性边界框 true positive BoundingBox 蓝框:生成的假阳性边界框 false positive BoundingBox

  • selective search 区域归并

那么如何计算两个区域之间的相似性? selective search运用了基于颜色、文理、形状、大小进行相似性度量。

颜色相似性A color histogram of 25 bins is calculated for each channel of the image and histograms for all channels are concatenated to obtain a color descriptor resulting into a 25×3 = 75-dimensional color descriptor. 对于图像的每一个通道我们需要计算25bin的颜色直方图,然后每一个颜色通道的直方图拼接在一起,形成颜色描述子(75维)。

纹理相似性:对于图像的每个通道,利用高斯差分对8个方向进行计算提取纹理特征。对于每个颜色通道的每个方向,利用10-bin直方图进行表示,这样便形成了纹理描述子(1083=240维)。

尺寸相似性:尺度相似性鼓励更小的区域早日合并。它确保在图像的所有部分形成所有尺度的候选区域。如果没有考虑这个相似度测度,那么一个区域会一个一个地吞噬所有较小的相邻区域,那么,多个比例的候选区域将只在特定的位置产生。

形状兼容性相似性:两个区域重合比例程度。

两个区域之间的最终相似度定义为上述4个相似点的线性组合。

Python+OpenCV的代码实现:https://download.csdn.net/download/shenziheng1/10751868。示例结果如下:


selective search采用graph-based过分割生成的候选区域(region proposal): 降低了时间消耗,提升了候选区域的质量

selective search采用graph-based过分割生成的候选区域(region proposal): 降低了时间消耗,提升了候选区域的质量

深度学习之候选框的选取相关推荐

  1. 动手学深度学习之锚框

    锚框 锚框就是一个框,边缘框就是一个物体的真实的位置的一个框,锚框是对这个边缘框位置的一个猜测.算法先给我们画出一个框,然后看这个框里面有没有物体.如果有的话,算法就基于这个物体进行预测,它到我们真实 ...

  2. [深度学习] imgaug边界框增强笔记

    imgaug边界框增强笔记主要是讲述基于imgaug库对目标检测图像的边界框进行图像增强.本文需要掌握imgaug库的基本使用,imgaug库的基本使用见[深度学习] imgaug库使用笔记. 文章目 ...

  3. 学习笔记之——基于深度学习的目标检测算法

    国庆假期闲来无事~又正好打算入门基于深度学习的视觉检测领域,就利用这个时间来写一份学习的博文~本博文主要是本人的学习笔记与调研报告(不涉及商业用途),博文的部分来自我团队的几位成员的调研报告(由于隐私 ...

  4. 深度学习之目标检测与目标识别

    一 目标识别分类及应用场景 目前可以将现有的基于深度学习的目标检测与识别算法大致分为以下三大类: ① 基于区域建议的目标检测与识别算法,如R-CNN, Fast-R-CNN, Faster-R-CNN ...

  5. 关于深度学习人工智能模型的探讨(八)(1)

    第八章 深度学习模型 8.1 深度学习AI 2012年6月,<纽约时报>披露了Google X实验室的"谷歌大脑"项目,研究人员随机提取了1000万个静态图像,将其输入 ...

  6. 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)

    第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...

  7. 深度学习与围棋:为AlphaGo训练深度神经网络

    2016年,DeepMind的围棋机器人AlphaGo在与李世石的第二局对决中第37手落子的瞬间,整个围棋界都震惊了.评棋人Michael Redmond,一位有着近千场顶级比赛经验的职业棋手,在直播 ...

  8. [深度学习] 初探—学习记录(应用层)

    记录深度学习途中遇到的一些问题,博主目前还未深入的学习理论,只是做应用层.等待系统学习后,规整这些信息 文章目录 学习路线记录 Faster_RCNN Faster_RCNN for DOTA 名词汇 ...

  9. 深度学习与围棋:神经网络入门

    本文主要内容 介绍人工神经网络的基础知识. 指导神经网络学习如何识别手写数字. 组合多个层来创建神经网络. 理解神经网络从数据中学习的原理. 从零开始实现一个简单的神经网络. 本章介绍人工神经网络(A ...

最新文章

  1. C++成员函数在内存中的存储方式
  2. 编译linux内核预备,Linux内核预备知识(1)
  3. layui 鼠标移入变为小手_游戏技术上不去?看看外设选对没!鼠标篇
  4. 框架学习 Spring之概念
  5. java download oracle,Java Archive Downloads - Java SE 6 | Oracle 中国
  6. vue day13 网易云项目(歌词)
  7. java读取scv文件
  8. 从微博数据看国产手机格局 新四大取代中华酷联
  9. 34个非常实用的JS一行代码
  10. GCC编译过程及使用
  11. Unity中Combined Mesh (root: scene)的解决方法
  12. 已知点的经纬度坐标计算/读取DEM高程信息/海拔高度
  13. 最短路径之Floyd(弗洛伊德)算法,以及显示完整路径
  14. 被踢出局!贾跃亭真栽了
  15. 幂级数和函数经典例题_函数项级数和幂级数 习题课
  16. 如何调换计算机桌面壁纸,怎样让电脑自动更换桌面背景
  17. 【GD32F310开发板试用】GD电机驱动底层配置——永磁同步电机控制
  18. linux数组越界,数组越界导致系统崩溃
  19. 少女心多功能便签本,少女心便签软件办公版
  20. 前进永无止境!Pipeline更新又双叒叕来了!

热门文章

  1. MySQL 六.数据库锁
  2. 要么解决问题,要么把问题升华
  3. npm安装时后缀名--save和--save-dev的区别
  4. 理息计算机,会计电算化在企业管理信息系统中的地位和作用
  5. 基于java斗地主_基于Java----斗地主游戏的开发
  6. 日文假名全半角转换空格删除
  7. 简单实现中文分词中的常用字过滤
  8. nginx的域名转发
  9. 第六课:你知道如何用两行代码做个弹窗吗?看这里!两行代码写出一个广告弹窗
  10. 【论文阅读笔记】Cardiologist-level arrhythmia detection and classification in ambulatory electrocardiograms