R-CNN总结

R-CNN

论文发布时间是 2014 年

在过去的十多年时间里,传统的机器视觉领域,通常采用特征描述子来应对目标识别任务,这些特征描述子最常见的就是 SIFT 和 HOG.

利用候选区域与 CNN 结合做目标定位

借鉴了 滑动窗口 思想,R-CNN 采用对区域进行识别的方案。

具体是:

1、给定一张输入图片,从图片中提取 2000 个类别独立的候选区域。
2、对于每个区域利用 CNN 抽取一个固定长度的特征向量。
3、再对每个区域利用 SVM 进行目标分类。

Alt

利用预训练与微调解决标注数据缺乏的问题

采用在 ImageNet 上已经训练好的模型,然后在 PASCAL VOC 数据集上进行 fine-tune。
(ImageNet项目是一个用于视觉对象识别软件研究的大型可视化数据库。超过1400万的图像URL被ImageNet手动注释,以指示图片中的对象;在至少一百万个图像中,还提供了边界框)

因为 ImageNet 的图像高达几百万张,利用卷积神经网络充分学习浅层的特征,然后在小规模数据集做规模化训练,从而可以达到好的效果。

(现在,我们称之为迁移学习,是必不可少的一种技能)

候选区域

R-CNN 采用的是 Selective Search 算法。

特征抽取

R-CNN 抽取了一个 4096 维的特征向量,采用的是 Alexnet ,基于 Caffe 进行代码开发。
(需要注意的是 Alextnet 的输入图像大小是 227x227)

而通过 Selective Search 产生的候选区域Region大小不一,为了与 Alexnet 兼容,R-CNN 采用了非常暴力的手段,那就是: 无视候选区域的大小和形状,统一变换到 227*227 的尺寸。

有一个细节,在对 候选区域Region 进行变换的时候,首先对这些区域进行膨胀处理 ,在其 box 周围附加了 p 个像素,也就是人为添加了边框,在这里 p=16。
(候选框归一化方法: 先在候选框周围加上16个像素的padding,再进行各向异性缩放(即不管原始大小,直接拉伸成矩形),各向同性缩放的效果稍差)

测试阶段的目标检测

1.在测试阶段,R-CNN 在每张图片上抽取近 2000 个候选区域。

2.然后将每个候选区域进行尺寸的 修整变换,送进神经网络以 读取特征 ,然后用 SVM进行类别的识别,并产生分数。

(候选区域有 2000 个,所以很多会进行重叠。)

3.针对每个类,通过计算 IoU指标,采取 非极大性抑制 ,以最高分的区域为基础,剔除掉那些重叠位置的区域。

训练

前面已经提到过 R-CNN 采取迁移学习。
(提取在 ILSVRC 2012 的模型和权重,然后在 VOC 上进行 fine-tune)

需要注意的是,这里在 ImageNet上训练的是模型 识别物体类型 的能力,而 不是预测 bbox 位置的能力

ImageNet 的训练当中需要预测 1000 个类别,而 R-CNN 在 VOC 上进行迁移学习时,神经网络 只需要识别 21 个类别 。这是 VOC 规定的 20 个类别加上背景 这个类别。

R-CNN 将候选区域与 GroundTrue 中的 box 标签相比较,如果 IoU > 0.5,说明两个对象重叠的位置比较多,于是就可以认为这个候选区域是 Positive,否则就是 Negetive.

训练策略是:采用 SGD 训练,初始学习率为 0.001,mini-batch 大小为 128.

Bounding-box回归: R-CNN 训练了一个 线性回归模型去优化目标的定位准确度。具体的就是把边框A内的区域通过提取CNN特征(AlexNet pool5,网络的最后一层),在把这些 特征(而不是物理的大小和坐标点)送入回归模型中,得到该边框A的平移和缩放系数,再对A进行平移和缩放 ,优化位置。

对象识别相关

通常对待一个二值化的分类器,它的结果只要 2 中,Positive 和 Negetive。

(比如,有一个汽车分类器,它可以轻松地确认,一个方框里面包含了一辆汽车,那么它肯定就是 Positive;
也可以很清楚地确认,如果一个背景方框中没有包含汽车,那么它就是 Negetive。)

但是,比较难确认的是,如果一个方框,只有一部分与汽车重叠,那么如何标注这个方框呢?

R-CNN 采用的是 IoU 的阈值,这个 threshold 取 0.3,如果一个区域与 Ground tureth 的 IoU 值低于设定的阈值,那么可以讲它看成是 Negetive.

(IoU 的 threshold 它不是作者胡乱取值的,而是来自 {0,0.1,0.2,0.3,0.4,0.5} 的数值组合的。
而且,这个数值至关重要,如果 threshold 取值为 0.5,mAP 指标直接下降 5 个点,如果取值为 0,mAP 下降 4 个点)

