Fast R-CNN 目标检测算法详细总结分析(two-stage)(深度学习)(ICCV 2015)

版权声明:转载时,请务必注明文章出处网址,谢谢! https://blog.csdn.net/Gentleman_Qin/article/details/84368265

论文名称:《 Fast R-CNN 》

论文下载:https://arxiv.org/pdf/1504.08083.pdf

论文代码:https://github.com/rbgirshick/fast-rcnn


一、 网络结构:

(1)
(2)
图2 Fast R-CNN网络结构

将整幅图像作为卷积网络的输入,经过一些列卷积和最大池化层后,得到整幅图的conv feature map.同时用Selective Search 方法提取2k个object proposals,找出整幅图的卷积特征映射中每个object proposals所对应的feature map, 它们经过一个ROI pooling layer 形成一个固定长度的feature map(全连接层要求输入大小相同),再经过两个全连接层,生成固定长度的feature vector。使用softmax网络进行分类,最后再进行边界框的回归。

ROI pooling层能实现training和testing的显著加速,并提高检测accuracy。该层有两个输入:

  • 从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
  • 一个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;

ROI pooling具体操作如下:

(1)根据输入image,将ROI映射到feature map对应位置;

(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);

(3)对每个sections进行max pooling操作;

这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。

二、训练:

分类和边框回归同时训练,损失函数为:

Fast R-CNN的损失函数

三、测试过程:

(1)任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;

(2)在任意size图片上采用selective search算法提取约2k个建议框;

(3)根据原图中建议框到特征图映射关系,在特征图中找到每个建议框对应的特征,并在RoI池化层中将每个特征框池化到H×W的size;

(4)固定H×W大小的特征框经过全连接层得到固定大小的特征向量;

(5)第4步所得特征向量经由各自的全连接层,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;

(6)利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠建议框,最终得到每个类别中回归修正后的得分最高的窗口。

四、创新点:

  1. 只对全图进行一次特征提取,不用对2K个建议框都进行卷积特征提取,大大缩短运行时间和硬件资源消耗。
  2. 在卷积层与全连接层之间加入SPP-net,替换之前的pool5,SPP层对特征进行池化,并产生固定长度的输出,这个输出再给全连接层,使得网络适应任意尺寸的图像输入。
  3. 网络末尾采用并行的不同全连接层,可输出分类结果和边界框回归结果,实现端到端的多任务同时训练,减少硬件缓存。
  4. 采用SVD对Fast R-CNN网络末尾并行的全连接层进行分解,减少计算复杂度,加快检测速度。

五、存在问题:

  1. 仍然使用Selective Search方法进行候选框的提取,复杂耗时。
  2. 仍然没有实现实时目标检测。

猜你喜欢

转载自blog.csdn.net/Gentleman_Qin/article/details/84368265
今日推荐