摘要:基于卷积神经网络(CNN)的分段平面三维重建已然成为室内场景建模研究的焦点之一。针对室内场景中,平面和非平面元素常常交织在一起,导致网络提取的平面特征中掺杂了非平面信息,从而影响了最终分割的精度;且室内场景中的平面存在尺度差异巨大的情况,带来了明显的类别不平衡,小尺度平面实例往往会失真的问题。
提出了一种自增强注意力的多尺度特征融合三维分段平面重建网络,该网络能够自动学习场景中的平面特征,并有效地将不同尺度的特征信息融合,从而提升了平面实例分割的精度。同时,通过为平面实例中的每个像素分配不同的权重,特别是增加了对小尺度平面边缘像素的权重值,进一步增强了小尺度平面分割对象的通道表达。
最终,采用平衡交叉熵损失和骰子损失构建了一种新的损失函数来训练模型,进一步提升了平面分割的精度。实验证明,该算法在平面召回率和分割准确度方面均取得了显著地提升,能够产生更为准确的室内三维分段平面重建型。
引言
人类视觉在理解场景结构方面具有极强的感知能力。如观察一个典型的室内场景,可马上分辨出房间的天花板、地板、墙面等主要的平面,也可以准确识别桌面的水平表面等。因此,基于图像对室内场景平面信息的理解进而实现场景三维重建具有很好地研究价值。
随着深度神经网络的兴起,分段平面重建方法已经能够从单幅图像中检测平面实例并可估计其平面参数。但室内场景包含很多纹理相似的区域,且不同物体会出现尺度相差过大的问题,如家具的表面和大面积的墙面。这都成为精确重建的巨大挑战。针对这些困难,PlaneNet[1]通过端到端的深度神经网络学习,从单张图片中推断出平面参数和对应的平面分割掩膜,以此对场景进行三维重建。PlaneRecover[2]通过联合细化每个平面的分割掩码,在训练期间产生一个新的损失,并强制与该损失相似的视图保持一致以优化平面分割掩码。
InvPT[3]通过一个高效的UP-Transformer块,以逐渐增加的分辨率学习多任务特征交互,其还结合了有效的自注意力消息传递和多尺度特征聚合,以产生高分辨率的特定于任务的预测。这些方法已能重建大部分的平面区域,但仍存在类不平衡问题。
在实际情况中,场景中的小平面区域是很常见的,当出现严重类不平衡问题时,往往会导致小平面被归类到其他大平面或背景信息中去。文献[1,3]采用多尺度融合来解决这个问题,但网络的特征映射在语义层面的差异较大,平面区域局部细节的丢失不可避免,在下采样的过程中会出现语义信息的丢失,在上采样时又会出现平面边界等位置信息的缺失。
为了解决上述问题,本文提出了一种基于自注意力增强(self-attention augment,SAA)的多尺度特征融合三维分段平面重建网络。该网络针对上采样过程中出现的平面边界位置信息丢失、低层特征缺乏语义信息,以致特征中包含了大量无用的背景信息,进而影响分割精度的问题,引入一种新的自注意力模块来融合高层特征与低层特征,通过将语义信息与全局上下文信息进行互补,从而提高平面分割的精度。同时,为了解决室内场景部分平面尺度相差过大的问题,提出了一种新的损失函数以实现准确、可靠、稳定的分段平面重建工作。
本文的主要贡献有:
1) 提出了一种端到端的分段平面重建算法,通过一种新的自增强注意力模块,将语义信息和上下文信息相结合来获得室内场景信息,将不同尺度的特征融合以获得更为精确的平面重建;
2) 针对室内场景尺度相差过大的情况提出了一种新的损失函数,该损失函数通过将平衡交叉熵损失和骰子损失结合以此来提高平面分割的准确性以及算法的稳定性。
相关工作
1.1 分段平面重建
PlaneNet[1]是第一个用于从单个RGB图像分段平面重建的多任务深度神经网络。该算法由平面参数估计、平面分割和非平面深度预测3个分支组成。PlaneRecover[2]引入了一种平面结构引导损失函数,不再关注平面区域的真实掩膜,而是通过监督预测平面区域和参数,重新获得的深度来共同训练平面分割和平面参数估计。InvPT[3]提出了一种端到端倒金字塔多任务Transformer,在统一的框架中执行空间位置和多个任务的同时建模。PlaneAE[4]首先利用语义分割算法区分平面和非平面区域,然后利用关联嵌入向量将平面像素聚类成分段平面实例,该方法进一步提高了平面分割精度。
PlaneRCNN[5]在Mask RCNN[6]的基础上提出了一种更高效的平面分割分支,并引入了一种翘曲损失函数联合细化进行分割。QIAN和FUARUKAWA[7]提出了一个后处理细化网络(Interplane),通过加强平面间的联系来优化现有分段平面重建方法中的平面参数估计和分割掩膜方法。XI和CHEN[8]引入了多视图正则化方法来加强不同视图中平面特征嵌入的一致性。
PlaneSegNet[9]提出了一种平面快速单阶段实例分割的方法,提高了预测掩膜的分辨率。PlaneTR[10]联合上下文信息和几何结构可以从单幅图像中同时检测和重建平面。ZHANG等[11]使用基于平面参数的弱监督的二维分割进行布局估计。LIU等[12]则使用多个相机输入视图进行三维平面重建。江瑞祥等[13]提出了一种条状注意力机制,并与多尺度聚焦模块进行结合,将其加入空洞空间金字塔模块中使得网络能够根据上下文信息自适应调整有效感受野的大小,以此获得多尺度信息,提高网络对于城市场景中的条状平面的聚焦能力。
PlaneRecNet[14]使用了跨任务一致性多任务学习的方法,使平面分割信息能指导深度估计,并在损失函数中加入几何约束,共同提高二者的精度。上述方法均使用了多分支网络对平面区域进行分割,但忽视了场景在同一尺度下,由于过大的平面差异所带来的类不平衡现象。这种现象往往导致场景中的较小平面被归类到背景信息中,影响最后重建的精度。
1.2 注意力机制
计算机视觉的很多任务均引入了注意力机制并取得了较好的成果。注意力的主要目的是模仿人类视觉认知系统,关注输入图像中的基本特征[15]。常用的注意力机制有通道注意力[16⇓-18]、空间注意力机制[19-20]、混合注意力机制[21-22]和自注意力机制[23-24]等。在深度神经网络中,不同特征图中的不同通道通常代表不同的对象,通道注意力自适应地校准每个通道的权重,从而对不同的对象进行选择。
文献[18]首先提出了通道注意力的概念;文献[14]则使用通道注意力感知平面实例,利用平面优先注意模块来指导深度估计。本文构造了通道间的自注意力机制,对语义依赖进行了建模,提高语义分割的精度。同时利用自注意力机制编码所有输入信息之间的关系,使输入序列可以彼此交互并聚合注意力分数,从而获得不同输入的相似性。
算法
2.1 算法概述及网络结构
本文算法的目标是从单幅RGB的输入图像中获得室内场景的分割图、平面参数和深度图。为有效提取任务所需特征,本文提出了一种多尺度特征融合算法,具体流程如图1所示。
图1左侧部分为编码器,中间部分为解码器,右侧为输出重建图。假设输入的RGB图像大小为3×256×256,第一层编码器使用了64个卷积核,卷积大小为3×3,步长为1,填充为1,使用ReLU激活函数引入非线性变换。依次经过4个编码层(E1~E4)得到最终的特征图,每一层的特征图尺寸如图1所示。
编码获得的特征图使用全局平均池化,提取低尺度的全局上下文信息和高尺度的语义信息,然后将全局信息压缩成了一个编码了语义信息的注意力向量,将其进行一次自适应池化后与高尺度的语义信息进行融合。中间部分经过4次融合得到解码层(D1~D4)尺寸。为了减少算法的复杂度,卷积操作只使用了1×1的卷积。
本文使用了ResNet-101网络进行特征提取,其可很好地获取局部特征(如平面边缘)和全局特征(如室内墙面或物体的颜色、纹理和特征等),并输出较高分辨率的特征图。
图1 算法流程
2.2 自注意力增强模块
解码器一般是通过上采样来恢复位置信息的。然而上采样会导致边缘模糊以及位置信息的丢失,同时也会让部分较小平面被误分类到其他平面中。为了解决上述问题,目前常用的方法是采用跳跃连接的方式将底层特征和高层特征连接起来,这样有助于补充位置信息以及更好地划分边界。
然而由于低层特征缺乏语义信息,包含了大量无用的背景信息,这些会干扰目标对象的分割,影响平面与非平面的区分。针对该问题,本文提出了一种新的自注意力增强模块,其架构如图2所示。
图2 自增强注意力模块
本文的自增强注意力模块先采用小尺寸的3×3的卷积核和2×2的最大池化操作获得低尺度特征,再使用较大的5×5的卷积核和2×2的最大池化获得高尺度特征,将得到的高、低尺度的特征分别转化为注意力向量后进行融合,并通过多次的线性映射来生成上下文向量。将获取高层特征映射中的语义信息和低层特征映射中的全局上下文信息对平面与非平面区域的语义关系进行建模,以增强目标通道的表示。
其中高层特征映射包含了丰富的语义信息,可以帮助低层特征映射选择重要的位置信息;同时,低层特征映射的全局上下文信息又可以对不同通道之间的语义相关信息进行编码,以此过滤干扰信息。通过利用上述信息,自增强注意力模块可以强调目标区域、增强特征表示、更好地对边缘进行分割。
本文使用全局平均池化来提取全局上下文信息和语义信息,并将全局信息压缩成了一个编码了不同区域之间语义关系的注意力向量,即
其中,x,y分别为高层和低层的特征映射;A为注意力向量;g(·)为全局平均池化操作;δ1为ReLU激活函数;δ2为Softmax激活函数;bα,bβ,bγ为偏置。
通过这种方法使得该模块可以强化关键特征表示并过滤背景信息,之后将高尺度和低向量进行卷积后相加,进一步获取语义相关信息。采用Softmax函数作为激活函数对注意力向量进行归一化,之后将底层特征映射与注意力向量相乘,生成注意力特征映射。
在得到融合的注意力特征映射后,将该特征映射经过一次1×1卷积、归一化和插值操作,改变特征映射的维度,将注意力特征映射的通道数降至与高尺度特征F2的通道数相同,最后再进行一次归一化得到F1。此时的F2包含了丰富的语义信息,F1包含了丰富的场景细节信息,通过自注意力将两者融合。
对于F2,先使用一个1×1卷积进行线性映射,再使用2个线性映射函数Wq和Wk来减少F2的维度,以获得特征映射,即
对于F1,使用一个1×1卷积单元Wv来减少通道维度,将其减至与F2相同。然后在通道维度上使用一个Softmax函数并选择第2个通道作为特征映射。之后计算K和F1的哈达玛积,给每个像素分配不同的权重,增加边缘像素的权重值。随后使用自适应池化操作减少特征的位移并对其中心进行裁剪,最后得到特征映射,即
其中,AP(·)为自适应池化和裁剪操作;⊙为哈达玛积操作。
通过内积操作建立V和K之中每个像素的语义相关性,即
其中,∗为内积操作;KT为特征映射K的转置。
将f与Q的内积输入到图卷积层中,可进一步获得特征映射之间的关系,即
通过一个1×1卷积将重构后的特征映射的通道数调整为与F1相同,最后合并所有特征得到最终的输出为
由于只使用了自适应池化、全局平均池化和1×1卷积,并未给模型增加更多的参数,同时全局平均池化将全局信息压缩至一个向量中,以减少计算量。
2.3 损失函数
在对图像像素进行提取的过程中,会出现很多属于非平面区域的像素,同时在平面与平面的交界部分也会有非平面区域的产生,这将影响本文判断该非平面的交界区域的平面归属。为此,本文使用平衡交叉熵损失来进行像素的分类,即
其中,α和β分别为平面区域像素和非平面区域像素的集合;
为第i个像素属于平面区域的概率;w为平面区域与非平面区域的像素数量之比。
在实际图像中,由于平面与平面之间交界部分的非平面区域只占整幅图像的很小一部分,导致其不易被区分,所以本文引用了骰子损失来解决这个问题。该损失评估预测和真实值之间的相似性,将不受前景像素和背景像素比例的影响,即
其中,w,h分别为预测的宽和高;p为预测结果;g为真实值。
本文将交叉熵损失与骰子损失相结合,同时利用2种损失的特性来训练网络,即
其中,ε为权重,用于平衡2种损失;LD在0~1之间;log(LD)将取值范围从0扩展到负无穷区间内,当预测值与真实值相差较大时,LD变小,此时log(LD)趋近于负无穷,损失将会增加以惩罚这种预测。本文方法在利用了骰子损失的特性的同时,还提高了损耗的灵敏度。该方法比单纯交叉熵损失更好地解决了类不平衡的问题,且稳定性也优于单骰子损失。
之后,使用判别损失将相似的像素聚类成平面,即
其中,C为实际的平面数量;NC为某个平面内的像素个数;
为平面中第i像素产生的嵌入向量;μc为真实平面中所有像素对应的嵌入向量在嵌入空间中的中心点。将每个像素的平面参数和分割掩膜结合形成实例级参数。使用L1损失进行每个像素的平面参数的学习,即
其中,
为预测的平面参数;
为第i个像素的真实平面参数。
本文使用文献[4]中的损失函数将平面参数预测的深度图与真实深度进行比较,强制将实例级参数与场景几何保持一致,即
其中,
为从地面真实中推断出的像素点i的三维点。当三维点Q在这个平面上时,
。
整体的训练损失为
实验与分析
3.1 实验细节
本文使用ResNet-101作为骨干网络,基于Pytorch的框架实现上述算法。本文使用ScanNet数据集进行训练,使用Adam优化器进行参数优化。本文的初始学习率为10-4,权重衰减为10-5,batch size为16。在一台NVIDIA RTX 2080TI上训练了100个Epoch。最后本文使用NYU-V2数据集对输出的预测结果进行了定量分析。
3.2 评价指标
本文主要采用了相对误差、均方根误差、平均准确率等指标来对分割预测结果的精度、完整性以及标签的相似性进行评估。同时采用交并比(interaection over union, IoU)作为平面重建的标准评价指标,计算平面及其预测的交集与并集之比。
如果其中一个被预测平面的IoU得分超过0.5,同时重叠区域上的平均深度差小于阈值(变化范围在0.05~0.60 m之间,增量为0.05 m),那么就认为该平面被正确地预测。本文使用平均精度(average precision,AP)来评价分割的精度。
AP表示正确分类的样本数与样本总数之比,数值越高表示效果越好。AP默认情况下是从IoU=0.50~0.95,每隔0.05个IoU计算一次并求平均值,本文同时计算了当IoU为0.50和0.75时的AP值。
3.3 实验结果
实验在ScanNet数据集的50 000张样本上进行了训练,并用NYU-V2数据集进行了验证。为了证明算法的有效性,本文方法与PlaneNet[1],PlaneAE[4],PlaneRecNet[14]和InvPT[3]进行比较。其中对比方法均为基于单张图像的分段平面算法。
3.3.1 平面分割与重建的效果比较
图3和图4分别展示了在ScanNet数据集中,上述算法与本文算法对部分场景的最终的重建图和分割效果图。如图3第1、2列所示,本文对于场景中有较多小平面的情况重建效果更好。如图4(b)所示,PlaneRecNet[14]和本文算法都正确地对墙面上的开关进行了区分;如图4(f)所示,本文更为准确地区分了室内场景的各个平面。由上述实验结果可以看出,本文方法的最终效果优于其他算法。
图3 重建效果图
图4 部分分割图结果示例((a)原图;(b) PlaneNet;(c) PlaneAE;(d) PlaneRecNet;(e) InvPT;(f)本文)
3.3.2 关于重建结果的量化分析
本文方法将获取的语义信息和上下文信息进行自增强注意力结合,不仅排除了无用的背景信息,而且将不同特征之间的关系通过编码联系起来,进一步提高了分割的精度。表1展示了本文算法与其他算法在NYU-V2数据集上的深度预测精度的比较结果。
其中Rel~RMSElog 5个指标表示了不同的误差统计,Rel和Rel(sqr)分别表示相对误差和标准化相对误差,log10是以10为底的对数,RMSEiin和RMSElog为均方根误差,其数值越小越好;1.25~1.253的3个指标表示预测深度和真实深度之间的相对差异的阈值。表2展示了不同方法的平面语义分割的实验结果。从表中可以看出,本文算法在平面分割方面要明显优于现有其他算法。
表1 基于NYU-V2数据集的深度精度比较
表2 基于NYU-V2数据集的分割精度比较
为了更直观地比较几种算法的性能,本文使用平面召回率与像素召回率对平面分割结果进行评估。其中平面召回率表示正确预测的平面占总真实平面的百分比;像素召回率表示,在正确预测的平面中,重叠部分区域内正确预测的像素所占的百分比。图5展示了本文算法与其他算法的平面与像素召回率的曲线图。与现有方法在平面分割的定性比较中可以看出,本文方法在大多数情况下都有更好地表现。
图5 ScanNet数据集((a)平面召回率;(b)像素召回率)
3.3.3 消融实验
为了测试本文提出的自注意力增强模块和损失函数对整个网络的影响,在NYU-V2数据集上进行了消融实验。以兰德指数(Rand index,RI)、信息差异指标(variation information,VI)和分割覆盖率(segmentation covering,SC)作为评价指标来衡量各种情况下网络的效果。其中RI和SC值越大表示效果越好,VI值越小则表示效果越好。本文分别测试只使用自注意力增强模块和新损失函数时的精度。实验结果见表3。
表3 消融实验的分割精度比较
由表3可知,本文方法对于网络的分割性能均有所提升。仅使用本文提出的损失函数(LED)进行训练时,网络的分割性能提升幅度稍小;使用SAA时,网络的性能有所提升。当2种方法结合使用时(SAA+LED),网络的性能提升最多。
同时,本文还分别对使用不同数量的SAA进行了实验。保证其他条件不变,当使用模块数量小于3个时,自下而上添加(即优先添加在图1中的D1与D2之间)。
实验结果见表4,可见当使用3个SAA时,对网络的提升性能最高。
表4 使用不同数量自注意力增强模块分割精度比较
结束语
本文提出了一种基于自注意力增强机制和多尺度特征融合的室内场景分段平面三维重建算法。经过实验表明,本文算法可解决平面的类不平衡问题,有效地提高了平面分割精度,获得了更准确的室内三维分段平面重建模型。
但本文模型训练时使用数据集的室内场景图片均为较理想的情况,对于那些更复杂的室内环境重建效果一般,未来的一个重要方向是提高网络的鲁棒性。