一旦特征抽取成功,R-CNN 会用 SVM 去识别每个区域的类别,但这需要优化。

因为训练的数据太大,不可能一下子填充到电脑内存当中,R-CNN 作者采取了一种叫做 Hard negetive mining 的手段。

框架精简

AlexNet 有 7 层,那么那些层是关键指标呢?哪些层可有可无呢?
Alt

那么 fc6 和 f7 就成了研究的对象。

fc6 与 pool5 构成全连接,为了计算 feature 它会乘以一个 4096x9216 的权重矩阵,然后在与一组 bias 相加,所以它有 3700 多万的参数。

fc7 是最后一层,它的权重矩阵是 4096x409,它的参数有 1678 万多的参数。

但经过作者在 PASCAL 上不做 fine-tune 处理,直接测试,可以 发现 fc7 的意义没有 fc6 大,甚至移除它之后,对于 mAP 结果指标没有影响

移除 fc7 就表示可以减少将近 1800 万个参数。

更惊喜的事情是, 同时移除 fc6 和 fc7 并没有多大的损失,甚至结果还要好一点点

所以,神经网络最神奇的力量来自卷积层,而不是全连接层。

上面说的是没有 fine-tune 的情况,那么在 fine-tune 的情况是什么呢?

结果证明, fine-tune 后 fc6 与 fc7 提升的效果明显

所以 结论就是,pool5 从 ImageNet 训练集中学习了物体的泛化能力,而能力的提升则是通过特定领域的 fine-tune

举个例子,神经网络在 ImageNet 数据集中学习到了 100 种猫的特征,而我自己的数据集只有两种猫,经过 fine-tune 训练后,这个神经网络可以更准确识别这两种猫了。

R-CNN 还与其他的特征方法进行了能力比较,作者选取了两种基于 DPM 的方法,DPM ST 和 DPM HSC,结果都证明,R-CNN 要好于它们。

语义分割

R-CNN 进行语义分割分为 3 个阶段。

1、利用 CPMC 生成候选区域,然后将这些区域调整大小为 227x227,送到神经网络当中,这是 full 阶段,区域中有背景也有前景。
2、这个阶段只处理候选区域的前景,将背景用输入的平均值代替,然后背景就变成了 0 ,这个阶段称为 fg。
3、full + fg 阶段,将背景和前景简单拼接。

回顾

1.R-CNN 采用 AlexNet
2.R-CNN 采用 Selective Search 技术生成 Region Proposal.
3.R-CNN 在 ImageNet 上先进行 预训练,然后利用成熟的权重参数在 PASCAL VOC数据集上进行 fine-tune
4.R-CNN 用 CNN 抽取特征 ,然后用一系列的的 SVM 做类别预测
5.R-CNN 的 bbox 位置回归基于 DPM 的灵感,自己训练了一个 线性回归模型。
6.R-CNN 的 语义分割采用 CPMC 生成 Region

原文:https://blog.csdn.net/briblue/article/details/82012575

R-CNN训练中为什么CNN fine-tuning和SVM对正负样本的定义不一样

CNN fine-tuning时IOU大于0.5即认为是正样本,主要是因为正样本相对负样本(背景)来说很少,同时也为了防止过拟合 ,所以对正样本判定宽松一些 。 (CNN网络的分类是N类+1,1类是背景)。

SVM分类 时, IOU大于0.7认为是正样本,小于0.3认为是负样本,介于0.7~0.3之间的样本忽略
1、SVM 是最终的 分类器 设置比较严格的正样本,恰恰是因为正样本数量少,可是可不是前景物体的区域,大概率上不是前景物体。

2、由于SVM 本身就是基于最小距离对正负样本划分的越难分类的物理对SVM的训练越有利,所以定义较为严格的正样本。
3、 SVM 的特性也适用于小样本,使用比CNN少很多的样本就可以得到较好的分类效果。

同时SVM是二分类器,需要对每个类分分别训练一个SVM分类器。

R-CNN为什么使用SVM分类而不用softmax?

CNN 提取的特征 本身就比较宽松,不是很准确,使用softmax准确度也不会高 ,而 SVM 训练时候采用的是较为严格的样本分类 ,所以 分类准确度更高

R-CNN是怎么选定候选框的?

R-CNN使用传统的Slective Search(选择性搜索)的方法来产生2000个候选框,主要是运用图像分割技术来进行物体检测。

选择性搜索算法的思路:

选择性搜索通过子区域合并的方法提取候选框。
1、首先,对输入图像进行 分割 算法产生许多小的子区域。
2、其次, 根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并 ,不断的进行 区域迭代合并
3、最终合并出来的就是候选框。

原文:https://blog.csdn.net/dcrmg/article/details/84372470

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值