Fast RCNN 学习笔记

论文题目:Fast R-CNN
论文链接:https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf
论文代码:https://github.com/rbgirshick/fast-rcnn.
相关笔记:目标检测学习笔记

一、RCNN存在的缺点

1.RCNN训练分成多步骤实现。
2.训练时间和空间消耗大:在训练SVM和回归的时候需要用网络训练的特征作为输入,特征需要保存在磁盘上。
3.检测速度慢:每张图片的每个region proposal都要做卷积,在VGG16做基础网络,GPU上每张图需要47s。

二、Fast RCNN的主要贡献

1.与R-CNN, SPPnet相比,取得了更高的mAP。
2.利用多任务损失将训练变为单阶段训练。
3.训练可以更新所有的网络层。
4.特征缓存不再需要保存在磁盘中。

三、Fast RCNN的系统结构

在这里插入图片描述

图1 Fast RCNN的系统结构图

在这里插入图片描述

图2 Fast RCNN的流程图

 Fast RCNN的系统结构如图1所示,工作流程如图2所示。首先是将整张源图像输入卷积神经网络提取特征,同时,将整张源图像输入selective search模块推荐区域,然后将推荐区域映射到CNN输出特征图上,这样就避免了对每一个推荐区域都做CNN特征提取,然后对每一个CNN特征图上的推荐区域做ROI pooling,再经过两层全连接得到ROI特征向量,最后分成两路,一路经过一个全连接后softmax类别输出,另一路经过一个全连接后bbox回归输出。

四、ROI pooling

1.RCNN需要对候选区域进行缩放的原因

 RCNN中的神经网络主要包括卷积和全连接,卷积层可以适应任意大小的输入图像,并可以产生相应大小的特征图,但是全连接参数是神经元对于所有输入的权重,全连接的输入维度不固定会导致全连接权重不去确定,网络将无法训练。

2.既能固定全连接层的输入维度又不让候选区域产生畸变的方法

 为了既能固定全连接层的输入维度又不让候选区域产生畸变,很自然的想法就是在卷积层和全连接层的衔接处加入一个新的网络层,使得通过该层后特征的维度可以固定,Fast RCNN中的这个层就是ROI poling,ROI pooling是SPP Layer的简化版。

3.ROI pooling 思路

 由于region proposal的尺度各不相同,而期望提取出来的特征向量维度相同,因此需要ROI pooling来做保证。ROI pooling的思路如下:
(1)将region proposal划分为H×W大小的网格;
(2)对每一个网格做MaxPooling(即每一个网格对应一个输出值);
(3)将所有输出值组合起来便形成固定大小为H×W的feature map;

四、多任务损失函数

 Fast RCNN统一了分类损失函数和回归损失函数。分类采用softmax代替RCNN中的SVM进行分类,共输出N(类别)+1(背景)类。softmax由于引入了类间竞争,所以分类效果优于SVM,SVM在R-CNN中用于二分类。回归损失输出的是4*N(类别),4表示的是(x,y,w,h)。

1.总损失函数:
在这里插入图片描述
其中Lcls表示class分类的损失函数,Lloc表示bounding-box的损失函数。
2.分类损失函数:
在这里插入图片描述式中u是ground truth的分类。
3.定位损失
在这里插入图片描述
式中:
在这里插入图片描述
其中v是ground truth。

五、全连接层运算的改进

 由于Fast RCNN中卷积层计算针对的是一整张图片,而全连接层需要对每一个region proposal都作用一次,因此计算量占比很大,从图3可以看出,fc6和fc7全连接层总的运算时间大约占所有运算时间的45%。因此,作者采用SVD来简化全连接层计算。
在这里插入图片描述

图3 VGG16在全连接层是否进行SVD操作的运算量对比图

 为了提高运算速度,可以用SVD(奇异值分解)对全连接层进行变换来提高运算速度。一个大的矩阵可以近似分解为三个小矩阵的乘积,分解后的矩阵的元素数目远小于原始矩阵的元素数目,从而达到了减少计算量的目的。通过对全连接层的权值矩阵进行SVD分解,使得处理一张图像的速度明显提升。

六、总结

 Fast RCNN是在RCNN的基础上进行了改进,通过推荐区域在卷积输出特征图上映射的方法避免了CNN重复运算,用ROI pooling层解决了全连接层的维数固定问题,用SVD方法提高了全连接层的运算速度,用softmax代替了RCNN中的SVM,将原有分段的操作过程进行了合并,将损失函数也合并成了多任务损失函数。但还有不足之处,region proposal的提取仍然采用selective search,整个检测流程时间大多消耗在这一步(生成region proposal大约2~3s,而特征提取+分类只需要0.32s),之后的Faster RCNN的改进之一便是此点。

参考

[2]目标检测算法Fast R-CNN简介
[2]Fast R-CNN(理解)
[3]Fast RCNN学习笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值