R-CNN部分总结

【两个关键点】结合了两个关键的见解,1:使用一个高容量的卷积神经网络将region proposals自底而上的传播,用来定位和分割目标,2:如果有标签的训练数据比较少,可以使用训练好的参数作为辅助,进行fine-tuning,能够得到非常好的识别效果提升。因为该方法是将region proposals和CNN相结合的,所以叫做RCNN。 【1.定位】检测需要在图片中定位物体是...
摘要由CSDN通过智能技术生成

两个关键点

结合了两个关键的见解,1:使用一个高容量的卷积神经网络将region proposals自底而上的传播,用来定位和分割目标,2:如果有标签的训练数据比较少,可以使用训练好的参数作为辅助,进行fine-tuning,能够得到非常好的识别效果提升。因为该方法是将region proposals和CNN相结合的,所以叫做RCNN。

 

1.定位

检测需要在图片中定位物体

  1. 是将帧定位视作一个回归问题(Szegedy的工作表明这个方法不太好);
  2. 另一个可替代的方法是使用滑动窗口探测器,通过这种方法使用CNNs至少已经有20年的时间了,通常用于一些特定的种类如人脸,行人等,为了保证较高的空间分辨率,这些CNNs通常只有两个卷积层和池化层。

(3)作者也考虑过使用一个滑动窗口的方法,然而由于更深的网络,更大的输入图片和滑动步长,使得使用滑动窗口来定位的方法充满了挑战。

 作者通过在recongnition using regions操作的方法来解决CNN的定位问题,这个方法在目标检测和语义分割中都取得了成功。

2.数据量

目前可用的有标签的数据是远远不够来训练一个大的CNN网络是另一个挑战的。

(1)对于这个问题,比较方便的解决办法是先使用无监督的方式进行预训练,再使用试用有标签的数据进行fine-tuning。

(2)这篇文章贡献的第二个原则是表明在一个大的数据集上(ILSVRC)进行有监督的预训练,然后再在一个小的数据集(PASCAL)上进行特定场合的 fine-tunring是在数据比较小的时候训练high-capacity CNNs的有效方法。在作者的实验中,使用fine-tuning可以将准确率提高8个百分点。在提取完特征后使用SVM分类器对每个regin属于某一类的可能性进行打分,再使用贪婪的非极大值抑制的方法去除多余的框框。

【模块设计系统分为三个部分

一.生成候选区域

原因产生不依赖与特定类别的region proposals,这些region proposals定义了整个检测器可以获得的候选目标Selective Search的操作流程主要功能就是根据一些小的原则,在原图像上快速自动的生成一些与类别无关的图像区域原文链接:http://koen.me/research/pub/uijlings-ijcv2013-draft.pdf

采用专门候选区域生成方法:选择性搜索遵循selective search)

特点:(1)无监督:无训练过程,无需标注数据

  1. 数据驱动:根据图像特征生成候选区域
  2. 基于图像分割任务(问题)

selective search原则: 

(1)基于图像目标尺寸不一,边缘清晰程度不一样,selective search能够将所有的情况都考虑进去---最好的办法就是使用分层算法来实现

2区域合并的算法应该多元化。初始分割的小的图像区域(Graph-Based Image Segmentation)可能是根据颜色、纹理、部分封闭等原因得到的但因此重叠区域一个单一的策略很难适应所有的情况将小区域合并在一起,因此需要有一个多元化的策略集,能够在不同场合都有效。

3能够快速计算。

  • 特征提取Feature extraction

1一个大的卷积神经网络对于region proposals的特征提取,对每个region产生一个固定长度的特征向量不同大小候选区域缩放到相同大小227*227)。

(2)使用caffe框架,将所有候选区域送入Imagenet数据集上的Alexnet模型5个卷积层+2个全连接层进行特征提取

3CNN全连接要求输入图片都一样尺寸,在计算每个region proposals的特征前会对每个region都归到一样大227×227,最终通过最后一个全连接层每个region都会产生一个4096维的特征向量。

4关于图像缩放,使用的最直接的方法,首先将原始的框向周围增加16的padding,在直接缩放。

