论文笔记之Scale-Transferrable Object Detection

2018 年 7 月 5 日 统计学习与视觉计算组

发表于CVPR2018

是上海交通大学Peng Zhou、Bingbing Ni等人的一项工作。

论文链接:

http://openaccess.thecvf.com/content_cvpr_2018/papers/Zhou_Scale-Transferrable_Object_Detection_CVPR_2018_paper.pdf 

尺度问题是物体检测的核心,传统的检测方法为了解决尺度问题,一个基本的策略就是使用图像金字塔来获得不同尺度的特征,但是这样方法极大的增加了内存和计算的开销,降低了目标检测的实时性。

最近,卷积神经网络在计算机视觉领域取得很大成功,比如图像分类、语义分割和目标检测等。深度特征替代手工特征,极大的改善了目标检测器的性能。

Faster R-CNN使用最后一层卷积特征来预测不同尺度不同表观比的候选区域提议,如图1(a)。因为CNN中每层特征的感受野的大小是固定的,固定的感受野和不同尺度的目标之间存在着不一致性,而这可能会影响目标检测的性能。

SSD和MS-CNN使用不同层的特征来预测不同尺度的目标,如图1(c)。浅的特征层的感受野较小,可以检测较小的目标,深的特征层感受野较大,可以检测较大的目标,然而,浅层特征具有较少的语义信息,这可能会损害检测小目标的性能。

FPN、ZIP和DSSD整合所有特征层的语义信息,如图1(b),通过自顶向下的结构整合高层语义信息和低层特征信息在各种尺度上产生更具语义的特征图。但是呢,为了改善检测性能,特征金字塔需要被小心的构建,而且需要添加额外的层来构建特征金字塔,这带来了额外的计算损失。

为了获得具有高水平语义信息的多尺度特征图,并且不损失检测器的速度,作者提出了一个Scale-Transfer Module (STM),并将这个模块直接嵌入到DenseNet中,DenseNet可以整合低层高层信息,以此得到更强有力的特征表示。STM包括pooling层和scale-transfer层,pooling层用来降低特征图的分辨率,scale-transfer层用来扩张特征图的分辨率,而且不会带来额外的参数和计算量。

作者使用STM构建了一个一阶段的目标检测器,命名为:Scale-Transferrable Dtection Network (STDN),图2为本文提出的网络结构,因为DenseNet中最后一个dense block的最后一层的特征图有很多通道,scale-transfer通过压缩特征图的通道来扩张特征图的宽和高,这可以有效降低下一个卷积层的参数数量。


DenseNet

发表于CVPR2017,是Cornell University和清华大学合作的一篇文章。作者基于一个发现提出了Dense Convolutional Network (DenseNet)。

论文:

https://arxiv.org/pdf/1608.06993.pdf 

代码:

https://github.com/liuzhuang13/DenseNet 
代码(MXNet版本): 

https://github.com/miraclewkf/DenseNet

这个发现为:如果层之间包含shorter connection,使得这些层不仅更接近于输入层,同时更接近于输出层,那么,卷积网络可以更深、更精确、并且能够有效训练。

DenseNet为:对于某层而言,其之前所有层的特征图都将作为该层的输入,即将该层之前的所有层的特征图通过concatenating的方式连接起来作为该层的输入,并且,该层将作为后续所有层的输入。

假设H_l(*)为组合函数,比如包括BN、ReLU、Pooling、Convolution等,定义第l层的输出为x_l,那么:

传统神经网络:

DenseNet:

但其实,如果不同层的特征图不一样大时是没有办法直接连接的,因此这种想法直接应用于传统卷积神经网络是不合适的,因为down-sampling层会改变特征图的大小(注,对于卷积层,通过添加合适的padding,stride=1就可以保证前后特征图一样大),所以上图只是一个设想,但是要实现这种想法怎么办呢,作者将网络分成multiple densely connected dense blocks,在每个dense block中使用这种结构,也就是说每个dense block中的特征图都一样大,而不同dense block不一样大,这样即保留了传统卷积神经网络的特点,同时也最大程度的使用了shorter connection结构

如上图所示,denseNet的每个dense block中,每层特征图都是接下来层的输入。而denseNet最后一个dense block中的最后一层特征图的通道数量很大,特别适合作为作者提出的scale-transfer层的输入,为什么这么说呢,因为scale-transfer通过压缩特征图的通道来扩张特征图的宽和高,所以通道数不能太少,如果太少的话就不够拿来扩张特征图了。DenseNet的网络结构为:


stem layer

