1.定义
2.常用架构
2.1多尺度输入网络
2.2 多尺度特征融合网络
(1) 并行多分支结构
(2) 串行多分支结构
2.3 多尺度特征预测融合
2.4 多尺度特征和预测融合
3.具体方法
3.1 SNIP
3.2 SNIPER(SNIP的改进)
3.3 SSD
3.4 TridentNet(三叉戟网络)
3.5 FPN
3.6 PANet
3.7 其他
ThunderNet
Libra R-CNN
多尺度:所谓多尺度,实际上就是对信号的不同粒度的采样,通常在不同的尺度下我们可以观察到不同的特征,从而完成不同的任务。通常来说粒度更小/更密集的采样可以看到更多的细节,粒度更大/更稀疏的采样可以看到整体的趋势。
特征融合:在深度学习的很多工作中(例如目标检测、图像分割),融合不同尺度的特征是提高性能的一个重要手段。低层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。如何将两者高效融合,取其长处,弃之糟泊,是改善分割模型的关键。很多工作通过融合多层来提升检测和分割的性能,按照融合与预测的先后顺序,分类为早融合(Early fusion)和晚融合(Late fusion)。
早融合(Early fusion): 先融合多层的特征,然后在融合后的特征上训练预测器(只在完全融合之后,才统一进行检测)。这类方法也被称为skip connection,即采用concat、add操作。这一思路的代表是Inside-Outside Net(ION)和HyperNet。两个经典的特征融合方法:
(1)concat:系列特征融合,直接将两个特征进行连接。两个输入特征x和y的维数若为p和q,输出特征z的维数为p+q;
(2)add:并行策略,将这两个特征向量组合成复向量,对于输入特征x和y,z = x + iy,其中i是虚数单位。
晚融合(Late fusion):通过结合不同层的检测结果改进检测性能(尚未完成最终的融合之前,在部分融合的层上就开始进行检测,会有多层的检测,最终将多个检测结果进行融合)。这一类研究思路的代表有两种:
(1)feature不融合,多尺度的feture分别进行预测,然后对预测结果进行综合,如Single Shot MultiBox Detector (SSD) , Multi-scale CNN(MS-CNN)
(2)feature进行金字塔融合,融合后进行预测,如Feature Pyramid Network(FPN)等。
卷积神经网络通过逐层抽象的方式来提取目标的特征,其中一个重要的概念就是感受野。如果感受野太小,则只能观察到局部的特征,如果感受野太大,则获取了过多的无效信息,因此研究人员一直都在设计各种各样的多尺度模型架构,主要是图像金字塔和特征金字塔两种方案,但是具体的网络结构可以分为以下几种:(1) 多尺度输入。(2) 多尺度特征融合。(3) 多尺度特征预测融合。(4) 以上方法的组合。
顾名思义,就是使用多个尺度的图像输入(图像金字塔),然后将其结果进行融合。值得一提的是,多尺度模型集成的方案在提高分类任务模型性能方面是不可或缺的,许多的模型仅仅采用多个尺度的预测结果进行平均值融合,就能在ImageNet等任务中提升2%以上的性能。
多尺度特征融合网络常见的有两种,第一种是并行多分支网络,第二种是串行的跳层连接结构,都是在不同的感受野下进行特征提取。并行的结构能够在同一层级获取不同感受野的特征,经过融合后传递到下一层,可以更加灵活地平衡计算量和模型能力。串行的结构将不同抽象层级的特征进行融合,对于边界敏感的图像分割任务是不可缺少的。
①使用不同大小的卷积核
比如Inception网络中的Inception基本模块,包括有四个并行的分支结构,分别是1×1卷积,3×3卷积,5×5卷积,3×3最大池化,最后对四个通道进行组合。
②使用空洞卷积
还可以使用带孔卷积来控制感受野。在图像分割网络Deeplab V3和目标检测网络trident networks中都使用了这样的策略。
③使用不同大小的池化
还有一种比不同大小的卷积核和带孔卷积计算代价更低的控制感受野的方法,即直接使用不同大小的池化操作,被PSPNet采用。
值得注意的是,这样的多分支结构对于模型压缩也是有益处的,以Big-little Net为代表,它采用不同的尺度对信息进行处理。对于分辨率大的分支,使用更少的卷积通道,对于分辨率小的分支,使用更多的卷积通道,这样的方案能够更加充分地使用通道信息。
串行的多尺度特征结构以FCN,U-Net为代表,需要通过跳层连接来实现特征组合,这样的结构在图像分割/目标检测任务中是非常常见的。
即在不同的特征尺度进行预测,最后将结果进行融合,以目标检测中的SSD为代表。SSD用不同stride在不同大小的特征图上进行预测。低层特征图stride较小,尺寸较大,感受野较小,期望能检测到小目标。高层特征图stride较大,尺寸较小,感受野较大,期望能检测到大目标。类似的思想还有SSH,从分辨率较大的特征图开始分为多个分支,然后各个分支单独预测不同尺度大小的目标。在多个特征通道进行预测的思想与多个输入的方案其实是异曲同工的,相当于在网络计算过程中孙边获取了多个不同分辨率的图像,因此它的计算效率更高。
既然可以将不同尺度的特征进行融合,也可以在不同的尺度进行预测,为何不同时将这两种机制一起使用呢?这样的结构以目标检测中的FPN为代表。即将高层的特征添加到相邻的低层组合成新的特征,每一层单独进行预测。当然,也可以反过来将低层的特征也添加到高层,比如PAN。当然,对于不同尺度的特征图的融合,还可以基于学习的融合方案。
(https://arxiv.org/abs/1711.08189)
SNIP是多尺度训练(Multi-Scale Training)的改进版本。MST的思想是使用随机采样的多分辨率图像使检测器具有尺度不变特性。然而作者通过实验发现,在MST中,对于极大目标和过小目标的检测效果并不好,但是MST也有一些优点,比如对一张图片会有几种不同分辨率,每个目标在训练时都会有几个不同的尺寸,那么总有一个尺寸在指定的尺寸范围内。
SNIP的做法是只对size在指定范围内的目标回传损失,即训练过程实际上只是针对某些特定目标(被放大的小物体或被缩小的大物体)进行,这样就能减少映射迁移(domain-shift)带来的影响。SNIP让模型更专注于物体本身的检测,剥离了多尺度的学习难题。在网络搭建时,SNIP也使用了类似于MST的多尺度训练方法,构建了3个尺度的图像金字塔,但在训练时,只对指定范围内的Proposal进行反向传播,而忽略掉过大或者过小的Proposal。(关于domain-shift,我的理解是检测网络的backbone通常是针对分类问题训练得到的,相当于整张图像为检测结果,SNIP通过只训练特定大小范围的图像减少与backbone网络的差别)
(https://arxiv.org/abs/1805.09300)
SNIP借鉴了multi-scale training的思想进行训练,multi-scale training是用图像金字塔作为模型的输入,这种做法虽然能够提高模型效果,但是计算量的增加也非常明显,因为模型需要处理每个scale图像的每个像素,而SNIPER(Scale Normalization for Image Pyramids with Efficient Resampling)算法在特征图上的ground truth box周围去crop一些图片,这些图片称为chips,在训练期间每个图像生成的chips的数量会根据场景复杂度而自适应地变化。chips主要分为两大类:一种是postivice chips,这些chips至少应该覆盖一个groud-truth box;另一种是从RPN网络输出的ROI抽样得到的negative chips,选择negative chips的目的在于要让网络更容易去判断出哪些是背景,而不必花费太多的时间在上面。这些chips相当于是难分类的背景,而那些容易分类的背景就没必要进行多尺度训练了。
SSD以不同stride的feature map作为检测层分别检测不同尺度的目标,用户可以根据自己的任务的目标尺度制定方案。该方式尺度处理简单有效,但存在一些缺陷:
一般使用低层检测小目标,但低层感受野小,上下文信息缺乏,容易引入误检;
使用简单的单一检测层多尺度信息略显缺乏,很多任务目标尺度变化范围十分明显;
高层虽然感受野较大,但毕竟经过了很多次降采样,大目标的语义信息是否已经丢失;
多层特征结构,是非连续的尺度表达,是非最优的结果;
(https://arxiv.org/abs/1901.01892)
TridentNet网络的作者将3种不同的感受野网络并行化。采用ResNet作为基础Backbone,前三个stage沿用原始的结构,在第四个stage,使用了三个感受野不同的并行网络。
(1)3个不同的分支使用了空洞数不同的空洞卷积,感受野由小到大,可以更好地覆盖多尺度的物体分布。
(2)由于3个分支要检测的内容是相同的、要学习的特征也是相同的,只不过是形成了不同的感受野来检测不同尺度的物体,因此,3个分支共享权重,这样既充分利用了样本信息,学习到更本质的目标检测信息,也减少了参数量与过拟合的风险。
(3)借鉴了SNIP的思想,在每一个分支内只训练一定范围内的样本,避免了过大与过小的样本对于网络参数的影响。
在训练时,TridentNet网络的三个分支会接入三个不同的head网络进行后续损失计算。在测试时,由于没有先验的标签来选择不同的分支,因此只保留了一个分支进行前向计算,这种前向方法只有少量的精度损失。
FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,这和常规的特征融合方式不同。FPN将深层信息上采样,与浅层信息逐元素地相加,从而构建了尺寸不同的特征金字塔结构,性能优越,现已成为目标检测算法的一个标准组件。FPN的结构如下所示。
自下而上:最左侧为普通的卷积网络,默认使用ResNet结构,用作提取语义信息。C1代表了ResNet的前几个卷积与池化层,而C2至C5分别为不同的ResNet卷积组,这些卷积组包含了多个Bottleneck结构,组内的特征图大小相同,组间大小递减。
自上而下:首先对C5进行1×1卷积降低通道数得到P5,然后依次进行上采样得到P4、P3和P2,目的是得到与C4、C3与C2长宽相同的特征,以方便下一步进行逐元素相加。这里采用2倍最邻近上采样,即直接对临近元素进行复制,而非线性插值。
横向连接(Lateral Connection):目的是为了将上采样后的高语义特征与浅层的定位细节特征进行融合。高语义特征经过上采样后,其长宽与对应的浅层特征相同,而通道数固定为256,因此需要对底层特征C2至C4进行11卷积使得其通道数变为256,然后两者进行逐元素相加得到P4、P3与P2。由于C1的特征图尺寸较大且语义信息不足,因此没有把C1放到横向连接中。
卷积融合:在得到相加后的特征后,利用3×3卷积对生成的P2至P4再进行融合,目的是消除上采样过程带来的重叠效应,以生成最终的特征图。
FPN对于不同大小的RoI,使用不同的特征图,大尺度的RoI在深层的特征图上进行提取,如P5,小尺度的RoI在浅层的特征图上进行提取,如P2。
FPN以更为轻量的最近邻插值结合侧向连接实现了将高层的语义信息逐渐传播到低层的功能,使得尺度更为平滑,同时它可以看做是轻量级的decoder结构。FPN看起来很完美,但仍然有一些缺陷:
在上采样时使用了比较粗糙的最近邻插值,使得高层的语义信息不一定能有效传播;
由于经过多次下采样,最高层的感受野虽然很丰富,但可能已经丢失了小目标的语义信息,这样的传播是否还合适;
FPN的构建只使用了backbone的4个stage的输出,其输出的多尺度信息不一定足够;
FPN中虽然传播了强的语义信息到其他层,但对于不同尺度的表达能力仍然是不一样的,因为本身就提取了不同backbone的输出。
(https://arxiv.org/abs/1803.01534)
为了缩短信息路径和用低层级的准确定位信息增强特征金字塔,PANet在FPN基础上创建了自下而上的路径增强(图 2b)。用于缩短信息路径,利用low-level 特征中存储的精确定位信号,提升特征金字塔架构。PANet创建自适应特征池化(Adaptive feature pooling)( 图 2c)。用于恢复每个候选区域和所有特征层次之间被破坏的信息路径,聚合每个特征层次上的每个候选区域。PANet的目标检测和实例分割共享网络架构的图 2 abc三部分,使得两者性能均有提升。
(https://arxiv.org/pdf/1903.11752.pdf)
轻量型目标检测框架,主要简化了FPN结构,只使用C4/C5,同时引入gpooling操作(Face++论文好多这么用,确实有效),最终输出C4分辨率大小的累加特征。网络的检测部分,利用了压缩的RPN网络,既Context Enhancement Module(CEM)整合局部和全局特征增强网络特征表达能力。并提出Spatial Attention Module空间注意模块,引入来自RPN的前后景信息用以优化特征分布。
(https://arxiv.org/pdf/1904.02701.pdf)
无论是one-stage two-stage,都涉及选择候选区域,特征提取与融合、loss收敛。针对目标检测的三个阶段,论文提出三个问题:采样的候选区域示范具有代表性,不同level特征如何融合,以及损失函数如何更好收敛。论文针对三个问题提出三个改进方向:IoU-balanced Sampling;Balanced Feature Pyramid;Balanced L1 Loss。为了更高效利用FPN特征,论文使用4步改进rescaling, integrating, refining,Strengthening(如下图所示):
a. rescaling。把{C2,C3 ,C5}的多层特征均rescaling到C4尺寸,做加权求平均值。得到的特征C rescaling返回到{C2,C3 ,C5}特征分辨率。
b. Refining&strengthening。论文使用Gaussian non-local attention 增加特征。
c. Indentity,既残差设计。
参考:
1.https://zhuanlan.zhihu.com/p/74710464
2.https://mp.weixin.qq.com/s?__biz=MzI0NDYxODM5NA==&mid=2247484609&idx=1&sn=15a21da91525fb090b0739e29f410a59&chksm=e95a4134de2dc8227d70c5c7b5c6e40377c41afe91e1c3fa255dbe8c3880a91f1d0e6adbc29f&mpshare=1&scene=23&srcid=&sharer_sharetime=1589783614150&sharer_shareid=0cf528142031382a1af6b6c58425d624#rd
3.https://mp.weixin.qq.com/s?__biz=MzUxNjcxMjQxNg==&mid=2247499514&idx=4&sn=68c21994ba56d058653463c3669596e9&chksm=f9a18c75ced60563c632a9ff8f0750551c8c900f914abc46ca4329fbb5cc378d9df761d1bbeb&mpshare=1&scene=23&srcid=0520xZgnKxPtV2d27BSGx2J9&sharer_sharetime=1589941258272&sharer_shareid=0cf528142031382a1af6b6c58425d624#rd