本文来自公众号“AI大道理”。
这里既有AI,又有生活大道理,无数渺小的思考填满了一生。
在深度学习的很多工作中(例如目标检测、图像分割),融合不同尺度的特征是提高性能的一个重要手段。
低层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。
高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。
如何将两者高效融合,取其长处,弃之糟泊,是改善分割模型的关键。
图像金字塔(Featurized image pyramid)
传统方法,通过对图像进行降采样处理,提取每层图像的特征,然后在每层预测。
图像金字塔来构建不同尺度的特征金字塔,这样会带来极大的计算量。
使用图像金字塔构建特征金字塔,特征是根据每个不同大小比例的图像独立计算的,每计算一次特征都需要resize一下图片大小,耗时,速度很慢。
优点:
-
对每一种尺度的图像进行特征提取,能够产生多尺度的特征表示,并且所有等级的特征图都具有较强的语义信息,甚至包括一些高分辨率的特征图。
缺点:
-
推理时间大幅度增加;
-
由于内存占用巨大,用图像金字塔的形式训练一个端到端的深度神经网络变得不可行;
-
如果只在测试阶段使用图像金字塔,那么会造成一个问题:由于训练时,网络只是针对于某一个特点的分辨率进行训练,推理时运用图像金字塔,可能会在训练与推理时产生“矛盾”。
单个高层特征图 (Single feature map)
利用单个高层特征图进行预测。
该金字塔网络是一个高深的卷积神经网络,对不同尺寸的图片进行垂直目标检测,同时搞定多种尺寸的目标难度较大。
借助卷积网络,通过单特征图进行预测。
例如Faster R-CNN中的RPN层就是利用单个高层特征图进行物体的分类和bounding box的回归。
金字塔型特征层级(Pyramidal feature hierarchy)
重用由卷积计算的金字塔特征层次来进行目标位置预测,但底层feature map特征表达能力不足。
通过不同尺度的特征图进行分别预测,更好的处理目标的多尺度问题。
比如SSD one-stage目标检测模型就是再次利用不同层多尺度的特征图。
但是SSD并没有解决以下问题:
低层特征图语义信息不够和低层特征图的分辨率也不高。
底层大scale的feature map语义信息少,虽然框出了小物体,但小物体容易被错分。
特征金字塔(Feature Pyramid Networks)
卷积神经网络由浅到深,语义信息越来越丰富,但特征图越来越小,分辨率越来越低,解决方案是接将浅层和高层的特征图连接起来,将浅层的信息传递到深层,以解决深层特征图容易忽略小目标的问题。
为了解决以上三种结构的不足之处,提出了FPN,即使每一层不同尺度的特征图都具有较强的语义信息。
这种网络结构,能够在增加较少计算量的前提下融合低分辨率语义信息较强的特征图和高分辨率语义信息较弱但空间信息丰富的特征图。
FPN的独特之处在于,它是在以特征金字塔为基础结构上,对每一层级的特征图分别进行预测。
FPN将深层信息上采样,与浅层信息逐元素地相加,从而构建了尺寸不同的特征金字塔结构,性能优越,现已成为目标检测算法的一个标准组件。
上采样
自顶向下的过程通过上采样(up-sampling)的方式将顶层的小特征图。
放大到上一个stage的特征图一样的大小。
上采样的方法是最近邻插值法:
使用最近邻值插值法,可以在上采样的过程中最大程度地保留特征图的语义信息(有利于分类),从而与bottom-up 过程中相应的具有丰富的空间信息(高分辨率,有利于定位)的特征图进行融合,从而得到既有良好的空间信息又有较强烈的语义信息的特征图。
1)Bottom-Up Pathway
原生态的金字塔,所有的 ConvNet 都具备的特征,不需要多讲,这里作者选择的是每个Stage 的最后一层作为特征层,这里的 Stage 是指尺寸发生变化的情况。
2)Top-Down Pathway
对应特征图的上采样,思路是通过上采样提取更 Strong 的语义信息,同时上采样带来的是某些信息的丢失。
3)Lateral Connection
侧向连接是将原始的特征信息整合到右侧上采样特征层,原始特征代表了准确的 Location 信息。
通过 Top-Down(更强的语义信息) 和 侧向连接(准确的Loc)的结合,兼顾底层特征和抽象语义,连接方式可以这样描述:
Top-Down 通过2倍的上采样连接,侧向连接通过 1x1 的卷积进行连接,通过 Add 操作进行 Merge。
yolo v3中的特征金字塔
在特征利用部分,yolo3提取多特征层进行目标检测,一共提取三个特征层,三个特征层位于主干部分darknet53的不同位置,分别位于中间层,中下层,底层,三个特征层的shape分别为(52,52,256)、(26,26,512)、(13,13,1024)。
三个特征层进行5次卷积处理,处理完后一部分用于输出该特征层对应的预测结果,一部分用于进行反卷积UmSampling2d后与其它特征层进行结合。
输出层的shape分别为(13,13,75),(26,26,75),(52,52,75),最后一个维度为75是因为该图是基于voc数据集的,它的类为20种,yolo3只有针对每一个特征层存在3个先验框,所以最后维度为3x25。
如果使用的是coco训练集,类则为80种,最后的维度应该为255 = 3x85,三个特征层的shape为(13,13,255),(26,26,255),(52,52,255)。
总结
特征金字塔是对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度。
FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可以和经典网络组合提升原网络效果。
——————
浅谈则止,细致入微AI大道理
扫描下方“AI大道理”,选择“关注”公众号
—————————————————————
—————————————————————
投稿吧 | 留言吧