交互补充与验证的语义分割*
2023-08-17成京海
成京海
(昆明理工大学,云南 昆明 650031)
0 引言
语义分割旨在为每个像素分配语义类别,是计算机视觉领域最基本但最具挑战性的任务之一。它在许多最近的工作中得到了广泛和积极的研究,对于各种实际应用领域也至关重要,如自动驾驶[1]、遥感图像[2]、医学图像分析[3]等;同时也可作为其他计算机视觉方向的辅助手段,如图像融合[4]、行人重识别[5]等。自全卷积网络(Fully Convolutional Network,FCN)[6]提出以来的很长时间,主流语义分割框架均是在此基础上进行改动的。由于具有固定的卷积核结构,FCN 局限于仅提供像素邻域信息的局部感受野。可是对于语义分割、目标检测等视觉理解任务而言,上下文信息至关重要。
许多工作被引入以解决FCN 的上述问题。例如Chen 等人[7]提出的基于多尺度扩张卷积的Atrous 空间金字塔池化模块(Atrous Spatial Pyramid Pooling,ASPP)。然而基于扩张卷积的方法[7-8]依然局限于收集像素周围的信息,且由于固定的扩张卷积率,模型无法自适应地捕获各像素所需的上下文信息。为此,一些将感受野扩展至整个图像的方法被提出。PSANet[9]由网络自身预测出的权重图来为特征图的每个位置聚集上下文信息。Non-Local 网络[10]则使用自注意力机制,在特征图上的所有像素间建立联系。当然,这种全连接的注意力机制无疑是很耗费计算量的,其复杂度高达O(n2),因此许多机制被提出以弥补Non-Local 网络的不足,如CCNet[11]、Axial-Deeplab[12]和Efficient 注意力[13]等。此外,Transformer 机制也借助这股注意力的热潮被引进了计算机视觉领域,如SETR[14]和Swin-Transformer[15]。
可以发现,上述方法均倾向于通过损失促使网络自发地捕获实现语义分割所需的辨别性特征,如图1(a)所示。当评价一个人时,其自身特质与对他人的影响是两个重要因素,这种情况可以类比到对每个像素进行分类的语义分割。基于该想法,本文提出交互补充与验证的语义分割。如图1(b)所示,与前文所述方法不同,辨别性特征被分为像素自身信息和像素间关联信息,并使用两个支路网络——信息支路和关系支路,分别专注于两种信息的提取。为了使信息支路更关注于像素自身信息,使用全连接层作为分割头,使得模型在为各像素分类时,不受其他像素信息的干扰;为了更好地捕获像素间的关联信息,注意力机制被引入以便为关系支路提供全局感受野,且使用基于多尺度扩张卷积的卷积分割头,使得像素在进行分类时能综合考虑其与其他像素的关联。
图1 语义分割的不同框架
图2 网络整体架构
为了促进像素自身信息与像素间关联信息的融合,本文提出了交互补充模块与交互验证模块。交互补充模块分为前特征更新、解码器和后特征更新三个部分。前特征更新指特征输入解码器前的更新,在这个阶段特征图尺寸较小,包含更多的语义级特征。因此,该阶段会更倾向于对像素关联信息的处理;对应地,后特征更新则是特征经过解码后的更新。由于恢复到了原图大小,特征更多体现了图像级的属性。借此可以对像素自身信息进行充分的改进。
为了实现双支路结果验证,需要在两支路间找到可以相互借鉴的信息作为桥梁。参考小样本语义分割方法,通过使用类似掩模平均池化的方法对数据集中的每个类提取类向量。用类向量作为中间手段,使得两个支路不仅能依靠自身特征进行语义分割,更可借用对方的信息来验证自身的预测结果。
为了使每个类的特征更为集中,在传统交叉熵的基础上,本文提出了对比交叉熵。具体的细节将在2.5节展示。
综上,本文贡献包括3 点:
(1)本文明确地将辨别性特征分为像素自身信息和像素间关联信息,且对应使用全连接分割头和卷积分割头,给模型提供更明确的特征提取方向。
(2)本文使用类向量作为两个支路连接的桥梁,不仅促进了特征的更新,也为彼此的分类结果提供了额外的验证手段。
(3)本文方法与许多其他的方法是正交的。在保留原方法特性的基础上,添加本文模块,使网络性能获得提升。
1 相关工作
1.1 语义分割
得益于深度神经网络的进步,语义分割在近几年获得了长足的发展。FCN[6]是基于深度学习的语义分割网络的先驱,虽然其预测略显粗糙,但几种基于条件随机场(Conditional Random Fields,CRF)和马尔可夫随机场(Markov Random Fields,MRF)[7,16]的方法被引入来帮助优化预测过程。跳跃连接[17]等方法的引入缓解了编码-解码结构[18]中瓶颈特征分辨率过低的问题,为特征尽可能保留了浅层的空间、细节等信息。扩张卷积、金字塔池化[19-20]等模块又为网络提供了更大的感受野,并由此引入了各种基于注意力的方法。
除对网络细节架构的讨论外,基于神经架构搜索的方法[21-22]讨论了网络整体架构的合理优化。在此基础上,Li 等人[23]提出了动态路由的语义分割,使得网络可以根据输入数据的不同而自适应选择想要的网络架构。此外,各种基于持续学习[24]、小样本学习[25]和主动学习[26]的方法也大幅丰富了语义分割网络的多样性。
1.2 注意力
由于卷积操作的局部限制性,提高感受野成为提升深度网络性能的一大手段。最初的探索体现在基于扩张卷积的各种方法上,通过固定的多尺度卷积核设置获得更大范围的感受野。随后,由特征自身预测全局权重的PSANet[9]、SENet[27]等方法被提出。结合二者的方法,DANet[28]在空间和通道两种角度预测权重。进一步地,自注意力机制[29]被引入计算机视觉领域。为了降低自注意力模块的运算消耗,研究者们用各种方法竭力压缩运算下限。比较常见的手法是拆分运算过程,通过二次乃至多次的注意力用更小的代价尝试达到同样的效果。例如,均将注意力分为横向与纵向的Axial-Deeplab[12]和CCNet[11]。Huang 等人[30]通过特征的重排列,使得两次累加的局部注意力便达到了全局注意力的性能。此外,Shen 等人[13]通过交换矩阵的相乘顺序,Li 等人[31]通过Softmax 操作与泰勒展开公式的共通点,甚至将自注意力机制的运算复杂度降到了线性阶O(n)。本文根据不同阶段的特点与需求,选择了不同的注意力方式来帮助特征的自我增强以及双支路的特征交互。
1.3 特征融合
由于不同任务的不同要求,特征融合具有许多不同的方式。为了使深层特征能够保留图像的浅层属性,跳跃连接[17]被引入以将浅层特征与深层特征相融合;为了使网络能综合考虑多个尺度的特征,金字塔池化等模块[19-20]被引入以融合来自多个感受野的特征;在多源任务乃至域泛化任务里[32-33],网络需要融合多个模型的预测;在多模态任务[34]中,不同模态的信息需要相互补充;在多曝光图像融合任务[35]中,需要融合来源于多个曝光度的图像信息以重建出最好的图像。
除不同的需求外,特征融合也有着不同的形式。最简单的特征融合形式是拼接和相加。逐渐地,人们发现这些简单的操作不再能满足模型的需求,因此基于注意力的融合方法便被提出[36-37]。由于注意力模块的多样性,注意力融合的方法也多种多样。为了促进两个支路的交互,融合的思想体现在了本文的方方面面。
2 方 法
在本节中,将详细介绍用于语义分割的交互补充与验证网络。
2.1 网络结构
两支路特征将与平均类向量矩阵Vave(以下简称平均类向量)共同输入交互补充模块,促进彼此的自更新与融合,以获得包含更准确信息的双支路特征与(Hout×Wout×Cout)。类向量会随着训练的深入而迭代更新。
在每一轮训练之后,类向量需要被更新。将训练图像输入信息网络后,保留最终特征和对应的信息支路预测PF。将标签图像进行One-Hot 编码,得到Nclasses个对应于各类的掩模Mk(k∈[0,Nclasses)),Nclasses指数据集中预定义的类数。在PF上,选取最终预测值大于阈值t的点形成掩模,与每个类的掩模Mk相乘,得到优化后的各类掩模。其中,阈值t的初始值为0.6,每轮训练增长0.1,直到最大值0.9。使用该掩模在特征上选取各类对应的特征点,经过求平均或求中值操作便得到了最终的类向量。本阶段生成的类向量将用于下一阶段的训练。在网络训练开始,没有可用的类向量时,网络中涉及类向量的部分会被跳过。第k类类向量的获取公式如下:
式中:AVE(·)为取张量中非零向量的均值函数;MID(·)为取张量中非零向量的中值函数,其中用以衡量大小的是向量的L1 范数;°代表张量对应位置相乘。将各类的类向量拼接起来,就能获得形式为Nclasses×Cout的类向量矩阵Vave和Vmid。
2.2 交互补充模块
在前更新模块中,由于关系支路更加强调像素间的相互关系,因此使用自注意力模块为XR赋予全局的感受野。为了利用XI的像素自身信息为XR进行补充,使用卷积层为XI的每个位置预测权重,将权重作用于XI后添加到XR。使得XR能基于更精准的各像素信息,获得更全面的像素间关联信息。前更新模块过程如下所示:
式中:SelfAtt(·) 为使用的注意力模块,在这里指Non-local 模块;Conv(·)为卷积层,具体设置如图3所示。
图3 交互补充模块
为了将图像、特征和标签一一对应,特征应被解码为原图大小。常用的解码器是类似于U-Net 中由网络浅层富含细节信息的特征引导的逐级反卷积解码器。考虑到基于全连接分割头的信息支路自身已包含丰富的像素细节信息,同时也为了促进两个支路的交互融合,本文使用两个支路的特征为彼此做引导。解码器结构如图4 所示。将XI和输入对应的解码器,获得标签图像大小的特征图XDI和XDR。扩大后的特征图将包含与输入图像类似的空间关系,且像素点、特征点和预测值能形成更好的对应关系,不仅便于类向量的提取,也有利于特征的更新及融合。
图4 双支路相互引导的解码器
在有明确的标签引导以及深度网络众多卷积层的转换之后,模型性能依然受到限制。其中可能的一个原因是网络依然无法满足特征变换的要求。为此,本文为特征提供一条转换的捷径。将前文提取的类向量以自适应的权重加到原特征,使得特征有额外的方法能将其自身转变为“正确答案”。这可以看作特征层面上跨训练阶段的残差连接。由于关系支路更注重像素间的联系,并不适用于这种捷径,因此该方法仅被应用于信息支路。将信息支路特征经过卷积层与Tanh层后,以该权重聚集平均类向量的信息,得到信息支路特征相较于“正确答案”所缺失的部分。将这些待更新的信息添加到原特征,可以使得信息支路的信息更加完整。之所以选用平均类向量,是因为相较于中位类向量而言,它更能体现一个类普遍的属性,也更有利于信息特征对自身的补充。
在交互补充模块的最后,经过自更新后的信息支路特征会再一次对关系支路进行补充。扩大的分辨率会导致更大的计算消耗,所幸由于特征图与原图的一一对应关系,模型在融合过程中可以以每个特征点为基本单元,这导致了其相对较小的计算量。关系支路特征与信息支路类向量的共鸣度越高,则能越大限度地接收信息支路的特征。因此,通过卷积将关系支路特征映射到类向量空间后,用该特征与每个类的类向量做余弦相似度度量,得到Hout×Wout×Nclasses的权重矩阵。在Nclasses维度取最大值,最终可以得到Hout×Wout的权重图。用该权重图筛选信息支路特征后,与关系支路特征拼接,经过1×1 的卷积降维可以得到关系支路最终的特征。两个支路的特征也以类向量为基准,完成了最后的特征融合。出于与上文同样的考虑,这里依旧选择使用平均类向量。
2.3 交互验证模块
交互验证模块构造上较为简单,仅由卷积分割头与全连接分割头构成。图5 展示了交互验证模块的结构。交互验证模块的核心是类向量可以作为“正确答案”被两支路借鉴。在交互补充模块中,类向量被以自适应的权重聚集后加到信息特征,从而为其提供特征转换的捷径。语义分割的预测也是一种权重,在形式上二者均是Hout×Wout×Nclasses的张量。基于此想法,本文提出了交互验证模块。以PF为例,将其作为权重聚集类向量,可以得到新的特征。将该重组特征输入到对应的分割头则能得到新的预测。这样,PF不仅能通过自身的交叉熵损失进行更新,还能通过重组特征的新交叉熵损失进行优化,起到“验证答案”的效果。
图5 交互验证模块
由于共有两个支路的预测,与类向量组合后,可以获得两个新的特征与预测。本文使用中位类向量作为验证依据,具体的验证过程如下:
式中:ΦC和ΦF分别为卷积分割头和全连接分割头;ΦCF和ΦFF则为重组特征的全连接分割头和ΦF共享权重。在所有预测中,以PC为主。此外,在网络训练初期,没有对应的类向量时,交互验证模块仅保留对双支路自身的交叉熵损失,而不考虑重组特征带来的影响。
2.4 训练过程
本文将训练过程分为5 个阶段。在具体的训练过程中,为了确保类向量的有效性,模型需要固定交互验证模块中的全连接分割头。而为了能迭代地更新类向量,又需要在适当的时候将该全连接分割头也进行优化。因此,每阶段的训练被分为两部分。在第一部分中,找回交互验证模块中全连接分割头的梯度,训练整个模型,并用现有模型来计算信息支路的平均类向量与中位类向量。然后在第二部分中,固定全连接分割头参数,并以新的类向量来训练模型。
在第一阶段时,由于没有可用的类向量,无法进行预测的验证,因此第一阶段损失为:
式中:Lc_pre和Lf_pre分别为两个前预测的损失;Lc和Lf为两个主预测的损失;α为衡量卷积预测与全连接预测间的权重超参数,在实验中设置为0.7。经过第一阶段的训练并获得可用的类向量后,网络的损失变为:
式中:Lcf和Lff为两个重组预测的损失;β为衡量自身损失与验证损失间的权重超参数,实验中将其设置为0.3。
2.5 对比交叉熵损失
在传统的交叉熵损失中,由于标签是one-hot 形式的,经过计算后损失仅剩余1 个标签非零项。从实际意义上分析,其起到的作用是使得特征输入分割头后,标签值对应类的预测值更向1靠拢。在对比损失中,远离错误类与接近正确类同样重要。为此,除让预测值在标签类上向1 靠拢外,令其在非标签类上向0 优化亦能起到引导作用。除可见优点外,由于交互验证模块的存在以及信息支路关注自身信息的需求,这种新的功能对于本文网络会显得更为有效。为此,本文提出了对比交叉熵(Contrasted Cross-Entropy,CCE)损失:
式中:y为标签值;p为预测值。当某点标签值为1 时,它与传统交叉熵并无区别。而当标签值为0 时,有:
可以发现,该损失会将预测值p向0 拉近,从而使得该特征点向真实类靠近且远离错误类。式(10)和式(11)中,a是衡量两者间权重的超参数。随着a值的增大,网络会更向传统交叉熵靠拢。对比交叉熵损失能促使网络更快地优化,且在部分任务中会产生更好的性能。
3 实 验
本文在Cityscapes 数据集[38]和Dark-Zurich 数据集[39]上做了大量实验,证明了本文提出的各模块及方法的有效性。在后续章节中,3.1 节介绍了使用的数据集以及实验的实现细节;3.2 节使用消融实验验证了各模块的作用;3.3 节将对比交叉熵损失与传统交叉熵损失做了对比;3.4 节以具体实验结果为例,分析网络中各分割头及各预测的合理性和有效性;3.5节展示了本文方法与不同网络相结合获得的各类实验结果。
3.1 数据集与实现细节
3.1.1 数据集
Cityscapes 是为场景解析而构建的数据集,包含5 000 张精细标注的图像以及20 000 张粗略标注的图像。所有图像均是2 048×1 024 的街道场景图像。本文方法仅使用精细标注的5 000 张图像,共包含19 个类,且训练、验证和测试数据集分别包含2 975 张、500 张和1 525 张图像。
Dark-Zurich 数据集包含在苏黎世拍摄的12 170张白天图像以及8 682 张夜晚图像,其中白天图像有对应的标签,所有图像均有对应的红外热图像。此外,还包括测试数据集的白天与夜晚各32 张图像。实验中仅用到白天图像及标签,数据集共包含13 个类。
3.1.2 实现细节
本文方法均使用Pytorch 实现。依据前人的工作[40-41],训练中使用poly 策略调整学习率,其中power 被设置为0.9。初始学习率设置为0.01,动量及权重衰减系数分别设置为0.9 与0.000 1。由于内存限制,各实验中将批大小设置为1,对应地将批归一化层转换为组归一化层及实例归一化层。由于需要将图像点、特征点和标签点完全对应,测试图像的大小被调整到与训练图像相同。除特殊说明外,信息支路编码器均使用Deeplabv3 网络。
表1 显示了在Cityscapes 数据集上各批大小值及各测试图像输入大小时Deeplabv3 网络的性能变化。输出步幅设置为16,总训练轮数为25 万轮。对于Cityscapes 数据集,在训练图像上随机裁减512×1 024的图像作为网络输入,对于Dark-Zurich 数据集,该大小被设置为640×960。实验中对比交叉熵损失超参数a被设置为1。
表1 各实验条件下Deeplabv3 网络的性能
3.2 消融实验
在Dark-Zurich 数据集上以VGG 网络为两支路主干对本文方法各模块做了消融实验,实验结果如表2 所示。在表2 中,Mut_Comp 为交互补充模块,Mut_Val 为交互验证模块,数据单位为%。以MIoU为例,朴素的VGG 网络性能为56.87%,而将其中的交叉熵损失换为本文提出的对比交叉熵后,性能提升了0.98%。在VGG 的基础上,使用Mut_Comp 对特征进行融合及更新后,性能提升到了59.44%。而引入Mut_Val 对结果的额外验证手段后,又将性能提升至61.43%。最后,加入对比交叉熵损失使得最终性能达到了62.18%,相较于朴素的VGG 网络而言性能提升了5.31%,足以证明本文方法各模块的有效性。
表2 本文方法中不同模块对性能的影响/%
3.3 损失对比
本节将对比交叉熵损失和传统交叉熵损失进行对比。基于VGG 网络在Dark-Zurich 上的实验结果,来察看两个损失的区别,各阶段实验性能如图6(a)所示。相对于传统交叉熵而言,对比交叉熵在各阶段均获得了更高的性能,而在最后也使性能获得了接近1%的提升。在Cityscapes 数据集与Deeplabv3 网络上,本文也做了同样的实验,实验结果如图6(b)所示。虽然在训练后性能提升的效果不明显,但在训练各阶段对比交叉熵仍能比传统交叉熵更快地收敛。
图6 CCE 损失与CE 损失性能的对比
3.4 预测对比
本文以Cityscapes 数据集和Deeplabv3 网络为例,展示了网络中各预测的性能对比。具体结果如表3 所示。观察数据可以发现,由于Lc_pre与Lf_pre,使得前分割头能够更早地优化。而训练后期,由于本文模块的促进,使得在Deeplabv3 的基础上有了一定的提升。至于后面的分割头,由于有着更好的特征提取、交互、融合方法,以及额外的验证手段,使得性能有明显的改进。其中PF更是大幅超越,性能与PC无太大区别。至于重组后的特征得到的预测PCF和PFF,基本上与PC和PF一致,这也证明了以网络预测为权重聚集类向量继而重组特征的合理性和有效性。
表3 网络中各预测的性能对比
3.5 实验结果
3.5.1 Cityscapes 实验结果
在Cityscapes 数据集上,将本文方法与不同的先前工作结合,通过实验证明了本文方法的有效性。其中,若前作网络包含全局注意力模块,则去除本文网络中的自注意力模块。表4 展示了具体的实验结果。由表中可以发现,本文方法结合不同网络后均能在原网络的基础上有一定的性能提升。其中在DANet 和CCNet 的实验中,虽然去除了网络中的自注意力模块,但性能依然分别提高了1.14%和1.33%。
表4 Cityscapes 数据集上的性能对比
3.5.2 Dark-Zurich 实验结果
在Dark-Zurich 数据集上,将本文方法与之前的网络结合,进行实验以验证本文方法的有效性。相关设置同3.5.1 节,具体的实验结果如表5 所示。观察结果发现,在Dark-Zurich 数据集上,将本文方法添加到各网络上,依然能提升网络预测的各项性能。
表5 在Dark-Zurich 数据集上的性能对比/%
4 结语
在本文中,结合全连接分割头与卷积分割头,从像素自身信息与像素间信息两个角度分析了语义分割过程,并使用类向量为桥梁,促进了两支路特征的更新和交互。此外,还在此基础上创新性地提出了交互验证模块,为网络的预测提供了新的有效约束。通过各类实验验证了方法的有效性。
尽管如此,方法的缺点也是不可忽视的。其一,由于需要将图像、特征和标签一一对应,不得不在恢复成原图大小后的特征上进行操作,这导致了大量的内存消耗。其二,由于类向量的存在,导致使用的数据集中预定义的类数不能太多,否则不仅导致计算量的增加,更可能因为取不到有效的类向量而运行出错。在未来的工作中,会着力解决上述问题。