M2Det-一种使用新的特征金字塔方式的单阶段目标检测器

论文阅读笔记

Posted by baiyf on March 8, 2019

M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

写在前面

在目标检测任务中,目标的尺度缩放一直是一个棘手的问题。

特征金字塔是解决这一问题的有效方法,目前有两种手段:

  1. 检测图片金字塔,这种方法只能在预测时使用,同时会显著增加时间和内存消耗
  2. 使用特征金字塔,这种方法在训练和预测时都可以部署,且增加的时间和内存消耗相对较少,同时保存了深度学习模型的端到端特点

本文在总结了第二种方法的几个经典模型的不足以后提出了自己的方法MLFPN,并将其融合进了SSD,取得了COCO数据集上AP41.0,FPS 11.8的成绩,加上图片金字塔的辅助,可以达到AP44.2的准确率

主要思想

作者认为现有的特征金字塔方法都有一定的不足,文章列举了SSD,FPN,STDN网络的特征融合方法,如下图所示

FP

作者认为:

  1. 特征金字塔中的特征图表征能力不足,因为它只由backbone网络中的特征图构成
  2. 特征金字塔中的特征图主要来源于或者仅来源于backbone网络中的一个层级的特征信息

作者的模型从这两个角度进行了改进,命名自己的特征金字塔网络为MLFPN,并将其融合进了one-stage目标检测网络SSD中,模型命名为M2Det

MLFPN由以下三个部分组成:

  1. Feature Fusion Module(FFM):FFMs融合M2Det不同层层级的特征
  2. Thinned U-shape Module(TUM):TUM以U形结构提取融合后的特征
  3. Scale-wise Feature Aggregation Module(SFAM):SFAM集合TUMs生成的多层级特征

关键点

FMM_TUM

FFMs:

FFMs融合了M2Det的不同层级特征

FFMv1融合了backbone不同层级的特征,其中用到了一个upsample操作

FFMv2融合了backbone特征和前一个TUM输出的特征,没有upsample,输出给下一个TUM作为输入

TUMs:

TUM采用了一种较窄的U形结构

encoder以3x3,step为2进行卷积;decoder将其输出还原

并且作者在最后加了element-wise sum操作是为了增加学习能力和特征的平滑性

SFAM

SFAMs:

SFAM将TUMs产生的多层级特征整合起来,采用的是通道维度上的concat操作

在这之后,作者采用了SE block的自注意力机制来进一步提升性能

开源代码

本文作者开源了Pytorch代码,版本0.4.0,CUDA9,CUDNN7: M2Det

参考文献

M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network