R-FCN

Paper-info

title : R-FCN: Object Detection via Region-based Fully Convolutional Networks [2016-NIPS]

author : Jifeng Dai, Yi Li, Kaiming He, Jian Sun.

                               

Motivation

R-FCN是对Faster RCNN的进一步优化、提升。首先来看Faster RCNN的pipeline:

feature_maps = process(image)
ROIs         = RPN(feature_maps)  # anchor-based. Faster than Fast RCNN!
for ROI in ROIs
    patch   = roi_pooling(feature_maps, ROI)   # time costly !
    results = detector(patch)

它的一个显著的缺点:RPN产生的每一个ROI都需要结合feature_map通过roi_pooling来抽取roi_feature,由于ROIs之间往往存在大量的overlap,因此在roi_pooling环节会产生算力的浪费!针对这一缺点,R-FCN提出来基于位置敏感得分图( position-sensitive score maps)的全卷积层来实现整张图片detection环节的计算共享,从而加速了网络forward(inference)的速度!

Outline

          

feature_maps = process(image)
ROIs         = RPN(feature_maps)         
score_maps   = compute_score_map(feature_maps)   # computation shared
for ROI in ROIs
    V = roi_pooling(score_maps, ROI)     
    class_scores, box = average(V)               # Much simpler!
    class_prob = softmax(class_scores)

       

Details

  • position-sensitive score maps

                                           

假定5x5的feature_map上存在一个3x3的方形物体,通过设计合适的filter依次检测该方形物体的左上、左中、左右、...、中部、... 、底上、底中、底右9个区域(部分)的激活相应,得到如上图所示的9个score_maps。我们称这些score_maps为位置敏感得分图(position-sensitive score maps),因为每个feature_map都表示object在相应区域的激活相应(score).

  • position-sensitive roi-pool

                                     

上图中5x5的feature_map中包含一个竖立的ROI,首先计算它的9个部位的score_maps,然后询问各score_map包含object的相应区域的可能性, 然后将这些可能性存到图右侧所示3x3的vote-array。整个将score_maps和ROI映射为vote-array的过程称为位置敏感ROI池化(position-sensitive roi-pool).下图展示了位置敏感ROI池化的算例(以ROI左上角区域TL为例,大约40%的区域的激活值为0,剩下60%的激活值为1,这样它对应的average为0.6,因此在vote-array左上角的位置记录0.6,其余位置类似处理...):

        

经过位置敏感ROI池化操作之后,即可得到该ROI的vote-array和class score:

                                                                  

论文中给出的person category的roi-pool图示(这里k=3):

  • roi-pool for classification

                                   

假定检测任务涉及到的类目个数为C+1(这里多出的1个类表示背景),在roi-pool环节每个类目需要有自己的k^2个score_maps,因此共需要生成k^2(C+1)个score_maps。在计算vote-array时,每个类结合ROI并根据自己的score_maps来产生vote_array.

  • roi-pool for bbox regression

基于backbone产生的feature_map,通过4 x k x k个filter操作产生4k^2个用于bbox-regression的score_map。然后,对于每个ROI利用position-based的ROI-pool策略输出k^2个bboxes,最终预测的bbox则为这k^2个bboxes的均值.

Result

                            

                            

Conclusion

  • position-sensitive score_map/roi_pool确实有效地解决了Faster RCNN在roi_pool环节computation浪费的缺点,大幅提升了模型的inference速度(20x);
  • R-FCN的检测精度并不比Faster RCNN的检测效果差!

Reference

[1]. https://medium.com/@jonathan_hui/understanding-region-based-fully-convolutional-networks-r-fcn-for-object-detection-828316f07c99

[2]. https://www.cnblogs.com/guoyaohua/p/8994246.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReLuJie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值