论文阅读: R-FCN

Introduction

检测算法的速度瓶颈主要包括以下三个:

速度瓶颈 解决者 时间 解决方案
特征抽取 SPPNet 2014 共享特征抽取
proposal生成 Faster R-CNN 2015 由CNN来生成proposal
proposal的处理 R-FCN 2016 共享proposal处理

由上表易知,R-FCN就是为了 解决 不共享的proposal处理过程 而诞生的。

在这之前,SPPNet通过“共享特征抽取”,免去了前半段网络的重复计算;而后半段的网络依然要重复无数次 (对每个proposal都要计算一遍) ,极其耗时。

而到了Fast R-CNN中,由于在FCN里契入了负责处理位置信息RoI Pooling,提出前半段负责“特征抽取”,后半段负责“proposal处理”的检测网络 (其实后面还有cls和reg双分支,这里略过) 。然而依然没有针对后半段网络的重复计算进行改进。

R-FCN针对这个痛病,将处理位置信息的任务交给了 “ position-sensitive score map ” (位置敏感得分图) 来做,从而炒了RoI Pooling的鱿鱼。检测网络的前半段和后半段被完整地连到了一起,形成一个FCN (全卷积网络):
这里写图片描述

position-sensitive score map是通过一个 k2(C+1) k 2 ( C + 1 ) 的卷积操作来得到的:
论文阅读: R-FCN_第1张图片

其中:

  • k:表示每个RoI在每个维度上会被k等分,一般取值3;k=1时,表示在整个RoI上直接做global pooling。
  • C:表示总的前景类别数,C+1表示总的类别数 (前景加背景) 。

每种颜色代表RoI的一个相对位置(如“左上角”、“右下角”等等),每种颜色对应的channel数为C+1(注意不是C),表示该相对位置是第c类(也可能是第0类,即背景)的可能性。

对RoI可能的每个类别而言,对应有不相邻 k2 k 2 个map块。抠出来分别做 global average pooling (论文说global max pooling也行) :
这里写图片描述

得到的 k2 k 2 个单值分别按照正方形的相对位置填进去,组成一个 k×k×1 k × k × 1 的小grid。由于每个RoI对应 C+1 C + 1 种可能的类,于是每个RoI最终能得到一个 k×k×(C+1) k × k × ( C + 1 ) 的厚grid。这里面既包含了位置信息,也包含了分类信息。

接着如传统的two-stage检测算法惯用做法一样,NMS降低其数量级,接着送入双分支(cls和reg)。

Innovation

有了position-sensitive score map机制,则如果一个bbox能很好地overlap上某个类别为c(也可能是第0类,即背景)的object,那么c类别下对应的 k2 k 2 个小grid应该都会得到较好的activation。将它们取global average pooling,就可以得到较高的score。对所有的C+1个类别得到的C+1个score进行softmax,就能判定该RoI属于类别c:
论文阅读: R-FCN_第2张图片

同理,和所有object的overlap都较小的RoI,不管在哪一种类别的判别下,对应的 k2 k 2 个小grid都很难(或者只是小部分)被activate。经过global average pooling后,无一例外只能得到较低的score。从而该RoI被判为 类别0 (即“背景”):
论文阅读: R-FCN_第3张图片

Result

将R-FCN与当时的主流检测网络Faster R-CNN进行性能对比。

在VOC2007上:
论文阅读: R-FCN_第4张图片

在VOC2012上:
论文阅读: R-FCN_第5张图片

在COCO上:
论文阅读: R-FCN_第6张图片

总而言之:

  • R-FCN的 accuracy 和Faster R-CNN相差无几(实际上稍逊于Faster R-CNN);

  • inference speed 却快了整整2.5~20倍。

附上R-FCN的一些检测效果图:

Thinking

R-FCN是一个兼顾精度和速度的经典算法,开启了检测算法的一个新研究方向。此后的Light-Head R-CNN、R-FCN-3000、DetNet,均是踩着R-FCN的肩膀提出的。

论文Speed/accuracy trade-offs for modern convolutional object detectors中指出:
论文阅读: R-FCN_第7张图片

  • R-FCN的精度稍逊于Faster R-CNN,优于SSD;

  • R-FCN的速度快于Faster R-CNN,慢于SSD;

  • R-FCN由于其设计的动机就是为了免去proposal的重复计算,所以R-FCN的性能(精度和速度)对于proposal的数量不敏感,proposal数量取100时性能最优;

  • Faster R-CNN一旦将proposal数量降到50个,就会在速度和精度上接近proposal数量取100的R-FCN。

但是呢,R-FCN所设计的position-sensitive score map虽然免去了proposal的重复处理,却也由于其自身厚重的设计而为人所诟病。这也为Li Zeming大神提出score map更轻薄的Light-Head R-CNN埋下了伏笔。


[1] R-FCN: Object Detection via Region-based Fully Convolutional Networks
[2] 论文阅读: Speed/accuracy trade-offs for modern convolutional object detectors
[3] 论文阅读: Light-head R-CNN

你可能感兴趣的:(论文阅读,论文算法)