在Scale-Transfer Module中,作者将DenseNet中最开始的一个7*7的卷积层(stride=2)和一个3*3的卷积层(stride=2)替换为三个3*3的卷积层和一个2*2的mean pooling层,其中前两个卷积层的stride=2,第三个卷积层的stride=1,而且这三个3*3的卷积层的输出都为64,作者将这些层称之为stem layer,而且实验表明,这种简单的替换对于检测而言能够带来明显的性能提升。


Scale-Transfer Module

最开始讲了,尺度问题是目标检测中的核心问题。联合不同分辨率的多特征图上的检测结果对于检测多尺度的目标是有益的,但是,denseNet的最后一个dense block中所有层的输出都具有相同的宽和高,只有通道个数有区别,要使用不同分辨率的特征图怎么办呢,一个简单的办法就是像SSD那样,直接使用低层的高分辨率图,但是低层的高分辨率图缺乏足够的语义信息,这可能会影响检测器的性能。

(解释一下为什么使用denseNet呢,因为denseNet通过concat操作将低层特征直接传给了高层,所以网络高层的特征图既包含低层的细节信息,又包含高层的语义信息,因此可以改善目标定位和分类的性能。)

为了获得不同分辨率的特征图,受超分辨率方法[1]的启发,作者创意的使用了一个scale-transfer module(STM)。STM使用denseNet最后一个dense block的所有层输出作为输入,然后通过STM得到不同尺度的特征图,在STM中使用mean pooling层获得低分辨率特征图,使用scale-transfer层获得高分辨率特征图,如下图

使用mean pooling获得低分辨率特征图是显而易见的,但是如何通过scale-transfer层获得高分辨率图呢,如下图:

假设原来的特征图的维度为W*H*C,经过scale-transfer层之后的特征图的维度为rW*rH*(C/(r*r)),可以看到元素总个数没有改变,改变的只是排列方式。单拿一个位置来说。原来是一个1*1*C的列向量,要将这个列向量变成一个r*r*(C/(r*r))的张量,那么就将这个1*1*C的列向量的前1*1*(r*r)个元素平铺成r*r的一个矩阵,接下来的1*1*(r*r)个元素平铺成r*r的一个矩阵,……,然后将这些r*r的矩阵依次排列成r*r*(C/(r*r))的张量。数学表达式为:

注意,此公式中矩阵的下标从0开始。SR表示高分辨率特征图,LR表示低分辨特征图。1*1*8的列向量变成一个2*2*2张量的示意图:


scale-transferrable detection network (STDN)

那么作者是如何通过STM构建一个一阶段的检测器STDN的呢?STDN包括一个基网络和两个特定任务预测子网络,基网络用来作为特征提取器,第一个子网络用作目标分类,第二个子网络用作bounding box位置回归。

基网络提取特征,然后通过STM得到不同分辨率的特征图,在这些特征图上得到anchor boxes(长宽比为1.6,2.0,3.0),通过两个子网络对anchor boxes进行分类和回归,其中anchor boxes和groundtruth的IoU大于0.5的当作正样本,其他的当作背景,背景的数量远远大于正样本的数量,通过hard negative mining,最终参与训练的正负样本比为3:1。

  • 分类子网络

分类子网络用于预测每个anchor属于某类的概率,它包括一个1*1的卷积层和两个3*3的卷积层,最后一层有KA个滤波器,其中K为类别个数,A为每个位置的anchor个数,分类器的损失为softmax损失。

  • Box回归子网络

Box回归子网络用来回归每个anchor box和匹配的groundtruth的偏移,Box回归子网络与分类子网络的结构相同,除了最后一层,Box回归子网络最后一层拥有4A个滤波器,使用平滑L1损失作为定位损失。注意,在分类子网络中使用正负样本来训练分类子网络,而在Box回归子网络中只使用正样本来训练网络。

网络损失函数

最终网络的损失函数为:

STDN结构:


实验

通过实验验证STDN每个部分的有效性

  • STM的有效性

DenseNet-169+SSD:使用DenseNet提取特征,使用同深度的特征图来做目标检测,其实相当于SSD中的特征提取部分由VGG变为DenseNet-169.

DenseNet-169+STM:使用DenseNet提取特征,使用STM得到DenseNet最后一个dense block的不同分辨率的特征图来做目标检测。

可以看到,DenseNet-169+STM的性能优于DenseNet-169+SSD的性能。

  • Stem Block的有效性

DenseNet-169+stem block+STM:在DenseNet-169+STM的基础上添加stem block,原来的DenseNet-169的tansition中max pooling和conv的stride都为2,连续的降采样操作导致损失较多的信息,损害了检测器的性能。

  • Dense Convolutional Network的有效性

