R-CNN(Regions with CNN features)

测试

R-CNN(Regions with CNN features)_第1张图片
图1 RCNN流程图

1.  输入原始图片

2.  利用选择性搜索(seletive search, SS)生成2000个候选区域(region propsal, RP)

3.  将每个RP放缩到一定尺寸(如AlexNet 的227*227),利用深度卷积神经网络提取特征

4. 基于步骤3提取的特征,利用SVM分类。

5. BB(可选)和 NMS(mon-maximun suppression)

训练

fine-tuning

1. 只使用放缩后的RP,在VOC上fine-tuning ImagNet的分类模型,分21类(20类 + 背景);

2. 将每个RP分正负样本:称某个RP是正样本, 如果它与某个GT的IoU大于0.5,其余记为负的。也就是说IoU大于0.5的候选区域才认为包含物体, 其它的被认为是背景;

3. batch_size=128,其中32是正样本, 96是负样本。这么做是因为标记为正的RP相对于背景来说太少了;

分类器

1. 分类器是SVM,不是DCNN的Softmax,原因看第三点。 记某个RP是负样本,若它与所有的GT的IoU都小于0.3(这个是根据val set通过网格搜索得到的, 注意这里和FT的阈值是不一样的,一个是0.3,一个是0.5)。只有GT视为正样本。其它的RP忽略。

2. 训练SVM采用难负样本挖掘(hard negative mining),因为训练数据太多啦内存装不下,而且难负样本挖掘收敛速度快(mAP在一次遍历后就停止增长啦!);

R-CNN(Regions with CNN features)_第2张图片

3. 论文里解释,一开始没有考虑FT,直接使用ImagNet的分类模型提取特征进行SVM分类,通过网格搜索得到0.3的阈值。后面考虑FT,如果采用0.3来区分正负样本,得到的结果比0.5差很多。文中猜测是其实不是阈值大小的问题而是数据量的问题(数据太少)。现在取0.5能把数据集扩充30倍,能避免网络过拟合,但是也引起了另一个问题--就是目标定位不精准。

4. 还有一个问题--就是为什么不用Softmax而用SVM, 这当然是SVM的效果好啦(54.2%  > 50.9%)。为什么会这样? 文中猜测是因为FT的正负样本定义没有突出目标位置的精确,而且Softmax在负样本的选取上是随机采样的,而不像SVM的选取难负样本的子集。

结果


R-CNN(Regions with CNN features)_第3张图片
表一 VOC2007 test 结果

w/o FT

没有FT的情况下,提取不同层检测,结果fc6 > fc7 > pool5, 而且pool5和fc6的结果相差不大(才2%),这显示了CNN的表征能力来自卷积层而不是参数占大多数的全连接层。

FT

FT的情况下,提取不同层检测,结果fc7 > fc6 > pool5,而且fc6(7%)、fc7(~10%)的提高效果明显,而pool5不显著(~3%),这说明ImageNet的pool5的泛化性能很好,FT后性能提升主要来自全连接层。

BB(bounding-box regression)

R-CNN(Regions with CNN features)_第4张图片
图2 假正分布图


从第一行可以看到错误主要来自定位误差,从第三列可以看出采用BB后定位误差下降不少

- BB在SVM之后, NMS之前

R-CNN(Regions with CNN features)_第5张图片
P 代表RP, G指GT, d


下标5代表pool5
根据val set lambda=1000
R-CNN(Regions with CNN features)_第6张图片

如果P远离所有的GT,则d的学习没有意义。所以只学习至少与某个GT的IoU最大且IoU大于0.6的RP(根据val set)。

参考文献

1.  Rich feature hierarchies for accurate object detection and semantic segmentation

2. Training Region-based Object Detectors with Online Hard Example Mining

你可能感兴趣的:(R-CNN(Regions with CNN features))