论文名称: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中的绝大多数是非正样本

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

FIF_IFI是图像的特征映射(feature map),它的宽高分别是W,HW,HW,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,h∣I)=p(x,y∣I)∗p(w,h∣I,x,y)(1) 这里III表示一张图像,x,y,w,hx,y,w,hx,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∗WH*WH∗W个,本文使用得分制来确定anchor box的有效(正样本)性,对每个像素位置的(x,y)(x,y)(x,y)有一个得分SlocS_{loc}Sloc,按照公式(1)的思想,应该是(x,y)(x,y)(x,y)决定w,hw,hw,h,在预测anchor box时,首先通过Sloc>ThreasholdS_{loc}>ThreasholdSloc>Threashold来筛选出正样本,然后这些正样本位置w,hw,hw,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,y∣I)的实现。它的输出是SlocS_{loc}Sloc,一个H∗W∗1H*W*1H∗W∗1的矩阵块,对应于FIF_IFI每个像素位置的可能出现有效anchor box的可能性得分。

location分支用一个简单网络NLN_LNL来实现,它以FLF_LFL为输入,经过一个conv1x1和sigmod,得到结果SlocS_{loc}Sloc,然后通过Sloc>ϵLS_{loc}>\epsilon_LSloc>ϵL筛选有效anchor。虽然更复杂的结构可能使得结果更准确,但是作者认为这种结构可以更好的平衡速度和准确性。
这种网络结构可以看做是一个__二分类__问题,那么在训练时也就可以用二分类的方法做训练,虽然已经剔除了大量负样本,但是正负样本比例仍然差别很大,所以仍然使用Focal Loss。
shape分支预测
shape分支是对公式(1)p(w,h∣I,x,y)p(w,h|I,x,y)p(w,h∣I,x,y)的实现。它的输出是一个H∗W∗2H*W*2H∗W∗2的矩阵块,H∗WH*WH∗W就是对应于feature-map的每个位置,222是对应于参数化anchor box的w,hw,hw,h,之所以参数化,是因为w,hw,hw,h的实际值的范围比较大(0-1000),如果直接预测,效果差,所以使用公式(2)把他们参数化:w=σ∗s∗edw,h=σ∗s∗edh(2)w=\sigma*s*e^{dw},h=\sigma*s*e^{dh} \tag{2}w=σ∗s∗edw,h=σ∗s∗edh(2),σ\sigmaσ是个超参数,经验值取8,sss是anchor box步长。在预测时只要预测dw,dhdw,dhdw,dh就可以了,这样就把要预测值的范围从[0,1000]转为了[-1,1]。

shape分支用一个更简单网络NSN_SNS实现,它也以FIF_IFI为输入,直接用一个conv1x1就得到最终结果,,,,,。
shape分支可以看做是一个回归w,hw,hw,h值的问题。
feature adaptation
虽然用上面的办法生成了anchor box,但是却不能直接使用,原因是上面的办法遵循了anchor生成规则的第一条-feature-map每个像素位置与anchor box的中心严格对齐,但是由于shape分支预测出的每个anchor boxw,hw,hw,h的值不一定是一样的,也就导致了feature-map上的不同位置在原图上的映射范围是不一样的,这显然不符合生成规则的第二条。导致这种情况的原因是shape,那么可以借助已经生成的shape对原始FIF_IFI做一定的处理,使FIF_IFI满足规则2规则_2规则2。
基于这种思路,作者设计出了Fig1中绿框中的“feature adaptation”。

feature adaptation使用网络NTN_TNT完成,首先把shape分支的输出通过一个conv1x1,然后把conv1x1的结果和FIF_IFI作为输入,通过一个3x3的空洞卷积,得到结果FI′F'_IFI′,之后分类和回归FI′F'_IFI′取代FIF_IFI,但是用来计算下一层feature-map的仍然是FIF_IFI。
3.2 训练
多任务训练
本文把RPN的训练看做是多任务的,loss由四部分组成,除了传统分类的LclsL_{cls}Lcls、回归的LregL_{reg}Lreg,还有location分支的LlocL_{loc}Lloc和shape分支的LshapeL_{shape}Lshape,λ1/λ2\lambda_1/\lambda_2λ1/λ2作为loss的权重,本文中分别取1和0.1。
L=λ1∗Lloc+λ2∗Lshape+Lcls+Lreg.(4)L=\lambda_1*L_{loc}+\lambda_2*L_{shape}+L_{cls}+L_{reg}.\tag{4}L=λ1∗Lloc+λ2∗Lshape+Lcls+Lreg.(4)
Guided anchoring的三个分支各由一个网络来实现,本文使用监督方式来训练网络,监督就需要真值(gt ,ground truth)。
feature adaptation
得到FI′F'_IFI′之后就要通过它做region的分类和回归,分类输出是一个m2的矩阵,回归输出是一个m4的矩阵。
location分支的gt
按照“location 分支预测”的分析,它可以直接决定anchor box的生死,所以location分支的gt也要格外严谨!
记:
- (xg,yg,wg,hg)(x_g,y_g,w_g,h_g)(xg,yg,wg,hg):一张图像中某个前景物体bbox的gt
- (xg′,yg′,wg′,hg′)(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∗hw*hw∗h的矩形区域
设计者最期望得到的是 以位置(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)
- CR=R(xg′,yg′,σ1w′,σ1h′)CR=R(x'_g,y'_g,\sigma_1w',\sigma_1h')CR=R(xg′,yg′,σ1w′,σ1h′),CR内部是有效anchor,赋值为1
- IR=R(xg′,yg′,σ2w′,σ2h′)/CR,σ2>σ1IR=R(x'_g,y'_g,\sigma_2w',\sigma_2h') /CR,\sigma_2>\sigma_1IR=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 分支的GTloc=R(Ff,N,Hf,Wf,1)GT_{loc}= R^{(F_f,N,H_f,W_f,1)}GTloc=R(Ff,N,Hf,Wf,1),第FfF_fFf层feature map,NNN张图像,该层级fea的长宽。。从上图可以看出CR仍然只占整体区域的一小部分,正负样本依然极度不平衡,所以对于location分支的训练使用Focal Loss。
shape分支的gt
shape分支通过位置预测anchor任意大小的w,hw,hw,h,个人认为这是本文最大的贡献。
当中心点固定后,设计者希望shape分支可以调整anchor的w,hw,hw,h,使得anchor可以与gt有更大IOU,这与location分支的意图是一致的。
对于每个gt在每个feature map:
GTshape=R(H,W,2)GT_{shape}= R^{(H,W,2)}GTshape=R(H,W,2),初始化为0,对其中每个CR中的位置(xCR,yCR)(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分支的GTshape=R(Ff,N,Hf,Wf,2)GT_{shape}= R^{(F_f,N,H_f,W_f,2)}GTshape=R(Ff,N,Hf,Wf,2),第FfF_fFf层feature map,NNN张图像,该层级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.AR1000AR_{1000}AR1000是什么意思?


本文介绍了一种名为GuidedAnchoring的目标检测方法,该方法通过语义特征指导anchor生成,解决了传统anchor机制中形状和数量设计依赖人为设定的问题。与Faster R-CNN相比,该方法不仅减少了90%的anchor数量,还提高了召回率。
444

被折叠的 条评论
为什么被折叠?



