RCNN 论文重点摘要简记

注:文中在括号中标注为“我理解。。。”的内容为我自己个人对这篇论文表述的理解或者猜测,不一定代表论文作者的真实意思

Section 1:

Section2:

RCNN系统分为三个模型组件

第一个组件生成一个set的推荐region,这些region和类别无关。这个set为接下来的处理提供候选者

第二个组件从每个备选区域中提取出一组固定长度的特征

第三个组件是一个SVM分类器的集合,集合的长度应该是待分类的数量(物体类别数+1背景类)。

2.1 模型设计

候选区域推荐

这段说明RCNN采用Selective Search的方法选出候选区域,但是没有描述Selective Search的实现细节,需要自己查阅相关资料。

特征提取

RCNN使用CNN网络提取了4096个特征,技术上使用caffe来实现。

网络输入是一个227X227的RGB图片,并且经过mean subtract处理,网络模型为5个CNN层和2个全连接层。

候选区域在送入CNN网络之前,先要padding16个像素,然后无论候选区域的形状如何,都直接缩小或者扩大成227X227。

2.2 测试时间检测

selective search 抽取2000个推荐区域,处理成227X227后送入CNN,CNN出来4096个特征后送给SVM集对每个region的每个分类的可信度进行打分,对每一类进行一次NMS非最大值抑制来筛选出相似region中可能性最高的那个框。

运行时间分析

RCNN能够工作是因为第一,训练出来的CNNfeature是针对所有类别的所以这个feature挺管用的,然后这些feature只有4096维,和其他的相比维度也不高(泛化性好)。

运行时间是GPU13秒/图,CPU53秒/图

2.3训练

预训练

在ILSVRC 2012上进行预训练CNN网络,训练的样本都是没有带边框的只有分类标签的图片,我理解这是为了更好地让网络只关注能够为region提供分类的那些特征。(我认为这时候的CNN网络输出的全连接层有1000个分类)

特定领域的微调(我理解是迁移训练)

替换调原来的全连接层,将全连接层换为VOC数据集的20个分类+1个背景分类。使用SGD进行梯度下降训练网络。小技巧是在迁移训练时调小learning rate。使用的训练数据都是region,当region和ground truth的IOU>50%时就判为正例。每个batch包含了32个各种类别不同的正例和96个背景例子。这里为正例增加了偏置,能够使得训练出的网络对正例更敏感。(这里我的个人理解是,实际情况中,输入CNN的推荐region是背景的情况要远远大于正例的情况,毕竟一张图片要推荐2000个候选框,而实际的目标物体比如说车,人,动物之类的并不会有那么多,大多数情况可能也就有几个或者几十个。如果按照实际的背景-目标物体的比例去训练网络,那么网络就会大大偏向于去识别背景。)

对象的类别分类

(我理解上面的微调目的还是要训练好一个能够生成合适4096维特征的CNN网络,微调过程中加上的21维输出的全连接层只是辅助作用,训练完CNN网络后就会把该层拆掉。实际使用时替换为21个SVM,对应21种分类。每个SVM的输出只有一维代表的是推荐区域是否属于这个类的评分。每个SVM的输入为4096维的特征。至于为什么不直接用全连接层进行输出,论文附录进行了说明)

这里训练SVM分类器的时候正例的IOU阈值设为0.3,不要问为什么,因为实验出0.3就是最合适。

之后使用hard negative mining方法来进行训练,这种方法收敛的很快。(hard negative mining简单来说就是将分错的样本加入到下一波训练中进行训练,有点像残差boost思想。其中因为背景样本要远远大于正例样本,所以一开始SVM会更倾向于在背景上面有更多的梯度,通俗但不严谨的理解就是如果每个样本能让模型梯度下降一次,因为背景很多,那可能有100个背景样本让模型下降一次才有一个正例样本让模型下降一次,模型甚至可能会认为那个正例是个噪声!所以我们要让会哭的孩子有奶吃,你不是把我正例当成噪声吗,那我下次训练的时候还来找你,你要还不重视我,我带上其他被你忽视的兄弟们再一起找你,直到你把我认对)

2.4 在Pascal Voc 2010–12数据集上面的结果

1. RCNN和其他人比又快又好

2.一个结论是就算都应用CNN网络,通过不同的方法和路线进行目标检测效果差距还是挺大的

3 可视化,对比试验和模型误差

3.1 可视化学到的特征

这里主要是描述一下CNN网络能够学到的特征。

第一层提取的是一些边缘和opponent colors的底层特征(我理解这里opponent colors互补色意思就是颜色特征吧,不知道“opponent”互补?具体何意)。后面研究了怎么提取深层网络提取出的特征。这段主要研究了网络第五层筛选出来的特征。

首先准备1000万个候选区域,然后把它们输入到网络里。看看网络的第五层都分类出什么特征。第五层输出的通道为256,HxW为6x6。将第五层输出的特征经过激活函数,找出每个channal中评分最高的16个图片。可以看出了不同的channal提取到了不同的高层特征。

3.2 对比实验和3.3误差分析

对比了一些算法,简单来说就是这个算法工作的不错,而且CNN提取特征的能力很强。而且做了一些误差分析

3.4 BBOX 回归

利用CNN去掉两个全连接层的输出,以CNN第五层网络的输出作为特征输入,训练一个线性回归模型。详见我的另一篇博客。

目标检测中边框回归的直观理解 bbox regression_Hugegrunt的博客-CSDN博客

4 语义分割

5 结论

该文认为RCNN成功的关键是

1.使用大型CNN网络来自底而上的提取特征

2.使用fine tuning的方法在预先训练好的网络上

你可能感兴趣的:(CV,深度学习,人工智能,目标检测,计算机视觉)