Fast R-CNN 论文阅读

Fast R-CNN 论文阅读

这里写图片描述

0.简介

R-CNN算法很大程度上提高了detection的效果,本文在R-CNN的基础上进行改进,在训练预测速度上有较大提升的同时也带了精度的提升。具体的:

-借鉴并改进了SPPNet的共享卷积层计算思想,提出了ROI pooling,这样做可以在精修的时候对卷积的部分也进行参数的调整,也带来了最终结果的提升。
- 将SVM分类器换成softmax,在RCNN中也提到了这样做可以提升速度
- 将bounding box regression整合到网络
-不需要保存feature,节省存储空间(其实这是一个很重要的问题)
Fast R-CNN 论文阅读_第1张图片
可以看出,如果提供了预训练的卷积参数与proposals,剩余的部分被作者整合到了一起,在精修时是一个端到端的训练(ROI pooling 可以bp)。

1. Fast-RCNN 框架

借图
Fast R-CNN 论文阅读_第2张图片
可以看出,经过ROI Pooling 以及多任务,网络可以进行image wise的训练。

RoI pooling layer: roi_pool层将每个候选区域(CxHxW)均匀分成M×N块,对每块进行max pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。 具体实现就是设输出大小Cxhxw,固定pooling的kernel size设置成(H/h, W/w),步长也是一样。
bp过程:

Lxi=rjI(i=i(r,j))Lyr,j∂L∂xi=∑r∑jI(i=i∗(r,j))∂L∂yr,j

最简单的理解就是对于ROI 之间的一个Max pooling bp的加和,可以想想SPPNet中每个ROI单独计算,那对应到整图就是这个加和,SPPNet 不需要对CNN进行精修,故而不会涉及到这个问题。这样做带来的问题是对于一个Batch,所有的ROI出自同一张图,但是作者指出这样不会导致结果下降。
Multi-task loss:对于分类问题会bb regression部分的的整体损失定义为:
L(p,u,tu,v)=Lcls(p,u)+λI(u1)Lloc(tu,v)L(p,u,tu,v)=Lcls(p,u)+λI(u⩾1)Lloc(tu,v)

其中第一项为分类损失,采用log loss,第二项为归一化坐标损失,采用smoothL1 Loss,相比L2 loss,不需要精心的调节来防止梯度爆炸。这就构成了一个单步训练的多任务网络。
Truncated SVD for faster detection:利用SVD来减少全连接的计算,主要是因为每张图中选了很多的ROI,导致全连接部分计算耗时很大,作者采用SVD来平衡速度与精度。最终的计算量由 uvuv减少到了 t(v+u)t(v+u)

实验结果

如下表所示:
Fast R-CNN 论文阅读_第3张图片
速度对比:
Fast R-CNN 论文阅读_第4张图片
文中最后得到一些结论,Multi-task训练可以提高分类结果,在FRCN中,softmax要好于SVM,鼓励类间竞争,RCNN中的结果有区别。
并不是proposals越多越好,越让整个网络趋近与端到端越好回头想想,现在只剩下proposal这一块没放进网络了,所以为了加速整合R-CNN各个步骤,更趋近端到端的训练可以提高结果,从而达到速度与效果的双赢。

你可能感兴趣的:(计算机视觉学习)