本文主要是介绍【语义分割】——多层特征的融合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自:语义分割-多层特征融合
尊重原创,请读原文
语义分割,也称为像素级分类问题,其输出和输入分辨率相同(如题图中,左边为2048x1024分辨率的Cityscapes街景图像,输入模型,得到右边同样分辨率的语义图)。由此,语义分割具有两大需求,即高分辨率和高层语义,而这两个需求和卷积网络设计是矛盾的。
卷积网络从输入到输出,会经过多个下采样层(一般为5个,输出原图1/32的特征图),从而逐步扩大视野获取高层语义特征,高层语义特征靠近输出端但分辨率低,高分率特征靠近输入端但语义层次低。高层特征和底层特征都有各自的弱点,各自的分割问题如图1所示,第二行高层特征的分割结果保持了大的语义结构,但小结构丢失严重;第三行低层特征的分割结果保留了丰富的细节,但语义类别预测的很差。
一个自然的想法就是融合高低层特征,取长补短,分割经典工作FCN和U-Net均采用了这个策略,物体检测中常用的特征金字塔网络(FPN)也是采用了该策略。为下文需要,先介绍两类融合策略,一类是FPN,先自下而上获取高层语义特征,再通过自上而下逐步上采样高层语义特征,并融合对应分辨率的下层特征;另一类是HRNet,自下而上包含多个分辨率通路,不同分辨率特征在自下而上过程中及时进行融合。
可能问题:
待融合的低分辨率高层特征一般通过双线性插值到低层特征的相同分辨率,然后通过相加或沿通道维拼接的方式进行融合。这里引入了两个问题,1.是否每个位置的高低层特征都是同等有效;2.高低层特征空间上存在对不齐的问题,简单上采样无法解决。
对问题1,我们提出了GFF,借鉴LSTM中的Gate机制,在不同位置给高低层特征根据有效性,给予不同的加权。
对问题2,最近arXiv上先后放出了两篇工作[1, 2],都是借鉴光流(对齐不同帧图像)来对齐不同层特征。其中,Semantic Flow [1]是基于FPN的自上而下策略,AlignSeg [2]是基于HRNet的自下而上策略。
Semantic Flow实现非常简单,首先引入Flow Alignment Module (FAM,图5),然后改造FPN(图6)。该方法由于没有使用常用的高层用带孔卷积替代下采样操作,整个网络计算量小、显存消耗少。
图6
该方法的优势是既快又准,如下图所示,ResNet18 backbone以26 FPS速度取得了80.4 mIoU。
AlignSeg采用类似HRNet保持分辨率的做法(图7),在保持分辨率过程中使用特征对齐模块(AlignFA)进行不同分辨特征之间的融合。
图8: AlignSeg(图源[2])
这篇关于【语义分割】——多层特征的融合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!