【论文阅读】GA-RPN:Region Proposal by Guided Anchoring

论文名称:Region Proposal by Guided Anchoring
作者: Jiaqi Wang \ Kai Chen \ Shuo Yang \ Chen Change Loy \ Dahua Lin
论文地址:https://arxiv.org/pdf/1901.03278.pdf
代码:目前未公开
发表年份:CVPR 2019


在这里插入图片描述

1 动机

anchor机制是现代目标检测的基石,然而自Faster R-CNN中提出它以来,anchor的生成方式就一直是人为事先设定它的shape(scale/rotio),然后依据卷积生成的特征图在原图上枚举出所有的anchor box。这种传统的anchor生成方式会有两个问题:

  • 对于不同数据集/应用场景,anchor的shape以及个数k都需要重新设计
  • 这种为保证Recall而枚举出的anchor box中的绝大多数是非正样本

在这里插入图片描述

Faster RCNN中anchor生成方式

2 贡献

  • 指出anchor设计的两个原则:
    • anchor box的中心应该与feature-map上的对应像素严格对齐
    • feature-map上每个区域的感受野和语义范围是一样的,不同位置的anchor box的scale/shape也应该是一样的
  • 依据条件概率分布,提出一种使用语义特征来引导anchor 生成的方法。得到的anchor的scale/rotio都是任意的,在保证RPN的Recall的前提下使得anchor的数量减少了90%。

3 方法

在这里插入图片描述
F I F_I FI是图像的特征映射(feature map),它的宽高分别是 W , H W,H W,H。本文是对多个feature-map做了所谓的“Guided anchoring”操作。

3.1 Guided anchoring

anchor的目的是找到出现在一张图像中的前景物体,如果从统计学角度来看,可以用条件概率公式来表示__前景物体在一张图像中的出现__: p ( x , y , w , h ∣ I ) = p ( x , y ∣ I ) ∗ p ( w , h ∣ I , x , y ) (1) p(x,y,w,h|I)=p(x,y|I)*p(w,h|I,x,y) \tag{1} p(x,y,w,hI)=p(x,yI)p(w,hI,x,y)(1) 这里 I I I表示一张图像, x , y , w , h x,y,w,h x,y,w,h代表前景物体的在图像中出现的空间位置中心点坐标和它的宽高。
(下面所述的“物体”与“前景物体”是一个概念)
并且作者通过观察发现,①物体在图像中并不是均匀分布的,②物体的shape与图像的内容、物体在图像中所处的位置以及它的几何结构密切相关。那么可以用这两种现象来解读公式(1):

  • 物体只出现在图像的特定区域 ( x , y ) (x,y) (x,y)
  • 物体的shape ( w , h ) (w,h) (w,h)与物体出现的位置有关系

这两种解读,翻译到anchor设计上就是:

  • 有效anchor的中心点 ( x , y ) (x,y) (x,y)应该是在某一个区域范围内的,所以feature-map中所有像素位置上对应的anchor box可以直接剔除一部分
  • anchor的 ( w , h ) (w,h) (w,h)可以由它的中心点 ( x , y ) (x,y) (x,y)确定,所以可以通过feature-map的像素位置得到该位置对应的anchor box的 ( w , h ) (w,h) (w,h)

基于这两种思想,作者设计出Fig1中红框中的“anchor generation”。Anchor的生成由两个分支构成,location分支,用来确定中心点,shape分支用来确定location-dependent的shape。
本文中每个anchor center只预测一个anchor,即对于feature-map上的每个像素位置只有一个anchor box,那么应该一共有 H ∗ W H*W HW个,本文使用得分制来确定anchor box的有效(正样本)性,对每个像素位置的 ( x , y ) (x,y) (x,y)有一个得分 S l o c S_{loc} Sloc,按照公式(1)的思想,应该是 ( x , y ) (x,y) (x,y)决定 w , h w,h w,h,在预测anchor box时,首先通过 S l o c > T h r e a s h o l d S_{loc}>Threashold Sloc>Threashold来筛选出正样本,然后这些正样本位置 w , h w,h w,h被确定为有效,其他位置被当做负样本剔除掉。这样每个anchor box的 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)就确定了。

location分支预测

location分支是对公式(1)中 p ( x , y ∣ I ) p(x,y|I) p(x,yI)的实现。它的输出是 S l o c S_{loc} Sloc,一个 H ∗ W ∗ 1 H*W*1 HW1的矩阵块,对应于 F I F_I FI每个像素位置的可能出现有效anchor box的可能性得分。
在这里插入图片描述
location分支用一个简单网络 N L N_L NL来实现,它以 F L F_L FL为输入,经过一个conv1x1和sigmod,得到结果 S l o c S_{loc} Sloc,然后通过 S l o c > ϵ L S_{loc}>\epsilon_L Sloc>ϵL筛选有效anchor。虽然更复杂的结构可能使得结果更准确,但是作者认为这种结构可以更好的平衡速度和准确性。
这种网络结构可以看做是一个__二分类__问题,那么在训练时也就可以用二分类的方法做训练,虽然已经剔除了大量负样本,但是正负样本比例仍然差别很大,所以仍然使用Focal Loss。