5在附加文件中,指出了其他2种缩放方式,1、是将包围盒的短边扩展为和长边一样大,使之成为正方形再缩放,这样做的好处是能保证目标的比例不会变化,2、是将包围盒两边加上图像均值的padding,再缩放,同样保证了目标的比例不会变化。

  • 区域分类+边框校准

一系列特定类别的线性SVM分类器,其针对类别训练(对每个类别单独训练,或者二分类问题)一般用softmax (1.同cnn一起端到端训练;2.可做多分类且所有类别一起训练)

  • 测试阶段的检测

使用selective search的方法在测试图片上提取2000个region propasals ,将每个region proposals归一化到227x227,

然后再CNN中正向传播,将最后一层得到的特征提取出来。

然后对于每一个类别,使用为这一类训练的SVM分类器对提取的特征向量进行打分,得到测试图片中对于所有region proposals的对于这一类的分数,再使用贪心的非极大值抑制去除相交的多余的框。非极大值抑制(NMS)先计算出每一个bounding box的面积,然后根据score进行排序,把score最大的bounding box作为选定的框,计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box。然后重复上面的过程,直至候选bounding box为空,然后再将score小于一定阈值的选定框删除得到一类的结果。作者提到花费在region propasals和提取特征的时间是13s/张-GPU和53s/张-CPU,可以看出时间还是很长的,不能够达到及时性。

  • 训练阶段

有监督预训练 使用caffe框架利用ILSVRC 2012的数据集(imagenet)对网络模型进行训练,使网络模型中的参数都是经过训练过的,而不是刚开始那样随机初始化的参数

特定领域的fine-tuning 为适应不同场合的识别需要,如VOC,对网络继续使用从VOC图片集上对region proposals归一化后的图片进行训练。网络只需要将最后的1000类的分类层换成21类的分类层(20个VOC中的类别和1个背景类),其他都不需要变。

为了保证训练只是对网络的微调而不是大幅度的变化,网络的学习率只设置成0.001。计算每个region proposal与人工标注的框的IoU,IoU重叠阈值设为0.5,大于这个阈值的作为正样本,其他的作为负样本,然后在训练的每一次迭代中都使用32个正样本(包括所有类别)和96个背景样本组成的128张图片的batch进行训练(这么做的主要原因还是正样本图片太少了)

特定类别的分类器  对每个类都训练一个线性的SVM分类器

(1)训练SVM需要正负样本文件

这里的正样本就是ground-truth框中的图像作为正样本,完全不包含的region proposal应该是负样本,但是对于部分包含某一类物体的region proposal该如何训练呢,同样使用IoU阈值的方法,这次的阈值为0.3,计算每一个region proposal与标准框的IoU,小于0.3的作为负样本,其他的全都丢弃。

  1. 训练样本较大:

使用了standard hard negative mining method(具体怎么弄的不清楚)来训练分类器。在补充材料中讨论了为什么fine-tuning和训练SVM时所用的正负样本标准不一样,以及为什么不直接用卷积神经网络的输出来分类而要单独训练SVM来分类,作者提到,刚开始时只是用了ImageNet预训练了CNN,并用提取的特征训练了SVMs,此时用正负样本标记方法就是前面所述的0.3,后来刚开始使用fine-tuning时,也使用了这个方法,但是发现结果很差,于是通过调试选择了0.5这个方法,作者认为这样可以加大样本的数量,从而避免过拟合。然而,IoU大于0.5就作为正样本会导致网络定位准确度的下降,故使用了SVM来做检测,全部使用ground-truth样本作为正样本,且使用非正样本的,且IoU大于0.3的“hard negatives”,提高了定位的准确度。

  • BoundingBox回归--提高定位的准确度

 在对各个region proposal打分后,利用回归的方法重新预测了一个新的矩形框。如上图所示,通过selective search得到的region proposal可能与ground truth相差较大,尽管这个region proposal可能有很高的分类评分,但对于检测来说,它依然是不合格的

boundingbox的工作方式借鉴博客http://blog.csdn.net/bixiwen_liu/article/details/53840913的描述

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值