RCNN系列(1):R-CNN—用于精准目标检测和语义分割的功能结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/86291235

论文地址: Rich feature hierarchies for accurate object detection and semantic segmentation
MATLAB实现:github链接

0. 摘要

  论文中提出的方法包含两个关键的点

  • 将卷积神经网络和区域提议selective search方法结合
  • 当训练数据匮乏,在ImageNet上的有监督预训练和微调仍然能够产生大幅性能提升

1. 介绍

  论文使用卷积神经网络来提取特征,因为方法将区域提议和卷积神经网络结合,该方法可以被称为R-CNN:Regions with CNN features,该方法包含四个阶段:

  • 对每个输入图像生成2000左右的候选区域
  • 对每个候选区域使用卷积神经网络进行特征提取
  • 使用SVM判断区域的特征,判断其是否属于该类
  • 使用回归器精细化边框
      定位问题解决之后,还有另一个问题即:有效标注的数据匮乏导致训练大规模的卷积神经网络的训练非常困难。传统的方法是使用无监督的预训练,但该文提出先将卷积神经网络在大的通用数据集比如ImageNet上进行训练后再在小的比如PASCAL VOC数据集上进行微调。

2. 使用R-CNN进行目标检测

  R-CNN包含三个模块,有区域提议模块,特征提取模块(卷积神经网络)和分类模块SVMs。

2.1 模块设计

区域提议;使用selective search选择性搜索区别于滑动窗口的暴力区域识别,可以避免目标碎片,提升检测效率。selective search是结合直觉分割和穷举搜索算法提出的,前者希望集合图片的结构层次从下至上来分割,后者希望得到可能是目标的所有区域,集合二者,得到多样化抽样算法。它具有三个特点即:

  • 使用于所有尺寸
  • 多样化的策略,包括颜色空间,纹理吻合度等
  • 计算快速
      选择型搜索使用的是按层次合并算法,基本思路是:通过对一张图片从低向上来进行层次划分,当划出一个大区域时,继续在这个大区域中迭代划分,知到划不出区域为止,并将这个过程中产生的所有的区域记录下来,再通过颜色、纹理、吻合度、大小[合并后总面积小的,保证合并的尺度均匀,避免大区域吃掉小区域]来将这些细碎的区域进行合并,具体流程如下图:
    在这里插入图片描述
  1. 使用Efficient Graph-Based Image Segmentation中的方法按层次来快速得到分割区域R
  2. 初始化相似度集合S
  3. 从分割区域集合R中来两两计算相似度,放入相似度集合中
  4. 从相似度集合中取出相似度最高的两个分割区域,然后合并并放入R中,然后从相似度集合中去除掉这两个区域相关联的屈居,然后计算合并的新区域和它邻近区域的相似性,放入S中,循环知到S集合为空集
  5. 重复s知到这个区域变为1
  6. 输出这个过程中所有的变化的区域
      多样策略分为两个部分,颜色空间多样性和区域相似度多样性,
  • 颜色空间多样性包括RGB,灰度图,Lab,RGB图像中归一化的rg通道和图像灰度图,HSV,归一化的rgb,C,H
  • 区域相似度多样性包括纹理、吻合度、大小这几个特征
    特征提取;要从每个候选区域中提取一个4096维的特征向量,需要将图片转化为有效的神经网络的输入再进行封装。因为得到的矩形框尺寸各异,不能直接输入CNN,需要将所有的候选框缩小的固定的大小,有两种方法可选:
  • 各向异性缩放:直接缩放不论长宽比
  • 各向同性缩放:不论长宽比进行缩放造成的图片扭曲估计会对后续CNN的训练精度有影响,各向同性缩放方案有两种办法:一是先扩充后裁剪,二是先裁剪后扩充[滑动窗口来定位的化对于深层网络大图片太难了]
      VGG16选择较小的卷积核核较小的步长,网络精度高但是计算量大,但是CNN训练的时候本来就是对边界框中的物体进行识别分类训练,最后一层softmax就是分类层,那么之前的计算量那么大的特征提取阶段再把特征用于训练SVM的目的是什么?
      SVM训练核CNN训练过程的正负样本定义方式各有不同,导致最后采用CNN softmax输出比svm精度还低。因为cnn在训练的时候对训练数据做了宽松的标注,每一个边界框可能只包含物体的一部分也被称为正样本以训练CNN,这样主要是因为cnn容易过拟合,因此需要大量训练数据,所以训练阶段位置限制条件宽松,iou大于0.5都被标注为正样本。而SVM训练使用于少样本,对训练样本要求较高。可以简单看一下SVM的训练过程
      只有当边界框完全包含物体被称为正样本,没有包含车辆的称为负样本。而检测的时候检测窗口只有部分物体,该论文测试了不同的IOU阈值发现,低于0.3的标为负样本效果最好。这样当特征提取出来之后(fc7的输出),为每个类别训练一个svm分类器,每个svm包含4096个权值。

2.2 测试阶段

  测试阶段,先在每张测试图片上划分出2000个左右的区域框,然后封装并计算以抽取特征;然后对于每个类别通过SVM得到一个分数;接着对每个类分别应用非极大值抑制来剔除与分数较大的框的交并比大于某个学习到的阈值的提议框。
  非极大值抑制是指剔除没用的矩形框,比如有六个矩形框,最大概率的一个与其他五个分别比较,去掉超过某一阈值的框,并标记概率最大的一个,保留;剩下的三个,重复上一个步骤,直到找到所有被保留下来的。
运行时分析
  有两个特性能够使检测更加高效,一是卷积神经网络的参数在各个阶段是共享的;二是通过CNN得到的特征向量维度低。

2.3 流程

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kevin_zhao_zl/article/details/86291235
今日推荐