论文研读:Fast R-CNN

目录

[TOC]

前面我们介绍了RCNN和SPP-Net,这次来介绍一下Fast R-CNN。

论文地址:https://arxiv.org/abs/1504.08083
代码:https://github.com/rbgirshick/fast-rcnn

摘要:
fast rcnn摘要

R-CNN和SPP-net存在的问题

训练过程pipeline 比较麻烦:R-CNN 和 SPP-net 的训练分为多个步骤,较为繁琐

• 1. 对网络进行微调
- R-CNN对整个CNN进行fine tuning
- SPP-net只对SPP之后的(全连接)层进行fine tuning(这个也限制了其准确度的提高)

• 2. 针对每个类别训练SVM,替代softmax
• 3. 训练bounding-box回归模型

训练过程耗费时间和内存空间

1.需要用CNN提取所有训练样本的特征
2.在训练SVM和回归的时候都需要用CNN提取的特征作为输入,特征需要写入磁盘上,时间开销大

“With Very Deep Networks, Such As Vgg16, This Process Takes 2.5 Gpu-Days For The 5k Images Of The Voc07 Trainval Set. These Features Require Hundreds Of Gigabytes Of Storage.”

目标检测比较慢

尤其是 R-CNN,在测试阶段,需要对每张测试图片的每个目标候选区域都进行卷积操作,操作重复了很多,比较耗时。基于 VGG16 的R-CNN 算法 在单 GPU 上检测一张图需要47s。

主要贡献

提出了一种新的训练算法来解决 R-CNN 和 SPPnet 的缺陷,同时提高了它们的速度和准确性。作者将这种方法为 Fast R-CNN,因为它训练和测试相对较快。Fast R-CNN 方法有以下几个优点:
1. 比 R-CNN,SPPnet 更高的检测质量(mAP)。
2. 训练是单阶段的,使用多任务 loss。
3. 可以在训练时更新所有网络层。
4. 不需要磁盘存储特征。Fast R-CNN把类别判断和位置精调统一用深度网络实现,不再需要额外存储。

解决办法

保留 SPP-net 的优势 : 简化 SPP 为单尺度: RoI pooling

SPP-net中spp layer我们采用的是多尺度SPP,如果使用单尺度,则变成了本文的ROI pooling。RoI pooling 将每个候选区域均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为统一维度的特征向量,送入下一层。

引入多任务学习,将多个步骤整合到一个网络模型中

在R-CNN算法中,首先生成大量候选区域,然后再通过 CNN 提取特征,之后再用 SVM 进行分类,最后再做边框回归校准。而在Fast R-CNN中,把最后的边框回归也放进了深度神经网络,与候选区域分类合并成为了一个多任务模型。

边框回归:使用Smooth L1 Loss

R-CNN 和 SPP-net 使用的是 L2 loss。

使用Truncated SVD进行全连接层加速

对于图像分类,与conv层相比,计算全连接层所花费的时间相对较少。 相反,为了检测,要处理的RoI的数量很大,并且将近一半的前向传播时间用于全连接层的计算。如图。因此,采用了SVD进行简化全连接层运算。

算法图解

fast rcnn

训练阶段

训练fast rcnn

测试阶段

测试fast rcnn

结果

  1. 在V1. OC07, 2010, and 2012 上都达到了论文发表时(2015年)的 State-of-the-art mAP。
  2. 比起 R-CNN, SPPnet 训练更快,测试也更快。
  3. 在VGG16模型上能微调卷积层,提高了检测精度。

    4.证明了多任务(multi-task)训练的有效性。

总结

Fast R-CNN继承了spp-net的优点,引入ROI Pooling,不用对每个候选区进行卷积,只需对整张图片进行卷积,其次,将分类和回归放在一起,进行multi-task 的训练,简化了训练步骤,是个很大的创新。当然,Fast R-CNN 依然值得改进,因为目标检测中大量的时间消耗在seletive search提取候选区域的过程中。后续Faster R-CNN将重点解决这个问题。

参考文献

https://arxiv.org/abs/1504.08083
https://blog.csdn.net/u014380165/article/details/72851319
http://www.robots.ox.ac.uk/~tvg/publications/talks/fast-rcnn-slides.pdf


笔者目前主要从事自动驾驶研发工作,本公众号主要关注机器人和自动驾驶方向的技术以及最新进展,闲暇时也和大家聊聊读书、生活以及最新的电子科技产品,希望大家喜欢,共同进步!
欢迎关注

打赏作者