笔记笔记笔记

文章目录

  • 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

cplex收敛间隙 java vcp收敛形态_损失函数

  • SSSR
    在传统语义分割模型的最后额外增加一层上采样模块,最后将输出2倍原图大小的语义分割图
  • SISR
    该模块的目的是根据低分辨率的输入重建高分辨率图像,在inference的时候会将整个模块移除。该模块的encoder部分与SSSR是共享的,decoder部分采用了ESPCN的设计。最后的输出与SSSR的输出尺寸一致。
  • FA
    由于SISR比SSSR包含更完整的结构信息,因此引入特征相似性学习来指导SSSR学习高分辨率表示。语义分割图与超分辨率图之间的相似性计算:seg特征图上每两个像素位置对应的特征向量之间的相似度,以及sr图上对应两像素位置的特征向量之间的相似度的2范式的均值。
    cplex收敛间隙 java vcp收敛形态_相似度_02

Loss Function

损失函数共包含三个部分,cplex收敛间隙 java vcp收敛形态_相似度_03为网络生成的语义分割图的交叉熵损失,cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_04为SISR生成的超分辨率图的mse损失,cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_05为FA模块计算的特征相似性. 由于内存开销较大,fa损失在原图输入的1/8特征图上计算。
cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_06

cplex收敛间隙 java vcp收敛形态_特征向量_07

cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_08

HANet

Cars Can’t Fly up in the Sky: Improving Urban-Scene Segmentation Height-driven Attention Networkst

城市道路场景中不同高度的语义类别具有很大的差异性,经过统计可以发现,汽车、道路、行人等语义类别只有在较低的位置会出现,其余的语义类别的分布情况如下图。

相较于考虑每两个像素之间关系的基于注意力的方法,HANet更加轻量化,与channel-wise attention的方法相比,考虑了更多的信息。

cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_09

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 cplex收敛间隙 java vcp收敛形态_特征向量_10后,将cplex收敛间隙 java vcp收敛形态_特征向量_10在水平方向上复制cplex收敛间隙 java vcp收敛形态_相似度_12份,然后对语义分割主干网络得到的特征图cplex收敛间隙 java vcp收敛形态_相似度_13进行加权。

cplex收敛间隙 java vcp收敛形态_相似度_14

cplex收敛间隙 java vcp收敛形态_特征向量_15

  • Width-wise pooling
    对不同高度位置的数据进行池化(mean/max)
    cplex收敛间隙 java vcp收敛形态_损失函数_16
  • Interpolation for coarse attention
    为了简化attention map的计算,通过下采样将cplex收敛间隙 java vcp收敛形态_损失函数_17插值到cplex收敛间隙 java vcp收敛形态_相似度_18中,粗化注意力矩阵。
  • Computation of height-driven attention map
    cplex收敛间隙 java vcp收敛形态_特征向量_19
    其中,cplex收敛间隙 java vcp收敛形态_损失函数_20为sigmoid函数,cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_21为ReLU,cplex收敛间隙 java vcp收敛形态_相似度_22为第cplex收敛间隙 java vcp收敛形态_特征向量_23个一维卷积层,原文网络中共有3层卷积操作,cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_24 用于减少通道数, cplex收敛间隙 java vcp收敛形态_损失函数_25cplex收敛间隙 java vcp收敛形态_损失函数_26 用于生成attention map. cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_27
  • Computation of height-driven attention map
    计算attention map时,采用了位置编码
    cplex收敛间隙 java vcp收敛形态_相似度_28
    cplex收敛间隙 java vcp收敛形态_特征向量_29cplex收敛间隙 java vcp收敛形态_特征向量_30为通道数,cplex收敛间隙 java vcp收敛形态_特征向量_31
    cplex收敛间隙 java vcp收敛形态_损失函数_32

DeepLab V3+HANet

实现细节

cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_33

cplex收敛间隙 java vcp收敛形态_损失函数_34

SPNet

Strip Pooling: Rethinking Spatial Pooling for Scene Parsing
空间池化在语义分割任务中发挥着重要的作用,传统的池化层使用的核大小往往是cplex收敛间隙 java vcp收敛形态_相似度_35的,本文在此基础上提出了使用cplex收敛间隙 java vcp收敛形态_相似度_36cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_37这样的狭长的核进行特征池化的方法,strip pooling,并提出了SPNet,比较了strip pooling与传统池化层的作用。
现有的语义分割方法大多通过叠加局部卷积和池化等操作来实现,但受限于有效感受野的大小,很难学习复杂的场景。目前,提高网络远程依赖关系建模能力的方法有:self-attention机制、non-local模块、空洞卷积、全局/金字塔池化等,但这些通常会消耗大量的存储空间。作者认为方形的核区域会加入不相干区域的特征,不利于网络的学习。
strip pooling的核相比于传统的方形核能够捕获更多的远程特征信息,减少无关信息的干扰。基于strip pooling的Strip Pooling Module (SPM) 首先对水平特征和垂直特征分别进行编码,然后进一步细化。

