经典目标检测论文分享---Fast R-CNN

一 Preface

背景
之所以会出现复杂性,是因为检测需要对象的准确定位,从而带来两个主要挑战。
首先,必须处理许多候选对象位置 (通常称为 “提案”)。
其次,这些候选者仅提供必须进行细化以实现精确定位的粗略定位。
+
RCNN和SPPnet的Drawbacks
在本文中,我们简化了最新的基于ConvNet的对象检测器的训练过程。我们提出了一种单阶段训练算法,该算法可以共同学习对对象建议进行分类并完善其空间位置。

优点+Fast R-CNN缘由
Answer:
1.比R-CNN,SPPnet 更高的 mAP( mean Average Precision, 即所有类别的平均值)。
2.训练是单阶段的,使用多任务损失
3.训练可以更新所有网络层
4.特征缓存不需要磁盘存储
5.我们提出了一种新的训练算法,该算法可以解决r-cnn和SPPnet的缺点,同时提高它们的速度和准确性。我们称这种方法为Fast r-cnn,因为它的训练和测试一下速度相对较快。

主要创新点
Answer:
1:将最后一个卷积层的SSP Layer改为RoI Pooling Layer;
2:提出了多任务损失函数(Multi-task Loss)(将边框回归直接加入到CNN网络中训练,同时包含了候选区域分类损失和位置回归损失。)

二 Fast R-CNN architecture

整体框图如下:
在这里插入图片描述
Fast R-CNN的输入
Answer:
一是待处理的整张图像;
二是多个RoIs(multiple regions of interest)。

Fast R-CNN处理
Answer:
第一步
使用多个卷积和最大池化层处理整个图像,以生成Feature Maps。由于存在多个候选区域,系统会有一个甄别,判断出感兴趣区域,也就是Region of Interest(RoI)。
第二步
对于每个对象建议,感兴趣区域 (RoI) 池层从特征图中提取固定长度的特征向量。
第三步
每个特征向量,都会被送到全连接(FC)层序列中,这些层最终分支到两个同级输出层中:其中一个在K个对象类(Rols)上产生softmax概率估计,再加上一个catch-all “background” 类,另一个为K个对象类中的每一个输出四个实值数字的层((bbox regression))。每组4个值编码K个类之一的精确边界框(bounding-box)位置。

PS:整个结构是使用多任务损失的端到端训练(trained end-to-end with a multi-task loss)。

三 Core details

只展示论文中涉及的核心内容,使得读者更好理解。具体细节自行去看论文

3.1 RoI Pooling Layer

Answer:
只采用单一尺度进行池化。RoI Pooling Layer将不同尺度的feature map下采样到一个固定的尺度feature map(例如77)。
例如对于VGG16网络conv5_3有512个特征图,虽然输入图像的尺寸是任意的,但是通过RoI Pooling Layer后,均会产生一个7
7*512维度的特征向量作为全连接层的输入。

3.2 预训练网络初始化

当预先训练的网络初始化Fast R-CNN网络时,它会经历三个转换:
Answer:
1:最后一个最大池化层被RoI池化层替换。
2:网络的最后一个完全连接的层和softmax被前面描述的两个同级层替换(softmax
and bounding-box regression)。
3:修改网络输入: 图像和图像中的RoIs。

3.3 Multi-task Loss

Fast R-CNN统一了类别输出任务和候选框回归任务,有两个损失函数:分类损失和回归损失。分类采用softmax代替SVM进行分类,共输出N(类别)+1(背景)类。softmax由于引入了类间竞争,所以分类效果优于SVM,SVM在R-CNN中用于二分类。
回归损失输出的是4*N(类别),4表示的是(x,y,w,h)分别表示候选框的中心坐标和宽、高)。

每个训练RoI都标有地面-真相类u和地面-真相边界框回归目标v。我们在每个标记的RoI上使用多任务损失L来联合训练分类和边界框回归,公式如下:
在这里插入图片描述在这里插入图片描述
对于边界框回归,我们使用如下损失函数:
在这里插入图片描述
是一种鲁棒的L1损失,它对异常值的敏感度低于R-CNN和SPPnet中使用的L2损失

好处:
当回归目标是无界的时,具有L2损失的训练可能需要仔细调整学习率,以防止梯度爆炸。等式smoothL1(x)消除了这种灵敏度。

PS:在本文文章实验中,使用lamada=1进行实验。

3.4 截断SVD分解

截断SVD对全连接层进行分解:
为了进行检测,要处理的RoI数量很大,并且将近一半时间用在全连接的层,为了提高运算速度,可以用SVD(奇异值分解)对全连接层进行变换来提高运算速度。
SVD典型近似公式如下:在这里插入图片描述
SVD原理就是:将一个大的矩阵可以近似分解为三个小矩阵的乘积,分解后的矩阵的元素数目远小于原始矩阵的元素数目,从而达到减少计算量的目的。通过对全连接层的权值矩阵进行SVD分解,使得处理一张图像的速度明显提升。
具体导致:这些层中的第一层使用权重矩阵 ΣtVt (并且没有偏差),第二层使用权重U (原始偏差与W相关)

3.5 Step Cutting

最后为了减少繁琐的目标检测步骤,Fast R-CNN直接使用Softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程只包含提取候选区域和CNN训练两个阶段。此外,Fast R-CNN在网络微调的过程中,不仅微调全连接层,对部分卷积层也进行了微调,得到了更好的检测结果。

四 End

至此核心内容就讲完了

后续的小的细节和实验结果自行看论文,性能和mAP提升了些(但是无非就是性能提升了,精度准确度提高了等等)。

五 Reference

参考
1.论文 Fast R-CNN
2.Fast R-CNN
3.RoI 原理

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值