目标检测之Faster-rcnn

本文基于 chenyuntc/simple-faster-rcnn-pytorch: A simplified implemention of Faster R-CNN that replicate performance from origin paper (github.com) 项目写理解

1.摘要核心

候选区域提取是已有检测方法实时性低的主要瓶颈;提出了候选区域网络,通过共享特征,提取候选区域,极大提升了计算效率,可以进行端到端训练;Fast RCNN和VGG通过迭代优化可以实现特征共享;Faster RCNN是一个实时系统。

2.数据流:

  •  conv layers传入图像,生成Feature maps;
  • 通过RPN层,输出每个点对应不同大小候选框(anchors)的背景判别得分和初步的坐标框预测值;
  • 将正样本映射回feature maps上的区域并截取出来;
  • 对截取出来的不同区域(大小可能不同)进行ROI Pooling,使其获得固定尺寸输出;
  • 最后通过classifier对ROI Poolling的结果进行类别判断和坐标框预测;

3.两个关键点:

RPN

ROI pooling

  • 产生大量的region proposals 会导致performance problems,很难达到实时目标检测。
  • 在处理速度方面是suboptimal。
  • 无法做到end-to-end training。

这就是ROI pooling提出的根本原因,ROI pooling层能实现training和testing的显著加速,并提高检测accuracy。该层有两个输入:

  1. 从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
  2. 一个表示所有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 最大的好处就在于极大地提高了处理速度。

ROI Pooling 就是将大小不同的feature map 池化成大小相同的feature map,利于输出到下一层网络中。

 

 

 

作业内容:

【思考题】理解Anchors在faster RCNN是如何设置的?

anchors 指的是在原图上生成的所有候选框。由于一张图中需要检测到的目标可能大小不同、位置不同,所以我们需要位置、大小和长宽比各不相同的anchors 在原图上选出候选区域,再判断这些候选区域是否为物体,以及与真值框(真实坐标)的偏移量。anchor生成的比例为1:1,1:2,2:1,面积分别设置为1282,2562,5122.一共九个。

【代码实现】参考notebook代码,了解怎么调用在feature map上生成anchors。

【总结】总结RPN的关键技术以及如何代码实现。

 

 

 

 

参考:(23条消息) ROI Pooling原理及实现_Elag的专栏-CSDN博客

(23条消息) 【目标检测】Faster R-CNN原理详解_梁瑛平的博客-CSDN博客

 (64条消息) 逐字理解目标检测simple-faster-rcnn-pytorch-master代码(一)_Chan_Zeng的博客-CSDN博客

posted @ 2020-12-05 12:28  sariel_sakura  阅读(269)  评论(0编辑  收藏  举报