shape分支预测

shape分支是对公式(1) p ( w , h ∣ I , x , y ) p(w,h|I,x,y) p(w,hI,x,y)的实现。它的输出是一个 H ∗ W ∗ 2 H*W*2 HW2的矩阵块, H ∗ W H*W HW就是对应于feature-map的每个位置, 2 2 2是对应于参数化anchor box的 w , h w,h w,h,之所以参数化,是因为 w , h w,h w,h的实际值的范围比较大(0-1000),如果直接预测,效果差,所以使用公式(2)把他们参数化: w = σ ∗ s ∗ e d w , h = σ ∗ s ∗ e d h (2) w=\sigma*s*e^{dw},h=\sigma*s*e^{dh} \tag{2} w=σsedw,h=σsedh(2) σ \sigma σ是个超参数,经验值取8, s s s是anchor box步长。在预测时只要预测 d w , d h dw,dh dw,dh就可以了,这样就把要预测值的范围从[0,1000]转为了[-1,1]。
在这里插入图片描述
shape分支用一个更简单网络 N S N_S NS实现,它也以 F I F_I FI为输入,直接用一个conv1x1就得到最终结果,,,,,。
shape分支可以看做是一个回归 w , h w,h w,h值的问题。

feature adaptation

虽然用上面的办法生成了anchor box,但是却不能直接使用,原因是上面的办法遵循了anchor生成规则的第一条-feature-map每个像素位置与anchor box的中心严格对齐,但是由于shape分支预测出的每个anchor box w , h w,h w,h的值不一定是一样的,也就导致了feature-map上的不同位置在原图上的映射范围是不一样的,这显然不符合生成规则的第二条。导致这种情况的原因是shape,那么可以借助已经生成的shape对原始 F I F_I FI做一定的处理,使 F I F_I FI满足 规 则 2 规则_2 2
基于这种思路,作者设计出了Fig1中绿框中的“feature adaptation”。
在这里插入图片描述
feature adaptation使用网络 N T N_T NT完成,首先把shape分支的输出通过一个conv1x1,然后把conv1x1的结果和 F I F_I FI作为输入,通过一个3x3的空洞卷积,得到结果 F I ′ F'_I FI,之后分类和回归 F I ′ F'_I FI取代 F I F_I FI,但是用来计算下一层feature-map的仍然是 F I F_I FI

3.2 训练

多任务训练

本文把RPN的训练看做是多任务的,loss由四部分组成,除了传统分类的 L c l s L_{cls} Lcls、回归的 L r e g L_{reg} Lreg,还有location分支的 L l o c L_{loc} Lloc和shape分支的 L s h a p e L_{shape} Lshape λ 1 / λ 2 \lambda_1/\lambda_2 λ1/λ2作为loss的权重,本文中分别取1和0.1。
L = λ 1 ∗ L l o c + λ 2 ∗ L s h a p e + L c l s + L r e g . (4) L=\lambda_1*L_{loc}+\lambda_2*L_{shape}+L_{cls}+L_{reg}.\tag{4} L=λ1Lloc+λ2Lshape+Lcls+Lreg.(4)

Guided anchoring的三个分支各由一个网络来实现,本文使用监督方式来训练网络,监督就需要真值(gt ,ground truth)。

feature adaptation

得到 F I ′ F'_I FI之后就要通过它做region的分类和回归,分类输出是一个m2的矩阵,回归输出是一个m4的矩阵。

location分支的gt

按照“location 分支预测”的分析,它可以直接决定anchor box的生死,所以location分支的gt也要格外严谨!
记:

  • ( x g , y g , w g , h g ) (x_g,y_g,w_g,h_g) (xg,yg,wg,hg):一张图像中某个前景物体bbox的gt
  • ( x g ′ , y g ′ , w g ′ , h g ′ ) (x'_g,y'_g,w'_g,h'_g) (xg,yg,wg,hg): 该gt在feature-map中的映射
  • R ( x , y , w , h ) R(x,y,w,h) R(x,y,w,h):某个以 ( x , y ) (x,y) (x,y)为中心且size是 w ∗ h w*h wh的矩形区域

