ECCV-2018
文章目录
1 Background and Motivation
目前 feature pyramids 设计的结构仍 inefficient to integrate the semantic information over different scales.
作者争对 SSD 和 FPN 结构的缺点,在 SSD 的基础上,设计了新的 feature pyramids 结构,使得 object detection 模型具有更强的特征表达能力!
SSD 是最早的用 feature pyramids 来做 object detection 的方法之一,
图片来自 SSD详解
缺点是 SSD 用 shallow-layer 的神经网络来检测小目标,但是低层的网络没有高级语义信息,小目标检测的效果不理想
FPN 的 top-down 特征融合是线性的,too simple to capture highly-nonlinear patterns for more complicate and practical cases. Several
2 Advantages / Contributions
- 提出了 global-local reconfigurations 的 feature pyramids,enhance multi-scale representations
- feature pyramids 中 all scales are performed simultaneously,比 layer-by-layer transformation 更efficient
3 Method
1)ConvNet Feature Hierarchy
目标检测的 backbone 特征集合可以表示成如下形式
- L L L :表示 backbone 的总层数
- x l x_l xl:表示 l t h l^{th} lth 层的输出
在 SSD 模型中,预测特征图集合可以表示为
eg:
P
P
P 在 VGG 中为 23
x P x_P xP 是高分辨率,limited semantic information,没有 reuse deeper and semantic information,不利于小目标的检测!
2)Lateral Connection
在 FPN 结构中,特征进行了如下的融合
α
\alpha
α 和
β
\beta
β 是 Conv(没有 activation function) 和 up-sampling(双线性插值),可以理解为线性操作! 一般化的表示,FPN 对特征做了如下形式的 polynomial expansions:
新生成的用来预测的特征图集合可以表示为
这种 representation power,在复杂的目标检测任务上是不够的
3.1 Deep Feature Reconfiguration
首先是要从线性变成非线性
其中非线性函数 H l ( X ) H_l(X) Hl(X) 表示为 a global attention 和 a local reconfiguration 操作!
3.1.1 Global Attention for Feature Hierarchy
用的 SENet 的方法,channel attention
SENet 的介绍可以参考 【SENet】《Squeeze-and-Excitation Networks》
第一步压缩分辨率,把特征图保留为一个只有通道数的向量
- x l c ( i , j ) x_l^c(i,j) xlc(i,j) 表示 i i i 行 j j j 列, c t h c^{th} cth channel
第二步接两个 fully connection
这里有点错误,应该是
W
1
l
W_1^l
W1l 和
W
2
l
W_2^l
W2l,
δ
\delta
δ 是 relu,
σ
\sigma
σ 的 sigmoid
把 channel dimension 的向量,压缩
r
=
16
r=16
r=16 倍,
第三步,把学习到的通道权重,与原来的特征图做 channel-wise multiplication
最后用来预测的特征图集合表示为
这里把下标
l
l
l 去掉更好,加个下标多此一举
3.1.2 Local Reconfiguration
resnet 的结构!把 channel attention 的输出接一个 bottleneck,配合 1x1 conv 的 shortcut 分支
用残差的好处是,it is easier to optimize the residual mapping than to optimize the desired underlying mapping.
和 resnet 的区别是,这里是在 feature hierarchy 上进行,而 resnet 是在 one level of convolutional output
4 Experiments
4.1 Datasets
- PASCAL VOC 2007
- PASCAL VOC 2012
- MS COCO datasets
4.2 PASCAL VOC 2007
VOC 07+12 trainval sets, VOC 07 test set
re 表示自己复现,lateral 就是 FPN
速度比较是在 batch size 1 on a machine with NVIDIA Titan X, CUDA 8.0 and cuDNN v5 条件下进行的!
比 FPN 效果好一点点
再看看和其它方法的比较
红线是召回率随着检测数量增加残生的 变化!
横坐标是检测的数量(要乘以一个系数),纵坐标是 recall 的百分比,可以看出,作者的方法在这三类中,recall 高于 90%
4.3 PASCAL VOC 2012
VOC2012 trainval for training and VOC2012 test for testing
4.4 MS COCO
80 k train + 40 k val 来训练,20 k test-dev 来测试(一般是 80+35 train,5 val,20 test)
比别人多用了 5k 来train 耶,比较公平吗?
5 Conclusion(own)
- 把 SENet 和 ResNet 加到了 FPN 的结构中,创新点没有太新颖,在 COCO 上比效果的时候,能不能保证训练集是一样的呢?比别人多 5k 来比?在 COCO 上应该也比较下 SSD+FPN 和 SSD+ours 的效果,会更有说服力(voc 提了不到一个点)
我们来分析下实验的细节
一句话,一个公式,一个注释可以看出,原来的特征是如何融合成一个 tensor 的,也即通过 adaptive sampling 成固定大小的特征图,然后 concatenate
感觉是 X X X 通过 H H H 函数后,然后插值成不同分辨率成为新的特征图, H H H 只作用了一次,而不是 4 次(如果有理解错误的地方,欢迎指正)