“ Head ” 在文中指连接在basemodel后面的网络结构,包括以下两部分:
Faster R-CNN和R-FCN速度都不够快,原因在于它俩的head都太heavy了。
Faster R-CNN heavy在它的RoI-wise subnet部分,因为这部分需要重复计算:
而R-FCN则heavy在它的RoI warping部分,因为这部分score map设计得太厚了(厚度为k2(C+1)k2(C+1)k^2(C+1),在COCO版本的代码中channel达到了3969):
论文指出,正是因为heavy-head,导致了inference speed一直是two-stage之殇。
two-stage系需要有一个算法站出来,在speed和accuracy上双双打败one-stage。
这个时候,Li Zeming大神提出了解决办法:
thin feature map + cheap RoI-wise subnet = Light-head
以Light-head作为头部的检测算法,就叫Light-head R-CNN。 其对应的网络结构如下:
Note:
lizeming大神在论文中提出了基于两种basemodel的版本。其中一种基于类Xception,称之为S型Light-head R-CNN,其网络结构如下:
另外一种基于ResNet,称之为L型Light-head R-CNN。
thin feature map + cheap R-CNN subnet = Light-head
不管在哪一种basemodel下,Light-head R-CNN在检测算法之林都是一骑绝尘:
其中,Light-head R-CNN的检测性能用红色三角形表示,所采用的三种basemodel分别为Xception、ResNet-50和ResNet-101。可以明显看出,Xception为basemodel时,速度极快,但是AP值会掉非常多。
在COCO数据集上,Light-head R-CNN击败了其他所有算法,包括Faster R-CNN、Mask R-CNN和RetinaNet:
inference speed居然可以吊打one-stage系,包括SSD、YOLOv2。这边并没有列出RetinaNet,估计还是无法超越RetinaNet:
最后贴上两张效果图:
[1] Light-Head R-CNN: In Defense of Two-Stage Object Detector