Fast R-CNN学习笔记

本专栏将从论文的角度解读一下CV方向的一些经典神经网络模型及其贡献与意义,以期加深自己的印象,后续可以随时翻看并且学习其中好的tricks。上一期讲的SPPNet基于R-CNN最大的改进,其实就是对整张图而不是对2000个候选框进行特征提取,加快了速度,这一期来看看Fast R-CNN又做出了哪些改进。

论文相关信息

《Fast R-CNN》(论文链接),于2015年发表在CVPR上,相关信息如下:

在这里插入图片描述
论文所使用数据集为PASCAL VOC 2007、2010、2012数据集。

网络架构

在这里插入图片描述
从上图可以看出Fast R-CNN的架构,其实和SPPNet非常相似。首先在图像上使用选择性搜索抽取2000个推荐区域,然后把整张待检测的图片输入到CNN(Fast R-CNN论文中使用的是VGG,而R-CNN使用的是AlexNet)中,进行一次特征提取,得到feature map,然后在feature map中通过映射关系找到各个候选框对应的区域,再对各个候选框利用RoI池化(Region of Interest,由Selective Search算法提取的一系列可能含有object的bounding box,通常称为region proposals或者region of interest;RoI池化其实就是SPP池化的单尺度简化版本,具体可看这里)提取出固定长度的特征向量,到此都和之前说的SPPNet步骤一模一样。

在最后一步稍有差别,也是最大的改进:R-CNN和SPPNet都是拿得到的特征向量再去训练SVM分类和BBox回归,而Fast R-CNN 则是直接放入并行的bbox回归与softmax分类的多任务全连接层(图转自这里):

在这里插入图片描述

损失函数具体公式为:

在这里插入图片描述
在这里插入图片描述
训练过程(图转自这里):

在这里插入图片描述
测试过程(图也转自这里):

在这里插入图片描述

tricks

这篇文章有一个特别好的点,在论文中直接通过清晰的实验来评估他们的各个tricks改进是否有效:

在这里插入图片描述
1、multi-task training(多任务训练)是否有效

首先多任务训练这种端到端的方式改进了Multiple-stage pipeline的方式,无疑是方便的,但是它对精度有什么影响呢?

如下图,S、M、L的第一列是只使用分类损失Lcls训练的模型,第二列则是使用上面提到的公式(1)多任务损失训练的模型,但测试时禁用了检测框回归,可以看到多任务损失确实能提高精度。第三列则是分段训练,在第一列训练好的模型基础上添加了检测框回归层,使用Lloc训练同时保持其他层参数冻结,第四列是正常的多任务训练和测试。第一列和第三列作为对照实验,证明了多任务训练确实能提高分类和回归的精度。
在这里插入图片描述
其中S、M、L:

在这里插入图片描述
在这里插入图片描述
即3个预训练ImageNet模型。第一个是来自R-CNN的CaffeNet(本质上是AlexNet),称为模型S。第二个网络是VGG_CNN_M_1024,该网络具有与模型S相同的深度,但是更广阔,称为模型M。最后一个网络是VGG16,称该网络为模型L。

2、RoI池化 or SPP池化

因为RoI池化是单尺度的,而SPP池化是多尺度的。作者们使用了指定的相同的五个尺度(s∈{480,576,688,864,1200})来与SPPNet做比较:

在这里插入图片描述
令人惊讶的是,单尺度检测几乎与多尺度检测一样好,多尺度方法消耗大量的计算时间仅带来了很小的mAP增加,作者们认为这是因为深度卷积网络擅长直接学习尺度不变性。

3、更多的训练数据是否有用

在这里插入图片描述
显然…

4、SVM分类 or Softmax分类

Fast R-CNN在微调训练期间使用Softmax分类器,而在R-CNN和SPPNet中训练的是线性SVM:

在这里插入图片描述
本组对比实验说明,SVM略次于Softmax.

5、更多的候选框是否有用

SS产生的是候选区域的稀疏集合,那么使用密集集合效果如何呢?如果候选框只是纯粹扮演一个可能被选择的角色,增加每个图像的候选框数量应该不会使得mAP降低。

在这里插入图片描述
这个实验表明,用更多的候选区域没有帮助,甚至会起一点反效果。此外,使用平均召回率AR并不像mAP那样起到好的度量效果。

总结

Fast R-CNN 是针对 R-CNN 和 SPPNet 的改进,实现了端到端的多任务训练,也不再需要额外将特征保存在磁盘上,加快了速度的同时还节省了所需存储空间。

另外还有值得一提的一点,后续有学者在Fast R-CNN中使用EdgeBoxes算法介绍)来代替SS算法,对于SS的优化也提高了Fast R-CNN很大一部分性能,相关论文给出的数据是Selective Search:2s/张,EdgeBoxes:0.2s/张,也就是提高了十倍的速度,在区域质量和速度之间取得了比较好的平衡。

但是即使Fast R-CNN用EdgeBoxes产生区域推荐,这一步仍然和整个检测网络花费了一样的时间,能不能针对这点改进呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值