点击上方“AI算法与图像处理”,选择加"星标"或“置顶”
重磅干货,第一时间送达

论文标题:
M2Det:A Single-Shot Object Detector Based on Multi-Level Feature Pyramid Network(AAAI2019)
代码:https://github.com/qijiezhao/M2Det
本文亮点
1.以SSD为基础。
2.阐述了当前特征金字塔的明显缺陷:更关注特征的尺度(scale),而不关注特征的层次(Level)。对于同类中外观复杂多变的不同个体,抽取多个层次的特征是很有必要的。
3.提出了新颖的MLFPN(Multi-level Feature Pyramid Network)架构,提取多个层次、多个尺度的特征用于目标检测。
关键内容
特征金字塔较好地解决了目标检测领域物体尺寸变化的问题,下图中(a)、(b)、(c)为几种带有金字塔结构的目标检测网络。
(a)图出自论文SSD:single shot multibox detector.
(b)图出自论文Feature pyramid networks for object detection.
(c)图出自论文Scale transferrable object detection.
一般认为,在深层CNN网络中,不同深度的卷积所提取的特征层次(level)不同:浅层的feature map表示低层次特征,低层次特征有利于定位;深层的feature map表示高层次特征,高层次特征有利于分类。
目标检测任务中有两个有趣的现象。
现象1:要检测的物体多种多样,有的物体外形比较简单,比如红绿灯;有的物体外形比较复杂且多变,比如行人。既要检测外形简单的物体,又要检测外形复杂多变的物体,需要的特征层次不同:检测外形简单的物体,低层次特征效果很好;检测外形复杂多变的物体,高层次特征效果很好。
现象2:物体外观的简单或是复杂与其尺寸没有关系:同一张图片中,行人很可能与红绿灯尺寸差不多,然而红绿灯的外观更简单,行人的外观更复杂。
现有的特征金字塔模型的设计只是考虑了物体的尺寸变化,但并未考虑上述两个现象,主要表现在:特征金字塔中的每个特征图,虽然检测特征的尺寸不一样,但大多只包含少层次(1个或者2个层次)的特征。
具体来说,关注图(c)中的特征金字塔部分,特征金字塔的源头是backbone的同一个特征,因此,特征金字塔中每个尺度的特征图都只有同一层次的特征表示,即都只抽取了一个层次(level)的特征。
图(a)中的特征金字塔部分,每个尺寸的特征图只有1个层次(但非同一层次)的特征表示,与图(c)的区别是,尺寸越小的特征图,抽取到的特征层次越高,因为尺寸越小的特征图处在网络的位置越深。
相比于图(a)和图(c),图(b)中的特征金字塔更高级,得益于侧连接,除了尺寸最小的特征图外,特征金字塔中的其他特征图都包含2个层次的特征。特别地,尺寸最大的特征图包含了最高层次和较低层次的特征。
上述三个网络的共同之处在于,特征金字塔中单个尺寸的特征图都只包含1个或者2个层次的特征。结合上述的现象2,特征金字塔中某个固定尺寸的特征图只包含单层次或少层次的特征,很难同时对同一尺寸下外观简单和外观复杂的物体都有很好的检测效果,比如红绿灯和远处的行人,二者有同样的尺寸,因此使用特征金字塔中同样尺寸的特征图去判别。
然而红绿灯外观简单,行人外观复杂多变,若该特征图只包含单一层次或少层次的特征,很难同时对红绿灯和行人这两个难易程度不同的物体都有很好的检测效果。
为解决特征金字塔中每个尺度的特征图只包含单层次或少层次的特征这个缺陷,作者提出了MLFPN(Multi-level Feature Pyramid Network)结构,并将MLFPN架构融合到SSD算法中,形成新的网络结构,名为M2Det。MLPFN和M2Det的结构如下图所示:
MLFPN中的组成部分
下面将分别介绍MLFPN中的组成部分:
FFM1(Feature Fusion Module)FFM1的作用是将backbone中2个层次的特征融合,形成上图中的Base feature。由于FFM1输入端的2个特征图尺寸不同,因此FFM1内部需要有一个上采样操作。FFM1的结构图如下所示:
TUM(Thinned U-shape Module) 总体来看,TUM是一个encoder-decoder的U型结构,encoder部分特征图尺寸逐渐变小,decoder部分特征图尺寸逐渐变大。MLFPN中每个TUM的结构完全一致,如下图所示,注意图中的数据流通路,上层从左至右做卷积,下层从右至左做反卷积,中间有短接。MLFPN使用多个TUM结构和多个FFMv2结构交替链接,形成特征流通路。除第1个TUM使用base feature作为输入以外,其他TUM使用base feature和FFMv2的输出作为输入。不同的TUM提取的特征层次不同,前面的TUM提取低层次特征,后面的TUM提取高层次特征。同一个TUM内部,不同尺寸的feature map表示不同尺度的特征,但是它们的特征层次相同。
FFMv2(Feature Fusion Module) FFMv2将TUM中decoder输出的尺寸最大的特征和base feature作为输入,将两个层次的特征融合,传输给后面的TUM。FFMv2的结构图如下所示:
SFAM(Scale-wise Feature Aggregation Module) SFAM包括两个部分,其一是下图中的Same-scale concatenate部分,将所有TUM的输出特征按特征尺寸分组,同尺寸的特征放在一组中,将同组中的特征按通道维度组合在一起,形成了多尺度、多层次的特征金字塔。相比于传统的特征金字塔,由MLFPN得到的特征金字塔中,每个尺度下有多个不同层次的特征。其二是参考论文Squeeze-and-excitation networks中的方法,进行如下操作(以下图中尺寸为20x20的特征为例):
1.将20x20x1024的特征记作,将进行全局平均池化,得到1x1x1024的张量,记作,C=1024。
2.以z为输入,构建包含激活函数的2个全连接层,记作。其中表示ReLU函数,表示sigmoid函数,,,这里取r=16,C=1024。得到的。
3.将记作,C=1024。即将在通道维度“切开”。对中的每个通道进行如下操作:,。即对中的每个通道乘以权重,表示中每个通道的重要程度。
将上述操作应用于不同尺度的特征中,得到SFAM的输出。
以MLFPN为核心构建目标检测网络,特点如下:
分别使用了VGG和ResNet作为backbone,backbone先在ImageNet2012数据集做预训练,VGG和ResNet分别由以下两篇文章提出:
Very deep convolutional networks for large-scale image recognition.
Deep residual learning for image recognition.
MLFPN包含8个TUM模块,每个TUM都与下图一致,由图可知每个TUM能输出6个尺度的特征。
尝试了多种输入尺寸,分别为320、512和800。
在SFAM输出的6组特征后面,分别接2个卷积层,1个用于定位,1个用于分类。
特征金字塔中的每个像素,对应3种长宽比的6个anchor。
后处理中使用了Soft-nms-improving object detection with one line of code论文中提出的soft-NMS。
实验结果
M2Det与其他主流网络对比结果如下表所示,测试数据集为MS COCO test-dev。
此外,还在COCO test-dev数据集上对不同目标检测算法做了速度和精度的对比,如下图所示
结语
在本文的末尾,作者进行了一个很有趣的讨论。作者认为,M2Det检测精度高的主要原因是提取了多层次、多尺度的特征。SFAM输出的特征金字塔中,每个尺度的特征均包含多个层次,很适用于处理同一类别下外观差异大的个体。作者对SFAM的输出进行可视化,如下图所示
显然,较小的feature map,能提取到尺寸大的车和人。更为重要的是,识别红绿灯这种简单的物体,低层次的特征有很强的响应;识别车这种中等难度的物体,中等层次的特征有很强的响应;识别行人这种困难的物体,高层次的特征有很强的响应。
相比于其他工作,M2Det在每个尺度上都有不同层次的特征,用于识别不同难度的物体。
本文为粉丝张凯投稿。
END
下载1:速查表
在「AI算法与图像处理」公众号后台回复:速查表,即可下载21张 AI相关的查找表,包括 python基础,线性代数,scipy科学计算,numpy,kears,tensorflow等等
下载2 CVPR2020
在「AI算法与图像处理」公众号后台回复:CVPR2020,即可下载1467篇CVPR 2020论文
点亮在看吧,让更多需要的人看到