【AAAI 2019】M2Det A Single-Shot Object Detector based on Multi-Level FPN
论文链接: https://arxiv.org/abs/1811.04533
github:https://github.com/qijiezhao/M2Det
TL,DL
AAAI 2019的一篇文章,单阶段检测器,考虑到FPN的结构,只能区分不同scale的特征,具有一定的局限性,比如一张图片中的人和交通灯,具有相同的scale,但是语义信息不同,单纯的靠FPN区分不够准确,因此本文提出了一个Multi-Level Feature Pyramid Network(MLFPN)的结构,能够融合mutil-level mutil-scale的特征,(mutil-level体现在多个TUM上,mutil-scale体现在后面的FPN上)相当于在不同level,不同scale的特征被更加区分开来。具体结构上就是,基于SSD,首先fuse FPN的特征后,经过了级联的类似hourglass的结构(本文称之为TUM),每一个TUM都会出多scale的特征,最后将所有的TUM的相同scale特征进行concate,在经过一个SE操作,接上2个conv,出最后的回归和分类结果。MS-COCO AP 41.0,11.8FPS。
Motivation
首先,FPN中每层的特征是从backbone中直接拿到的,而backbone是为了classification设计的,对object detection任务不是太好(并不是说FPN对object detection效果不好),而且每层特征仅仅考虑了单level的语义信息,一般来讲,high-level的信息更具有全局信息,对分类效果比较好,low-level的特征对定位效果更好,所以需要更好的结合不同level的信息,所以本文的想法就是在FPN结构的mutil-scale的基础上,增加mutil-level的信息。设计出了MLFPN网络结构。
NetWork Architecture
MLFPN主要有三部分组成,FFMs,TUM,SFAM,下面分别介绍:
FFMs
首先图2中的FFMv1 fuse了VGG的conv4_3和conv5_3的feature,具体做法在图4(a)中,输出的结果作为base feature,而后的每个TUM的输出,都要和base feature进行fuse,然后作为下一个level TUM的输入,从最后结果看,这个base feature的融合还是很有效果的。
TUMs
图4(c),文章使用的结构是8个TUM(8 level),每个TUM出6个scale的feature,从最后结果看,这个mutil-level的效果提点也不错。需要注意的是:下一级TUM的输入,由上一级TUM的输出和base feature组成。
SFAM
如图3,将不同level的相同scale的特征concate在一起,然后接一个SE结构,然后作为最后的feature map,后面接两个conv出最后的结果。
Experiment
训练部分还是很耗时的,VGG-16 backbone,320x320,512x512和800x800的输入尺寸,在4块Titan X训练分别需要3天,6天和14天;ResNet 101 320x320需要5天,512x512在2块V100上需要11天。
实验结果如表1,可以看出来,对比单阶段方法,效果可以,速度比corner net快一倍,而且速度和准确率都比RetinaNet800好。
Ablation study
可以看出来,本文的提出的结构都能涨点,涨点比较多的事8-TUM和Base feature,但是增加TUM之后APlarge会明显下降。可能的原因主要是context对小物体更优化?
不同的TUM数量和Channel的实验,都是越多效果越好,但是channel的增加会使得参数增长的很快,所以还是选择了增加TUM的数量。
Speed
最后,这张图也证明了开头说到的,当物体scale相同的时候,FPN的效果可能未必好,从上图可以看得出来,相同scale的物体基本都在相同scale中相应比较大,而不同object由于语义信息不同,会在不同的level中响应。
Thought
本文的值得借鉴的是设计的这个类似hourglass的级联结构,能够提取到更多的语义信息,对不同类的识别效果有帮助,同时也可以看得出来,base feature的重要性。