Structure

  • strip pooling
    与传统的二维池化不同的是,strip pooling每次会求每行或每列所有元素的均值。得益于strip pooling狭长的特征,更利于学习长距离特征,捕获细节特征
    cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_38
  • Strip Pooling Module
    通过核大小为cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_39cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_40分别得到cplex收敛间隙 java vcp收敛形态_损失函数_41cplex收敛间隙 java vcp收敛形态_损失函数_42后,使用kernel size为3的一维卷积操作结合相邻位置的信息进一步提取特征,随后通过下式融合两个特征图cplex收敛间隙 java vcp收敛形态_损失函数_43cplex收敛间隙 java vcp收敛形态_相似度_44
    cplex收敛间隙 java vcp收敛形态_损失函数_45
    最后通过如下操作得到output:
    cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_46
  • Mixed Pooling Module
    传统的卷积核用于学习近距离特征,strip pooling用于学习远距离特征(上采样时使用双线性插值)

ResNet+MPM

在实现语义分割任务时,以resnet-50为backbone的网络为例,在resnet每一个block中的cplex收敛间隙 java vcp收敛形态_特征向量_47卷积操作后加入了SPM,并在最后一个stage的基础上使用一层cplex收敛间隙 java vcp收敛形态_相似度_48的卷积操作调整通道,之后加入了两层MPM(实现细节如下图),最后添加了一层卷积操作用来得到语义分割图。

cplex收敛间隙 java vcp收敛形态_损失函数_49

Visualize

cplex收敛间隙 java vcp收敛形态_损失函数_50

CPNet

Context Prior for Scene Segmentation

上下文依赖在场景理解中起着非常重要的作用,大多数利用上下文相关性的来改进语义分割的方法,没有考虑到不同类型的上下文相关性,在没有明确区分上下文信息的类内类间情况下,直接将上下文信息进行融合,这将会导致不同上下文关系对分割效果的影响。

本文提出了Context Prior用于建模同类像素点之间的关系,设计了Context Prior Network,并提出了 Affinity Loss 来指导网络对上下文关系和语义分割的学习。

cplex收敛间隙 java vcp收敛形态_相似度_51

  • Affinity Loss
    根据已知的标签信息学习上下文先验。为了便于网络的学习,首先根据已知的标签信息构建亲和力图affinity map。
    将ground truthcplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_52下采样为与输入图像cplex收敛间隙 java vcp收敛形态_损失函数_53得到的cplex收敛间隙 java vcp收敛形态_特征向量_54的特征图cplex收敛间隙 java vcp收敛形态_相似度_55相同大小的cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_56,然后使用one-hot编码cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_56得到cplex收敛间隙 java vcp收敛形态_特征向量_58,大小为cplex收敛间隙 java vcp收敛形态_特征向量_59cplex收敛间隙 java vcp收敛形态_特征向量_60为语义类别数,然后将cplex收敛间隙 java vcp收敛形态_特征向量_58reshape为cplex收敛间隙 java vcp收敛形态_特征向量_62,亲和力矩阵可以表示为cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_63cplex收敛间隙 java vcp收敛形态_损失函数_64编码了哪些像素是同一类别,如果原图中第cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_65个像素与第cplex收敛间隙 java vcp收敛形态_损失函数_66个像素同一类别cplex收敛间隙 java vcp收敛形态_损失函数_64中第cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_65行,第cplex收敛间隙 java vcp收敛形态_损失函数_66列的值为1。
    对于先验矩阵中的每一个像素都是一个二分类问题,设预测得到的先验矩阵为cplex收敛间隙 java vcp收敛形态_特征向量_70
    cplex收敛间隙 java vcp收敛形态_相似度_71
    上式只考虑了孤立像素的情况,本文将类内像素和类间像素视为两个整体来分别对关系进行编码,基于二元交叉熵损失设计了全局项:全局损失:
    cplex收敛间隙 java vcp收敛形态_相似度_72
    其中,cplex收敛间隙 java vcp收敛形态_特征向量_73,cplex收敛间隙 java vcp收敛形态_损失函数_74,cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_75分别表示类内预测值(精度),第cplex收敛间隙 java vcp收敛形态_损失函数_66行的真实类内率(召回率)和真实类间率(特殊性),完整的亲和力损失定义如下:
    cplex收敛间隙 java vcp收敛形态_损失函数_77
    其中,cplex收敛间隙 java vcp收敛形态_相似度_78cplex收敛间隙 java vcp收敛形态_损失函数_79cplex收敛间隙 java vcp收敛形态_特征向量_80分别表示亲和力损失、一元损失和全局损失,根据经验设cplex收敛间隙 java vcp收敛形态_特征向量_81.
  • Context Prior Layer
    对于输入特征cplex收敛间隙 java vcp收敛形态_相似度_55通过聚集模块得到cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_83cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_83通过cplex收敛间隙 java vcp收敛形态_cplex收敛间隙 java_85学习到先验矩阵cplex收敛间隙 java vcp收敛形态_特征向量_70,在Affinity Loss的监督下,学习到的cplex收敛间隙 java vcp收敛形态_特征向量_70可以编码类内关系和类间关系,类内像素可以由cplex收敛间隙 java vcp收敛形态_损失函数_88得到,类间像素可以由cplex收敛间隙 java vcp收敛形态_损失函数_89得到,最终,将类内、类间及输入特征concatenate到一起。
  • Aggregation Module
    上下文先验矩阵需要一些局部空间特征来辅助学习语义类别,该模块设计了一个在空间和深度上都可以分离的卷积操作,fully separable convolution。
    空间分离:使用大卷积核是学习更多空间特征的方法之一,但大卷积核的计算成本高,因此使用cplex收敛间隙 java vcp收敛形态_相似度_90cplex收敛间隙 java vcp收敛形态_特征向量_91来代替cplex收敛间隙 java vcp收敛形态_相似度_92卷积。
    深度分离:不同的卷积核负责不同的通道