设计者最期望得到的是 以位置 ( x , y ) (x,y) (x,y)为中心且与gt有更大IOU的anchor。如果在gt外部的 ( x , y ) (x,y) (x,y)那肯定不应该分配到有效anchor,即使是在gt内部,为了与gt有更大IOU,那么这些个中心点也应该尽可能的靠近gt的中心点。基于这种思想和Faster RCNN中有效样本的划分规则,本文划分有效样本规则如下(对每一个gt box):

  • 参照每个gt box,整个feature-map分成三个区域:CR(center region),IR(ignore region),OR(outside region)
  • C R = R ( x g ′ , y g ′ , σ 1 w ′ , σ 1 h ′ ) CR=R(x'_g,y'_g,\sigma_1w',\sigma_1h') CR=R(xg,yg,σ1w,σ1h),CR内部是有效anchor,赋值为1
  • I R = R ( x g ′ , y g ′ , σ 2 w ′ , σ 2 h ′ ) / C R , σ 2 > σ 1 IR=R(x'_g,y'_g,\sigma_2w',\sigma_2h') /CR,\sigma_2>\sigma_1 IR=R(xg,yg,σ2w,σ2h)/CR,σ2>σ1,IR是忽略区域,Faster RCNN源码里是赋值为-1
  • 在IR外部的是OR,OR认为是负样本所在区域,赋值为0

在这里插入图片描述

结束了?并没有,从Fig1左半图可知,作者参考FPN使用特征金字塔,对金字塔中的多个feature map做Guided anchoring,然后可以认为是参考SNIP,让特定层级的feature map只预测指定大小范围内的物体,而一旦一个物体在某一层级的feature map被预测的话,那么它在该feature map相邻的两个feature里直接被设定为IR!
比如下图中,黑羊较小,在第2层级的feature map中被预测(指定为CR),那么它在第1,3层级的feature map中直接被置为IR;而白羊较大,就在比较高层级的第4层级中被预测(指定为CR),在第3层级(可能有第5层级的话,就是第3,5层级)直接为置为IR。
在这里插入图片描述
对所有测试集图像的所有gt bbox做上述操作,就得到了location 分支的 G T l o c = R ( F f , N , H f , W f , 1 ) GT_{loc}= R^{(F_f,N,H_f,W_f,1)} GTloc=R(Ff,N,Hf,Wf,1),第 F f F_f Ff层feature map, N N N张图像,该层级fea的长宽。。从上图可以看出CR仍然只占整体区域的一小部分,正负样本依然极度不平衡,所以对于location分支的训练使用Focal Loss。

shape分支的gt

shape分支通过位置预测anchor任意大小的 w , h w,h w,h,个人认为这是本文最大的贡献。
当中心点固定后,设计者希望shape分支可以调整anchor的 w , h w,h w,h,使得anchor可以与gt有更大IOU,这与location分支的意图是一致的。
对于每个gt在每个feature map:
G T s h a p e = R ( H , W , 2 ) GT_{shape}= R^{(H,W,2)} GTshape=R(H,W,2),初始化为0,对其中每个CR中的位置 ( x C R , y C R ) (x_{CR},y_{CR}) (xCR,yCR)
枚举一系列(文中是9) ( w , h ) (w,h) (w,h),然后计算它们与gt的IOU,以最大IOU对应的 ( w , h ) (w,h) (w,h)为该gt在该feature map上该位置的 ( w , h ) (w,h) (w,h)的gt。如果该点有两个或以上gt的CR落在这里,那么以IOU较大的 ( w , h ) (w,h) (w,h)为该位置的gt。
对所有测试集图像的所有gt bbox做上述操作,就得到shape分支的 G T s h a p e = R ( F f , N , H f , W f , 2 ) GT_{shape}= R^{(F_f,N,H_f,W_f,2)} GTshape=R(Ff,N,Hf,Wf,2),第 F f F_f Ff层feature map, N N N张图像,该层级fea的长宽。

训练时使用的是bounded iou loss的变形。原来是用来优化 ( x , y , w , h ) (x,y,w,h) (x,y,w,h),这里只用来优化 ( w , h ) (w,h) (w,h)

3.3使用GA-RPN生成的RPs

作者说使用GA-RPN可以比RPN生成更高质量的RPs,用GA-RPN替换RPN训练检测时需要把正/负阈值都调高,使用更少的样本。
此外,如果事先训练好了GA-RPN和一个使用RPN的two-stage的检测器,然后使用GA-RPN直接替换掉RPN,对检测器做2-3个epoch的fine-tune之后,检测器的性能会有很大提升。

4 实验

4.1实现细节

  • 使用Res-50和FPN作为backbone
  • 把COCO数据集的图片resize到(1333,800)
  • 优化器 SGD
    • 学习率初始化为0.02,在epoch-8,epoch-11各乘以0.1,一共训练16 epoch

4.2性能指标

  • AR(average recall)
  • AP(average precision)

结果

验证三个分支

在这里插入图片描述

GA-RPN vs RPN/others

在这里插入图片描述

GA-RPN 对检测器的提升

  • GA-RPN与检测器一起训练
    在这里插入图片描述
  • 用GA-RPN fine-tune 已经训练好的Faster RCNN
    在这里插入图片描述

5 思考

在这里插入图片描述
2.添加feature adaptation的原因到底是什么?在feature adaptation中又实际做了什么操作?
3. A R 1000 AR_{1000} AR1000是什么意思?
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值