论文名称: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,h∣I)=p(x,y∣I)∗p(w,h∣I,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 H∗W个,本文使用得分制来确定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,y∣I)的实现。它的输出是 S l o c S_{loc} Sloc​,一个 H ∗ W ∗ 1 H*W*1 H∗W∗1的矩阵块,对应于 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,h∣I,x,y)的实现。它的输出是一个 H ∗ W ∗ 2 H*W*2 H∗W∗2的矩阵块, H ∗ W H*W H∗W就是对应于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=σ∗s∗edw,h=σ∗s∗edh(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=λ1​∗Lloc​+λ2​∗Lshape​+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 w∗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)
  • 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′​,σ1​w′,σ1​h′),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′​,σ2​w′,σ2​h′)/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​是什么意思?

【论文阅读】GA-RPN:Region Proposal by Guided Anchoring相关推荐

  1. 【论文阅读】Region Proposal by Guided Anchoring

    论文地址:https://arxiv.org/abs/1901.03278v2 代码地址: mmdetection (https://github.com/open-mmlab/mmdetection ...

  2. 论文阅读:Saliency-Guided Region Proposal Network for CNN Based Object Detection

    论文阅读:Saliency-Guided Region Proposal Network for CNN Based Object Detection (1)Author (2)Abstract (3 ...

  3. 【目标检测系列:十】Anchor Free | GARPN | Region Proposal by Guided Anchoring

    CVPR 2019 商汤 Region Proposal by Guided Anchoring https://github.com/open-mmlab/mmdetection DCN ancho ...

  4. RPN(Region Proposal Network)

    RPN(Region Proposal Network) 学习RPN前最好先过一遍RCNN和Fast RCNN,本文的图来自原论文和bvBV1af4y1m7iL,有纰漏之处欢迎在评论区指出 RPN什么 ...

  5. 目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)

    原文引用:http://lufo.me/2016/10/detection/ 最近几年深度学习在计算机视觉领域取得了巨大的成功,而在目标检测这一计算机视觉的经典问题上直到去年(2015)才有了完全使用 ...

  6. [论文阅读]BiSeNet V2: Bilateral Network with Guided Aggregation for Real-time Semantic Segmentation

    前言 光看名字,看到Guided Aggreagation感觉又是一个使用attention的(全局特征指导局部特征)? Abstract 问题的提出: 现有的加速model的方法大部分都是牺牲低等级 ...

  7. (九)论文阅读 | 目标检测之GA

    简介 图1:论文原文 论文是发表在 C V P R 2019 {\rm CVPR\ 2019} CVPR 2019上的一篇关于目标检测的论文.论文的主题是 G u i d e d A n c h o ...

  8. 论文阅读:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)

    论文地址:https://arxiv.org/abs/1904.08189 github实现:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键 ...

  9. 学习笔记:R-CNN系列论文阅读,用faster-rcnn实现交通标志牌的检测

    R-CNN,Fast-RCNN,Faster-RCNN都是基于候选区域(region proposal)的识别网络,在图片上寻找可能是目标存在的区域,对每个区域进行分类和检测框回归,实现目标检测. R ...

最新文章

  1. 重磅直播|基于激光雷达的感知、定位导航应用
  2. 文字在div中垂直居中
  3. 动态规划和摩尔投票法
  4. 26 款阿里超神 Java 开源项目,看看你用过几个?
  5. “三农”谋定金融 中国农民丰收节交易会金融服务研讨会
  6. docker二进制代码编译
  7. 敏捷软件开发:原则、模式与实践(C#版)
  8. System.getProperty(user.dir); 获得系统属性
  9. JavaScript中this指向
  10. php access allow,PHP标头不适用于Access-Control-Allow-Origin
  11. 李开复:人工智能行业发展与投资趋势
  12. python查询mysql数据库_用python操作mysql数据库(之简单查询操作)
  13. springmvc源码阅读3--dispatcherServlet reqeust的执行流程
  14. 机器学习之K-means算法
  15. 聚类分析软件测试,文本聚类分析效果评价笔记 - hellominefriend的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  16. mysql 字典表设计_字典表设计
  17. uni-app 原生android插件在android studio调用.so文件步骤
  18. 优盘突然显示无法在此计算机,复制文件到U盘时突然无法复制提示磁盘被写保护该如何修复...
  19. 赵小楼《天道》《遥远的救世主》深度解析(117)分离已有的各种相,得你想要的结果
  20. 网卡构造:MAC与PHY的关系,GMAC介绍

热门文章

  1. 【Share 2021】caoyang.log(OLD VERSION)
  2. 持续交付(CD)与持续集成(CI)
  3. 【AI 工具】文心一言内测记录
  4. SOLD格雷母线 有哪些优势?
  5. 自定义PMD检测的类型集合(详解)
  6. 【Spring】基于注解实现事务控制(银行转账)
  7. 2022-2028年全球手术夹行业收入年复合增长率CAGR为 5.3%
  8. 【QT数字图像处理】(四)hsv颜色空间转rgb颜色空间
  9. limux 卡登录界面_Win7开机登录界面修改,向你的女神表白吧
  10. 年历显示。功能要求:1.输入一个年份,输出时在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。2.输入年月,输出该月的日历。