深度学习小白笔记:R-CNN

看过yolo之后,回顾图像分割领域,把之前没有好好看的R-CNN部分的网络知识做了一个简单的梳理,讲的可能不是很详细,仅仅单从R-CNN网络出发,谈谈对这方面内容的理解。
首先讲讲R-CNN的出处论文吧。
文章是2014年发表的。名为:《Rich feature hierarchies for accurate oject detection and semantic segmentation》,翻译为:针对高准确度的目标检测与语义分割的多特征层级。简单的理解就是一个用来做目标检测和语义分割的神经网络。
这篇论文的直接成果:
1.将神经网络应用在自底向上的候选区域,进行目标分类和目标定位。
2.提出了新的观点:当缺乏大量的标注数据时,可以尝试进行神经网络的迁移学习,采用在其他大型数据集训练过后的神经网络,然后在小规模特定的数据集中进行 fine-tune 微调。
3.在 Pascal VOC 2012 的数据集上,将目标检测的验证指标 mAP 提升到 53.3%,这相对于之前最好的结果提升了整整 30%

object detection
就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。
在这里插入图片描述
object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。

面对这种问题,R-CNN通过AlexNet等神经网络的启发,尝试将 AlexNet 在 ImageNet 目标识别的能力泛化到 PASCAL VOC 目标检测上面来。

面临问题:
如何利用深度的神经网络去做目标的定位?
如何在一个小规模的数据集上训练能力强劲的网络模型?

解决方案: 利用候选区域与 CNN 结合做目标定位
借鉴了滑动窗口思想,R-CNN 采用对区域进行识别的方案
在这里插入图片描述
具体思路:
1:训练(或者下载)一个分类模型

2:

  • 对该模型做fine-tuning
  • 将分类数从1000改为20
  • 去掉最后一个全连接层

3:特征提取
• 提取图像的所有候选框(选择性搜索)
• 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘再对每个区域

4:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别
每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative

特征抽取
R-CNN 抽取了一个 4096 维的特征向量,采用的是 Alexnet,基于 Caffe 进行代码开发。需要注意的是 Alextnet 的输入图像大小是 227x227。
而通过 Selective Search 产生的候选区域大小不一,为了与 Alexnet 兼容,R-CNN 采用了非常暴力的手段,那就是无视候选区域的大小和形状,统一变换到 227*227 的尺寸。有一个细节,在对 Region 进行变换的时候,首先对这些区域进行膨胀处理,在其 box 周围附加了 p 个像素,也就是人为添加了边框,在这里 p=16。

测试阶段的目标检测
在测试阶段,R-CNN 在每张图片上抽取近 2000 个候选区域。然后将每个候选区域进行尺寸的修整变换,送进神经网络以读取特征,然后用 SVM 进行类别的识别,并产生分数。候选区域有 2000 个,所以很多会进行重叠。针对每个类,通过计算 IoU 指标,采取非极大性抑制,以最高分的区域为基础,剔除掉那些重叠位置的区域。

训练:

提取在 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.

R-CNN 的在 PASCAL-VOC 2010-12 的表现:
在这里插入图片描述

同时R-CNN还被用于语义分割领域,并被哪来与O2P 对比
R-CNN 进行语义分割分为 3 个阶段。
1.利用 CPMC 生成候选区域,然后将这些区域调整大小为 227x227,送到神经网络当中,这是 full 阶段,区域中有背景也有前景。
2.这个阶段只处理候选区域的前景,将背景用输入的平均值代替,然后背景就变成了 0 ,这个阶段称为 fg。
3.full + fg 阶段,将背景和前景简单拼接。
(没有仔细研究语义分割,就不展开写了)

总结:R-CNN通过对前人网络的灵活变通,为图像分割提供了有效的解决方案。
ps:看的有些仓促,有很多细节没有仔细研究,等具体实践了,会对文本进行补充。

参考文献:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值