Fast R-CNN算法详解

1. 最大创新点:

       应用RoI pooling layer将R-CNN中大量region proposal输入CNN训练以得到候选框的特征改变成由CNN训练图像然后在输出的图像特征上映射每个region proposal所对应的特征区域。避免了CNN重复计算相同的区域(因为原始的region proposal肯定有大量的重复区域)。简单总结:

  • Fast R-CNN将整张整张图片归一化之后直接送入深度网络,邻接时才加入候选框信息,只有末尾的少数几层才处理每个候选框;相比之下,R-CNN框架中,一张图像内候选框之间大量重叠,需要重复地提取特征,耗时间。
  • Fast R-CNN把类别判断和位置精修统一到一个深度网络中,不需要额外存储;相比之下,RCNN中独立的分类器和回归器需要大量特征作为训练样本,耗空间。

2. 流程

  • Selective Search在一张原始图片中得到约2k个候选框(这里称为RoI);
  • 使用卷积网络(CNN-VGG16)提取原始图片特征;
  • 在conv5出来的feature map上,使用RoI pooling layer根据之前的RoI对应的原图的位置和大小计算出每个RoI对应的输出的feature map上的具体位置、形状和大小,再统一到一样的尺度(文中是7 x 7);
  • 继续经过两个全连接层得到特征,然后分别经过一个新的全连接层,最后连接上各自的损失函数: 

                 一个是分类,使用softmax函数;
                 一个是回归,使用smooth的L1-loss范式。 
 

3. RoI pooling layer

详细原理及过程请参考博主另一篇博文:点击

4. 分类与边框回归

此处,复制别人的分析,非常有道理。

  • 边框回归:

  • 分类:

不再像R-CNN需要通过SVM等分类器来分类,Fast R-CNN使用神经网络来进行分类操作:输出K+1维数组pp,表示属于K类和背景的概率,这是针对每个ROI区域的分类概率预测

分类代价(损失)为:

其中,表示u属于正确类别的概率,如u为背景,则对应

  • 联合损失:

猜你喜欢

转载自blog.csdn.net/xunan003/article/details/86584069