【目标检测】三、Faster R-CNN与R-FCN

1.Faster R-CNN

1.1 流程

Faster R-CNN网络结构:

【目标检测】三、Faster R-CNN与R-FCN

 

 

(这个是引用的原图,其实并没看明白,我翻了书查人网上解说,归结了以下)

【目标检测】三、Faster R-CNN与R-FCN

1.2 RPN(Region Proposal Network)

  锚点(anchor),是一个固定的矩形框,它的形状和大小可以预设为k个,一般k取9,比例可以如下图示:

【目标检测】三、Faster R-CNN与R-FCN

  RPN起始的3×3卷积层可以看作是一个滑动窗口,它在特征图上每个点上滑行,anchor以这个点为核心展开上面9个尺寸。

  而后的1×1卷积层是把多个通道联合起来,

  一个出参18个(9*2,2表示分类结果数,分别是非背景得分和背景得分);##?这里有点奇怪,0和1表示结果,那占1个位就可以了

  另一个出参36个(9*4,4表示位置,坐标和宽高)。

 

  RPN接入到Fast-RCNN,其入参的建议框有处理:

  先用anchor得到4个位置参数,剔除明显超出边界的建议框;##这一点我不明白,为什么不先筛选类别再求位置

  取前景softmax得分最高的6000个,再用非极大值抑制筛选一批建议框,最后将不超过300个proposal层输出的建议框到ROI Pooling层。(详细参照proposal_layer.py代码)

 

  RPN是一个多任务损失函数,它的总损失定义:

【目标检测】三、Faster R-CNN与R-FCN

  p是前景背景的分类层,t是边界框回归层,i是mini-batch中的一个anchor索引,pi是预测为目标的概率,p*i是标签。

  ……(详解略,此处针对流程)

 

1.3 如何训练

  如何让RPN和Fast R-CNN融合成一个统一的网络,这需要二者共享卷积层,一个实现的思路是:交替训练,以优化最终的Faster R-CNN。

(1) 单独训练RPN

  RPN是通过反向传播和随机梯度下降的方式进行端到端的训练。

  首先网络入参,取预训练(例如VGG16)模型载入,且叫它R1;作为监督型网络,它的标签需要我们自己处理出样本。

  (训练中,每个mini-batch要有由R1中随机出来的256个anchor,正负样本各一半(正样本少一些也可),其中正样本IoU>0.7,负样本0 < IoU < 0.3)

(2) 单独训练Fast R-CNN

  将(1)训练出来的RPN作为此网络的入参。

(3) 联合上述网络后训练RPN

  (1)(2)网络接入,并且将(2)Fast R-CNN的学习率设置为0,以此固定(2),仅更新(1)。

(4) 微调Fast R-CNN网络

  固定(1)参数,调整(2)的部分。

 

这个实验我没做过,书上是说实验证明,上述训练过程多次迭代并没有明显效果。

 

=========================================== 

资料:

https://zhuanlan.zhihu.com/p/31426458

杜鹏、谌(chen2)明、苏统华 编著《深度学习与目标检测》

 

2. R-FCN(基于区域的全卷积网络)

  Faster R-CNN中需要对RPN给出的RoI计算,而RPN本身也要计算出RoI,这当中就有重复计算,R-FCN主要针对这一点,提出位置敏感分数图,以解决图像分类中的平移不变性(translation invariance)与目标检测中的平移可变性(translation variance)之间的矛盾。

  平移指目标所在图像位置变化,目标位置变了,但目标分类不变,此为平移不变性,但位置出参会变化,此为平移可变性。

  需要注意的是,引入的预训练模型,像是AlexNet、VGGNet都是分类模型,会存在平移不变性的问题,那对于识别目标位置并不友好,所以才有了Fast/Faster R-CNN这样中间插入一段RoI网络的设计,加深了RoI子网络提高了精度同时也牺牲了计算速度。

  R-FCN使用了一组专门的卷积层来构建一组位置敏感的分数图,以替代在Faster R-CNN中RPN的后接部分

  它沿用RPN提取建议框RoI,然后利用分类的平移不变性,在最后的卷积层后,把卷积层平均切分成k*k块,给这k*k块作C+1种分类打分,C是分类数量,1是背景。所以RPN出的聚合RoI(position-sensitive RoI-pool)大小为k*k*(C+1)和4*k*k(?这点持怀疑)。聚合RoI上的投票时求平均值的过程,对C+1个k*k区域求平均值(代码实现为一个平均池化层),得到C+1维向量,再用softmax函数出最终类别。

【目标检测】三、Faster R-CNN与R-FCN

 

 

 

===========================================

资料:

杜鹏、谌(chen2)明、苏统华 编著《深度学习与目标检测》

 

【目标检测】三、Faster R-CNN与R-FCN

上一篇:Centos7 编译安装openssl和openssh


下一篇:二叉树的巧妙方法