Inception-v3+STM,特征提取部分使用Inception-v3,移除Inception-v3中最后的global pooling之后的所有层,然后添加跟DenseNet-169中最后一个dense block相同的结构。从上图可以很明显的看到使用DenseNet-169的检测性能更好。


总结

原始的scale-transfer层是用来做超像素的,也有一些人将其用于语义分割,作者将其用于目标检测。因为卷积神经网络的conv和pooling层的存在,导致高层的特征图特别小,比如对于输入为300*300*3的图像,经过DenseNet-169以后,顶层的特征大小为9*9*1664,这意味着特征图中的一个像素大约对应着原图中的33个像素,如果使用4X scale-transfer层,那么9*9*1664的特征图的大小就变为了36*36*104,此时得到的anchor的数量是在原来特征图上得到anchor数量的16倍。而且,相比于其他的上采样操作,比如反卷积,该方法没有增加额外的参数和计算,另外由于该方法降低了通道的数量,能够有效的降低后续分类和box回归自网络的参数,这对于保证检测器的实时性是非常有益的。


[1] Shi W, Caballero J, Huszar F, et al. Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network[C]// Computer Vision and Pattern Recognition. IEEE, 2016:1874-1883.

登录查看更多
2

相关内容

作为CVPR2017年的Best Paper, DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,从特征的角度考虑,通过特征重用和旁路(Bypass)设置,既大幅度减少了网络的参数量,又在一定程度上缓解了gradient vanishing问题的产生.结合信息流和特征复用的假设,DenseNet当之无愧成为2017年计算机视觉顶会的年度最佳论文.
FoveaBox,超越Anchor-Based的检测器
极市平台
10+阅读 · 2019年4月22日
CornerNet: Detecting Objects as Paired Keypoints 论文笔记
统计学习与视觉计算组
7+阅读 · 2018年9月27日
Single-Shot Object Detection with Enriched Semantics
统计学习与视觉计算组
14+阅读 · 2018年8月29日
论文笔记之Feature Selective Networks for Object Detection
统计学习与视觉计算组
21+阅读 · 2018年7月26日
Cascade R-CNN 论文笔记
统计学习与视觉计算组
8+阅读 · 2018年6月28日
Faster R-CNN
数据挖掘入门与实战
4+阅读 · 2018年4月20日
Fast R-CNN
数据挖掘入门与实战
3+阅读 · 2018年4月20日
Relation Networks for Object Detection 论文笔记
统计学习与视觉计算组
16+阅读 · 2018年4月18日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
11+阅读 · 2018年3月15日
Clustered Object Detection in Aerial Images
Arxiv
5+阅读 · 2019年8月27日
Arxiv
11+阅读 · 2019年4月15日
Arxiv
10+阅读 · 2019年1月24日
Zero-Shot Object Detection
Arxiv
9+阅读 · 2018年7月27日
Arxiv
5+阅读 · 2018年5月16日
Arxiv
11+阅读 · 2018年4月8日
Arxiv
6+阅读 · 2018年3月19日
VIP会员
相关VIP内容
相关资讯
FoveaBox,超越Anchor-Based的检测器
极市平台
10+阅读 · 2019年4月22日
CornerNet: Detecting Objects as Paired Keypoints 论文笔记
统计学习与视觉计算组
7+阅读 · 2018年9月27日
Single-Shot Object Detection with Enriched Semantics
统计学习与视觉计算组
14+阅读 · 2018年8月29日
论文笔记之Feature Selective Networks for Object Detection
统计学习与视觉计算组
21+阅读 · 2018年7月26日
Cascade R-CNN 论文笔记
统计学习与视觉计算组
8+阅读 · 2018年6月28日
Faster R-CNN
数据挖掘入门与实战
4+阅读 · 2018年4月20日
Fast R-CNN
数据挖掘入门与实战
3+阅读 · 2018年4月20日
Relation Networks for Object Detection 论文笔记
统计学习与视觉计算组
16+阅读 · 2018年4月18日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
11+阅读 · 2018年3月15日
相关论文
Clustered Object Detection in Aerial Images
Arxiv
5+阅读 · 2019年8月27日
Arxiv
11+阅读 · 2019年4月15日
Arxiv
10+阅读 · 2019年1月24日
Zero-Shot Object Detection
Arxiv
9+阅读 · 2018年7月27日
Arxiv
5+阅读 · 2018年5月16日
Arxiv
11+阅读 · 2018年4月8日
Arxiv
6+阅读 · 2018年3月19日
Top
微信扫码咨询专知VIP会员