笔记笔记笔记
文章目录
- DSRL
- Structure
- Loss Function
- HANet
- Structure
- DeepLab V3+HANet
- SPNet
- Structure
- ResNet+MPM
- Visualize
- CPNet
DSRL
Dual Super-Resolution Learning for Semantic Segmentation
超分辨率+语义分割,用超分辨率图来指导语义分割任务(不止是语义分割任务,对其他视觉相关的任务也具有效果提高)
现有的语义分割方法往往使用空洞卷积或encoder-decoder的结构来保持高分辨率表示,会丢失一些信息,同时也会增加更多的计算成本,一旦降低数据的分辨率,网络的准确率会变低。
本文提出了一种双超分辨率学习模型DSRL,在以低分辨率图像为输入的情况下,依旧能够保持较高的准确率,且不会有额外的计算成本。该模型包括语义分割超分辨率SSSR,单图像超分辨率SISR和特征相似性FA3个模块。
Structure
- SSSR
在传统语义分割模型的最后额外增加一层上采样模块,最后将输出2倍原图大小的语义分割图 - SISR
该模块的目的是根据低分辨率的输入重建高分辨率图像,在inference的时候会将整个模块移除。该模块的encoder部分与SSSR是共享的,decoder部分采用了ESPCN的设计。最后的输出与SSSR的输出尺寸一致。 - FA
由于SISR比SSSR包含更完整的结构信息,因此引入特征相似性学习来指导SSSR学习高分辨率表示。语义分割图与超分辨率图之间的相似性计算:seg特征图上每两个像素位置对应的特征向量之间的相似度,以及sr图上对应两像素位置的特征向量之间的相似度的2范式的均值。
Loss Function
损失函数共包含三个部分,为网络生成的语义分割图的交叉熵损失,为SISR生成的超分辨率图的mse损失,为FA模块计算的特征相似性. 由于内存开销较大,fa损失在原图输入的1/8特征图上计算。
HANet
Cars Can’t Fly up in the Sky: Improving Urban-Scene Segmentation Height-driven Attention Networkst
城市道路场景中不同高度的语义类别具有很大的差异性,经过统计可以发现,汽车、道路、行人等语义类别只有在较低的位置会出现,其余的语义类别的分布情况如下图。
相较于考虑每两个像素之间关系的基于注意力的方法,HANet更加轻量化,与channel-wise attention的方法相比,考虑了更多的信息。
Structure
在已有语义分割网络的基础上添加一条支路,用于计算Attention Map,Attention Map的计算需要经过如图所示的(a)Width-wise pooling、(b)Interpolation for coarse attention 、©computing height-driven attention map、(d)computing height-driven、(e)adding positional encoding。
在得到Attention Map 后,将在水平方向上复制份,然后对语义分割主干网络得到的特征图进行加权。
- Width-wise pooling
对不同高度位置的数据进行池化(mean/max) - Interpolation for coarse attention
为了简化attention map的计算,通过下采样将插值到中,粗化注意力矩阵。 - Computation of height-driven attention map
其中,为sigmoid函数,为ReLU,为第个一维卷积层,原文网络中共有3层卷积操作, 用于减少通道数, , 用于生成attention map. - Computation of height-driven attention map
计算attention map时,采用了位置编码
,为通道数,
DeepLab V3+HANet
实现细节
SPNet
Strip Pooling: Rethinking Spatial Pooling for Scene Parsing
空间池化在语义分割任务中发挥着重要的作用,传统的池化层使用的核大小往往是的,本文在此基础上提出了使用或这样的狭长的核进行特征池化的方法,strip pooling,并提出了SPNet,比较了strip pooling与传统池化层的作用。
现有的语义分割方法大多通过叠加局部卷积和池化等操作来实现,但受限于有效感受野的大小,很难学习复杂的场景。目前,提高网络远程依赖关系建模能力的方法有:self-attention机制、non-local模块、空洞卷积、全局/金字塔池化等,但这些通常会消耗大量的存储空间。作者认为方形的核区域会加入不相干区域的特征,不利于网络的学习。
strip pooling的核相比于传统的方形核能够捕获更多的远程特征信息,减少无关信息的干扰。基于strip pooling的Strip Pooling Module (SPM) 首先对水平特征和垂直特征分别进行编码,然后进一步细化。
Structure
- strip pooling
与传统的二维池化不同的是,strip pooling每次会求每行或每列所有元素的均值。得益于strip pooling狭长的特征,更利于学习长距离特征,捕获细节特征 - Strip Pooling Module
通过核大小为和分别得到和后,使用kernel size为3的一维卷积操作结合相邻位置的信息进一步提取特征,随后通过下式融合两个特征图和:
最后通过如下操作得到output: - Mixed Pooling Module
传统的卷积核用于学习近距离特征,strip pooling用于学习远距离特征(上采样时使用双线性插值)
ResNet+MPM
在实现语义分割任务时,以resnet-50为backbone的网络为例,在resnet每一个block中的卷积操作后加入了SPM,并在最后一个stage的基础上使用一层的卷积操作调整通道,之后加入了两层MPM(实现细节如下图),最后添加了一层卷积操作用来得到语义分割图。
Visualize
CPNet
Context Prior for Scene Segmentation
上下文依赖在场景理解中起着非常重要的作用,大多数利用上下文相关性的来改进语义分割的方法,没有考虑到不同类型的上下文相关性,在没有明确区分上下文信息的类内类间情况下,直接将上下文信息进行融合,这将会导致不同上下文关系对分割效果的影响。
本文提出了Context Prior用于建模同类像素点之间的关系,设计了Context Prior Network,并提出了 Affinity Loss 来指导网络对上下文关系和语义分割的学习。
- Affinity Loss
根据已知的标签信息学习上下文先验。为了便于网络的学习,首先根据已知的标签信息构建亲和力图affinity map。
将ground truth下采样为与输入图像得到的的特征图相同大小的,然后使用one-hot编码得到,大小为,为语义类别数,然后将reshape为,亲和力矩阵可以表示为,编码了哪些像素是同一类别,如果原图中第个像素与第个像素同一类别中第行,第列的值为1。
对于先验矩阵中的每一个像素都是一个二分类问题,设预测得到的先验矩阵为:
上式只考虑了孤立像素的情况,本文将类内像素和类间像素视为两个整体来分别对关系进行编码,基于二元交叉熵损失设计了全局项:全局损失:
其中,,,分别表示类内预测值(精度),第行的真实类内率(召回率)和真实类间率(特殊性),完整的亲和力损失定义如下:
其中,、、分别表示亲和力损失、一元损失和全局损失,根据经验设. - Context Prior Layer
对于输入特征通过聚集模块得到,通过学习到先验矩阵,在Affinity Loss的监督下,学习到的可以编码类内关系和类间关系,类内像素可以由得到,类间像素可以由得到,最终,将类内、类间及输入特征concatenate到一起。 - Aggregation Module
上下文先验矩阵需要一些局部空间特征来辅助学习语义类别,该模块设计了一个在空间和深度上都可以分离的卷积操作,fully separable convolution。
空间分离:使用大卷积核是学习更多空间特征的方法之一,但大卷积核的计算成本高,因此使用和来代替卷积。
深度分离:不同的卷积核负责不同的通道