Fast RCNN

来源:互联网 发布:客管家软件评论 编辑:程序博客网 时间:2024/05/29 10:40

基本介绍

Fast RCNN应该是启发于ROI以及RCNN对SPP-Net以及R-CNN的优化。

其主要的贡献点主要有两个方面,一方面是实现了大部分的端对端训练(提取proposal 阶段除外), 其将所有的特征都暂存在显存中,不需要额外的空间(将SVM分类和bounding box回归都整合到了CNN阶段进行训练);另外一方面提出了一个RoI层,实际上该层应该是SPP的变种,区别是SPP中是pooling成多个固定尺度,而RoI只pooling到单个固定的尺度(论文通过实验得到的结论是多尺度学习能够提高一点mAP,但是计算量成倍增加,因此选择单尺度训练)。

SPP-Net, R-CNN, Fast R-CNN网络结构对比

这里写图片描述

这里写图片描述

通过SPP-Net与RCNN网络之间的对比我们可以看到,两者都是四阶段完成的,SPP-Net对于R-CNN的最大改进是前者将一张图片仅仅使用了一次卷积,而不是2000多个bounding box分别就进行卷积。其实现的关键是引入了SPP层,一方面实现了feature map向原图感知野的映射,另外一方面实现的全连接网络feature map的尺度控制。

接着来看一下Fast R-CNN:

这里写图片描述

一方面其也仅仅需要对于一张图训练一次,另外一方面将softmax分类与bounding box回归这两个任务融合到了一个损失函数之中。

使用softmax回归而不是svm的原因: 论文通过对比试验说明SVM相对于softmax回归的优势并不明显,因此直接用softmax回归将整个网络整合训练更好:同时利用了分类的监督信息和回归的监督信息,使得网络训练更加鲁棒,通过这两种信息的联合,效果更好。

RoI Pooling

与SPP的目的相同:如何把不同尺寸的ROI映射为固定大小的特征。ROI就是特殊的SPP,只不过它没有考虑多个空间尺度,只用单个尺度。

关于ROI Pooling 的细节可以参考: ROI Pooling层解析

Bounding-box Regression

在Fast R-CNN中,有两个输出层,一个是针对每个ROI的分类概率p = (p0, … , pK),第二个是针对每个ROI区域坐标的偏移优化这里写图片描述。 k是多类检测的类别序号。

以下着重进行坐标偏移优化的讲解。

假设对于类别k*, 在图片中标注了一个ground truth坐标: 这里写图片描述, 而预测值为t(形式与上述相同),两者理论上越接近越好,此处定义损失函数:

这里写图片描述

其中x是两t对应的坐标的差距。形式如上,论文中表示这种形式可以增强模型对异常数据的鲁棒性。

Fast R-CNN是R-CNN向Faster R-CNN的过渡,更多的细节将在Faster R-CNN中进行讲解。

The End.