APP下载

基于多尺度聚焦网络的单图像城市场景3D平面重建

2022-08-24江瑞祥

小型微型计算机系统 2022年8期
关键词:尺度平面像素

江瑞祥,缪 君,储 珺,葛 芸

(南昌航空大学 江西省图像处理与模式识别重点实验室,南昌 330063)

E-mail:jrx2050@163.com

1 引 言

基于图像的场景三维重建是计算机视觉研究的重要内容.三维重建的室外场景模型在虚拟现实、SLAM(Simultaneous localization and mapping)、机器人、无人驾驶以及文化遗产保护等领域有着广泛的应用.在实际中,利用激光雷达扫描设备可以获得精度较高的三维信息,但是激光雷达产品成熟度不高、价格昂贵以及扫描范围受限导致其应用范围存在一定的限制.相对而言,基于被动视觉的三维场景重建方法具有价格低廉,数据获取方便等优点,成为室外场景建模的常用方法,也是该领域未来发展的主流方向.

在基于图像的三维重建方法中,又分为单目、双目以及多目重建,主要是通过特征检测、特征匹配、相机标定等几个步骤来重构3D模型.其中,依赖单幅图像进行重建的方法,数据获取最为方便、简单,且技术上只对一幅图像进行预处理,效率更高.但是传统的图像重建算法无法通过单张图像获取完整的的结构信息,如平行线、消失线等几何属性约束,缺乏预测深度的线索,很难得到准确的预测结果.随着深度学习的发展,卷积神经网络可以迅速从单个图像中学习到丰富的特征表达,因此基于卷积神经网络的单图像重建成了近年来的研究热点之一.

考虑到城市场景中存在大量平面表面(如建筑物、人行道、马路所在的平面),利用这些丰富的平面信息可以更容易地恢复城市场景的空间结构.然而,城市场景存在光照变化、透视畸变、弱纹理与重复纹理区域等因素,严重影响重建模型的精度,利用图像信息有效获取完整的室外场景模型仍是一个具有挑战性的难题.针对这些的困难,有研究者提出基于特定场景模型(如曼哈顿)、区域级(如超像素)的重建算法,这些重建方法尽管可以在一定程度上克服像素级重建算法难以获取完整场景结构的缺点,但是无法包含场景中所有的平面结构,且对场景中的非重建区域(如天空、树木)缺乏有效的检测与滤除,整体重建效率受到影响,也无法应用于复杂多变的真实人造环境.随着深度学习的发展以及深度神经网络在室外场景语义分割的迅速发展,有研究者将语义分割融入到重建模型中,结合语义标签来检测场景所有的平面/非平面,但是技术并不成熟,存在严重的漏面、平面混合、平面残缺等问题,导致重建结果不佳.

为了解决以上问题,本文针对城市场景中平面分割不准确导致重建精度不高的问题提出一种快速、鲁棒的分段平面重建算法.该算法根据城市场景的结构特点,并结合语义分割技术,着重解决如何精确的分割出城市场景中各种不规则平面(长条状的马路、人行道等)、非平面(天空、树木等)以及如何提高相应平面的深度预测精度,实现高效、可靠的分段平面重建.本文主要贡献如下:1)提出一种端到端的深度卷积神经网络重建系统,采用多任务学习策略,将语义分割和参数回归任务相结合来推测城市场景中所有平面的深度图,获取三维平面模型;2)提出一种条状注意力机制,针对室外场景中不规则的长条状物体,提高网络的分割能力;3)结合条状注意力机制和空洞空间金字塔池化模块(Atrous Spatial Pyramid Pooling,ASPP)[1]提出一种多尺度聚焦模块,使用并行扩张卷积滤波器来捕获局部和全局背景信息,通过学习选择“适当”的比例来识别图像中不同尺度的平面,增强网络对多尺度信息的处理能力.

本文剩余章节的安排如下:第2节叙述本文算法涉及到的相关工作,第3节详细描述本文的算法流程、网络框架、多尺度聚焦模块以及损失函数;第4节介绍了实验数据集、实验环境、评估标准以及对比实验和结果分析;最后一节为结论.

2 相关工作

本文将从多个角度讨论与本文内容相关的现有工作.

2.1 多尺度上下文

多尺度上下文的思想是通过多个尺度集成上下文特征(例如结构的纹理信息和周围环境)促进模型对特征的提取和区分,能够有效解决难以区分的细粒度场景结构.在现有的多尺度处理方法中,能够有效捕获图像上下文的网络结构大致可分为3类.第1类,创建一个以多分辨率来解释图像的多尺度金字塔结构[2,3],如Farabel等人[2]通过输入较大的背景窗,使用拉普拉斯金字塔得到不同尺度的子网络,再将多个子网络进行权重共享组合成多尺度卷积网络,并通过超像素和条件随机场实现简单场景的语义分割.该类方法结合机器学习中的传统算法,速度较慢且对于较复杂的场景精度不高;第2类,先通过一个逐步向下采样的解码器来捕获更多上下文,再连接一个向上采样的解码器,使用跳跃连接[4]来结合多尺度上下文.然而,类似U-net[5]这类典型的编解码网络在跳跃连接操作中来自编码器和解码器子网的特征映射在语义上存在较大差异;其次,无法有效对远程特性的现相关性进行建模,忽略了不同规模的全局上下文信息;第3类,通过空洞卷积以及轻量的空间金字塔池化(Spatial pyramid pooling,SPP)[6]及其变种[7,8]来处理上下文,从而无需对特征图进行下采样.该类模块并行多个不同扩张率的扩张卷积来获取不同尺度的感受野,最后将具有不用尺度的信息的特征映射通过求和或通道连接融合到一起.然而,空洞卷积由0进行填充会导致有效滤波的权重变小,当采样率过大时会导致局部信息的丢失.

2.2 注意力机制

注意力机制的设计灵感来源于人类的视觉系统,为了更好地捕捉视觉结构,人类会利用一系列局部视点,并有选择地聚焦于突出部分.近几年,研究者们开始将注意力运用到神经网络当中来保留长期的依赖关系,并在许多计算机视觉任务中得到验证.Senet[9]提出Squeeze and-Excitation模块,通过学习特征通道间的相关性,完成通道维度上的原特征重标定,提高了网络的分类能力;DAnet[10]、ScattNet[11]通过串联或并联的方式结合通道和空间两个维度上的注意力来对特征提取器的输出特征进行优化,更好地实现了类内紧凑的特征表示;SAnet[12]在常规的通道卷积上加入像素组注意力,有效引入一个空间、通道依赖,结合像素级和类级映射来提高网络模型的学习能力;Li X等人[13]把最大期望算法和注意力机制相结合得到一个更紧致的参数集合;CCnet[14]串联两个一样的交叉注意力机制,在像素十字交叉的路径上获取周围像素的上下文依赖,得到更加精准有效的分割信息.与这些工作不同,本文将注意力机制引入到单图像城市场景重建任务中,针对城市场景平面重建中的特定问题(城市场景中存在大量不规则的条状平面)扩展了注意力机制,并精心设计了一种能够让网络获取条形区域的像素依赖关系的条状注意力机制.

2.3 分段平面重建

随着深度学习的迅速发展,基于深度学习的单图像分段平面重建算法[15-18]开始得到广泛的研究.例如,Yang等人[15]通过改进DispNet网络模型来预测室外场景的平面分割图和深度图,并设计了一个平面结构损失函数,使得网络不需要平面参数的监督信息;Liu等人[16]提出一种用于室内分段平面重建的深度神经网络模型PlaneNet,可以直接推断平面参数;Yu等人[17]提出一种关联嵌入的室内场景平面重建算法,利用一种有效的均值漂移聚类算法对平面区域的嵌入向量进行分组,再考虑像素级和实例级一致性来估计分组后每个平面实例的参数,进而获取相应平面的深度信息完成建模.Liu等人[18]提出一种深度神经网络模型PlaneRCNN,用于检测和重建单个室内RGB图像的平面区域,利用平面参数和分割掩膜检测平面,并提出一个新的基准来提高分割的细粒度.这些基于场景中平面特征的分段平面重建算法在一定程度上克服了传统像素或空间点级的重建算法难以恢复完整场景结构的缺点,但这些方法需要强大的几何图形表示,对于复杂场景中平面的检测、分割仍存在问题.为此,本文提出一个新的场景重构网络模型,并通过多尺度聚焦模块来提高城市场景中的平面分割和平面参数预测精度,进一步提高3D模型的完整性.

3 算法研究

在这部分,首先介绍本文的算法流程;然后,详细描述实现本文重建算法的难点、解决方法、算法网络框架和本文设计的多尺度聚焦模块;最后,最后介绍用于网络监督学习的两种损失函数.

3.1 算法流程

本文算法的流程图如图1所示,给定一张城市场景图像作为输入,利用编码子网进行特征提取,再通过一个平面/非平面分割支路和一个平面参数预测支路,分别输出平面分割掩膜以及平面参数njmj=1,再结合两条支路的输出推断出相应的平面深度图,最后结合相机内参计算出每个属于平面的像素的三维点坐标,得到完整的平面3D点云模型.

图1 流程图Fig.1 Flow chart

3.2 算法难点和网络框架

由算法流程可知,分段平面重建方法的一个主要问题是需要准确的识别场景中的所有平面并过滤非平面.然而,城市场景复杂多变,如图2所示,城市场景主要由条状平面组成,

图2 城市场景的分割难点Fig.2 Difficulties in the segmentation of outdoor scenes

且同时存在大平面以及因透视原理形成的小平面(例如远处的人行道、马路、建筑物等),这要求算法能够在有效识别大平面的同时还能够准确的分割细长平面以及模糊区域的小平面.因此,如何提高网络模型对于不规则平面的分割能力是该方法要解决的难题.

针对此问题,本文拟利用多尺度上下文和注意力机制来提高本文网络模型的性能.通过相关工作的分析,现有的多尺度上下文和注意力机制从不同的角度对模型进行了改动,从而达到提升网络的性能,但都存在一些缺陷,无法直接用于城市街道这种特殊场景的平面重建研究.而且,由于室外场景光线变化大,透视原理等导致平面大小不规则,现有的分段平面重建算法的性能受限于场景中平面分割的准确性以及平面参数的精度;一些室内场景的平面重建算法虽然能够取得较好的效果,但室外城市场景中物体的平面结构、大小、深度变化等远比室内复杂,再加上光照变化、透视导致室内平面重建算法并不能很好的迁移到室外场景中.本文从多个方面进行考虑,提出一种新的网络结构:基于Resnet101引入了残差结构,提高了收敛效果,将其作为主要的征提取框架;设计一个结合多尺度上下文和注意力机制的多尺度聚焦模块,该模块能够自适应地获取多尺度信息,同时关注条状结构平面,使网络更加适合室外城市场景.

如图3所示,本文网络模型以Resnet101为基础,采用类似DeeplabV3+的编码解码结构.网络模型以单张RGB图像作为输入,通过Resnet101进行特征提取,再利用多尺度聚焦模块对Resnet101输出的高级特征进行特征化,最后用全局平局池化和解码器分别预测平面参数和平面分割图,将参数回归任务和平面语义分割任务融入到同一个神经网络当中.

图3 网络框架Fig.3 Network framework

3.2.1 平面参数预测

Resnet101网络经过5次下采样后输出尺寸为原图1/32的高级特征图,再通过多尺度聚焦模块进行特征优化,然后再连接两个步长为2的3×3×512和一个1×1×3m(m为自定义的平面数量)的卷积操作得到参数特征,最后采用全局平均池化操作得到各平面参数值.

3.2.2 平面分割图预测

平面分割支路与平面参数支路共享编码特征,经过多尺度聚焦模块优化后的特征进入解码器后,进行5次步长为2的反卷积操作扩大尺寸,并在特征图尺寸为输入图像1/8和1/16的位置与编码对应尺寸的特征图进行跳跃连接(Concat),最后利用Softmax分类器输出对应的平面分割映射.

3.3 多尺度聚焦模块

结合局部和全局信息可以提高对图像中不同尺度对象的分类能力,尤其是存在大量复杂、不规则平面的城市场景.例如建筑物、马路这种大型长条状平面对象需要网络获取更大的感受野才可以得到完整的分割结果,但是很容易丢失局部信息.然而,透视原理会导致室外城市场景中的平面近大远小,这要求网络模型必须能够聚焦于高分辨率的局部信息.针对这个问题,本文提出一个自适应的解决方案,即多尺度聚焦模块,如图4所示.该模块由一个自适应的条纹注意力机制和一个空洞空间金字塔模块(ASPP)[1]模块组成.

图4 对尺度聚焦模块Fig.4 Multi-scale focusing module

由于现有池化、卷积等操作大多采用方形窗口来检测输入特征映射,限制了它们在捕获现实场景中广泛存在的各异向性上下文时候的灵活性,并且这些操作会不可避免的合并来自不相关区域的“污染”信息,为了解决该问题,本文提出条状注意力机制.条纹注意力机制分别将Resnet101的输出特征图作为输入,分别以特征图的高、宽作为滤波器的尺寸,通过条状池化与卷积核为3的一维卷积(1DConv3)使得网络聚焦于条状特征,再使用双线性插值(用Bi表示)对高、宽两个方向上的特征映射进行扩展,扩展到输入特征图的大小后再进行求和,利用Sigmoid激活函数获取注意力权重.该机制的关键在于利用条形池化窗口沿特征图水平或垂直维度进行平均池化操作.具体来说,给定一个三维张量F=H×W×C,采用一个空间范围为(H,1)或(1,W)的池化核对输入特征F的行或列中的所有特征值进行平均池化,得到的输出可以分别表示为:

yHi=1W∑0≤j≤Wxi,j
yWj=1H∑0≤i≤Hxi,j

(1)

经过后续操作产生C个通道的张量,得到注意力权重Λ=[Λ1,Λ2,…,Λc]∈W×H×C×K,再将注意力权重值反乘到输入特征图,得到对条状物体更加响应的特征FST,表达如下:

Λ=Sigmoid(Bi1DConv3yHi+Bi1DConv3yWj)

(2)

FST=∑CC=1(Λ·F)

(3)

在水平和垂直的条形池化层中,长而窄的池化核函数使得离散分布的区域和条状编码区域之间更容易建立长期的依赖关系.条状注意力机制沿一个空间维度部署一个长核窗口,能够捕获孤立区域的远程关系;其次它在其他空间维度上保持一个窄核窗口,这有助于捕获局部上下文,也能着重于捕获局部细节,并防止不相关区域的标签干扰.

另一方面,多尺度聚焦模块中的ASPP模块通过3个平行的空洞卷积层、1个全局平均池化层和1个1×1卷积层获取多尺度信息;然后将条状注意力权重分别乘到这五种尺度信息的特征中,使得网络在获取多尺度信息的同时又能够更加注意条状特征.同一个三维张量F=H×W×C作为输入,经过ASPP模块的3种操作后产生5个张量,分别为F3r,Fm以及Fn每个具有相同数量的通道数C,r3,表示带有3种不同扩张率的空洞卷积层.最后融合并行的5个层的输出FASPP以及FST来计算自动聚焦层Fmst,表达如下:

FASPP=∑CC=1(Λ·(F3r+Fm+Fn))

(4)

Fmst=Concat(FASPP,FST)

(5)

3.4 损失函数

本文定义了一个标准的交叉熵损失函数来监督平面分割支路的学习:

Losss=∑q-Z(q)·log(Pq)-
(1-Z(q))·log(1-Pq)

(6)

式(6)中,q为像素,如果像素属于平面类中的像素,则令Z(q)=1,若为非平面Z(q)=0,Pq是属q于每个平面的概率之和Pq=∑mj=1Sj(q),其中Sj(q)表示像素q属于第j个平面的概率.

对于平面参数预测支路,本文引入一个平面对抗损失函数[15].假设{Ii,Di}ni=1表示n张训练图像和对应的深度图.通常来说,平面方程一般式可设为Ax+Bx+Cz+D=0,其中包含法向量N=(A,B,C)和偏移量常数D(表示平面与相机中心基准面的偏移距离),如果偏移量D=0表示该平面通过相机中心.但只有当D不为0时,计算真实世界图像才有意义,本文将平面参数齐次化,即N/D,取a=-AD,b=-BD,c=-CD,得到新的平面方程:ax+bx+cx=1,平面参数n′=(a,b,c).此时,当像素点q位于平面pji上时,该点对应的三维坐标Z(q)与平面参数的关系为:Z(q)·n′=1,就可以通过最小化以下函数进行反向传播更新权重:

Lossn=∑ni=1∑mj=1(∑qSji(q)|′ji·Z(q)-1|)

(7)

Z(q)=D(q)·K-1q

(8)

式(8)中,D(q)表示图像像素q处对应的深度,像素q表达为齐次向量q=[x,y,1]T,K是相机内参数矩阵.且若Z(q)点位于平面Pi上时,存在n′·Z(q)=1.因此,结合公式(8)可得:

n′·K-1q=1D(q)⟹D(q)=1n′·K-1q

(9)

设η(q)为预测深度,′为预测平面参数,此时可以得到:

Z(q)=D(q)·K-1q
η(q)=1/(n′·K-1q)⟹|′ji·Z(q)-1|=
|′ji·D(q)·K-1q-1|=|D(q)η(q)-1|

(10)

此时,公式(7)可以重写为:

LossD=∑ni=1∑mj=1∑qSji(q)Di(q)ηi(q)-1

(11)

式(11)评估了当像素q属于平面j的概率为Sji(q)时,预测深度相对于真实深度的偏差损失,将平面参数预测问题转化为了深度预测问题,并可以依据预测到的深度和数据集给定的相机参数获取三维点云,得到最终的三维重建结果.

4 实验与分析

4.1 数据集和实验环境

本文使用的是SYNTHINA数据集[19],该数据集是由一个大型的虚拟城市真实感效果图像组成,包含了从虚拟城市环境中渲染出来的20多万幅逼真图像,且对应有精确的素级深度图以及语义标签.原始数据集包含了7个不同的场景,提供了13类标注对象(天空、建筑、马路、人行道、行人等),还包括景观(城镇、城市、高速公路)、动态对象、季节和天气的多样性图像,很适合作为本文网络模型的训练与测试数据.由于该数据集有许多的相同的帧,本文先过滤冗余帧,再从剩下的图像中随机抽取8000帧作为训练集,100帧作为测试集;为了得到只有平面和非平面两类的分割标签,根据任务需要自定义场景中属于平面的5个类(即m=5),分别为建筑、马路、人行道、路标、栅栏,其他为非平面.

本文实验的机器软硬件配置为64位的Ubuntu18.04操作系统,中央处理器为Intel(R)Xeon E5-2063 V3,显卡GPU为GTX1080Ti,CUDA为Cuda8.0 with cudnn,phthon2.7,算法采用TensorFlow1.8.0[20]深度学习框架实现,训练时采用Adam[21]优化器来随机更新梯度,学习率0.0001,Batch size为4,Epoch为250,训练迭代的最大次数设置为500000次,以端到端的方式训练本文模型.

4.2 评价标准

本文任务对室外场景中的平面结构进行重建,本文算法模型有平面分割图与平面深度图这两个输出,因此分别从分割和深度这两个方面来判断平面结构推断的可靠性.本文采用文献[15]中相应的评价指标来衡量场预测结果的精度和完整性,分别是比较分割预测结果与标签的相似性:兰德指数(Rand index,RI),差异指标(Variation of information,VOI)和分割覆盖率(Segmentation coverage,SC);评估深度预测结果的指标:绝对相对误差(Absolute relative error,Abs Rel)、平方相对误差(Squared relative error,Sq Rel)、根均方误差(Root mean squared error,Rmse),对数均方根误差(Log root mean square error,Log Rmse)和不同阈值的精确度(δ<1.25,1.252,1.253).

4.3 结果分析

为了评估算法的有效性,本文与文献[15]、文献[17]、文献[18]的场景平面重建系统以及未引入多尺度聚焦模块的本文基础网络模型进行对比.本文在相关工作中介绍了这3种现有的平面重建系统,使用SYNTHIA数据集从定性和定量两个方面来对比实验结果.深度预测精度的实验结果如表1所示(箭头向上表示数值越大越好),通过对比发现文献[17]、文献[18]预测的深度误差要高于本文和文献[15],而本文模型的深度误差比文献[15]要小.原因是针对于室内环境设计的重建算法并不能等效的迁移到室外场景中.另一方面,观察到在引入多尺度聚焦模块后,本文模型比基础网络的性能在深度预测精度方面提升了很多,Abs Rel降低到4.22%,在这几种重建系统中取得了最佳的效果,验证了多尺度聚焦模块的有效性.

平面语义分割的实验结果如表2所示,通过对比发现本文设计的基础网络模型比文献[15]的城市场景平面重建模型高出1.3%SC,并且引入多尺度聚焦模块后达到81.5%SC;另外,与文献[15]和本文模型相比,文献[17]和文献[18]的语义分割效果差很多,原因是这两个算法是针对室内场景平面,对环境差异很大的城市场景的平面建模并不有效.实验证明了本文设计的模型对城市场景中平面的语义分割具有优良的鲁棒性,且本文设计的多尺度聚焦模型具有提升模型性能的效果.

表2 在SYNTHIA数据集上的分割性能比较Table 2 Segmentation performance comparison on the SYNTHIA dataset

为了更直观的比较这几种算法的分割性能,本文从测试集中抽取5张图像进行对比,如图5所示,在第1、4行的城市场景中,文献[16]、文献[17]以及本文基础网络无法完整的分割马路两边的大型建筑物平面,将这一个平面分割成了多个平面,而本文模型和文献[15]能够准确的分割这类平面.但是,在第5行的城市场景中,文献[15]不能很好的区分马路和人行道,在较远距离处存在分割混合问题,而本文模型可以很好的处理这类问题,通过本文基础网络和本文模型比较可知,这得益于本文设计的多尺度聚焦模块.不仅如此,注意到第1行场景中马路尽头的小平面,现有方法都无法准确的分割出这个平面,而本文的模型对这种细小的对象的分割效果也很良好.

图5 在SYNTHIA数据集上的语义分割结果对比Fig.5 Segmentation result on the SYNTHIA dataset

根据网络模型的输出可以计算得到最终的3D模型,本文选取了3个不同城市场景的平面重建模型进行比较,如图6所示.可以发现,尽管一些非平面对象的遮挡导致了平面模型存在一些空洞,但是相对于专门对室外场景进行建模的文献[15]的重建算法,本文模型能够更完整的重建出远距离的平面,如第1行后端的建筑平面,且文献[17]和文献[18]明显无法完整重建的重建出路两边的建筑物平面.在第3行这幅图中,本文方法重建出的模型比现有方法空洞更少,裂纹更少.另外,通过第5、6列,可以看出引入多尺度聚焦模块之后,3D平面模型更加完整,网络模型的鲁棒性更好.

图6 3D模型的比较Fig.6 Comparison of 3D models

5 总 结

本文主要提出了一种基于多尺度聚焦的单图像城市场景3D平面重建算法.该算法利用Resnet101构造一个编解码结构的深度网络,以一张RGB图像作为输入,通过多任务学习策略,利用一个网络实现场景平面的语义分割以及平面深度信息的预测.为了提高重建精度,本文还设计了一个针对城市场景的多尺度聚焦模块,该模块通过在ASPP模块中嵌入一个新的条状注意力机制,在自适应的提取多尺度上下文信息的同时,还能关注条形平面特征,提高网络对城市场景中不规则平面的学习能力.实验结果表明,本文的重建网络在平面语义分割和深度预测任务上都优于现有的基于神经网络的分段平面重建算法,在SYNTHIA数据集上分别取得81.5%SC,4.22%Abs Rel的效果,恢复的3D平面模型也更加完整.

猜你喜欢

尺度平面像素
环境史衰败论叙事的正误及其评判尺度
“像素”仙人掌
立体几何基础训练A卷参考答案
立体几何强化训练B卷参考答案
参考答案
高像素不是全部
以长时间尺度看世界
9
神回复
平面和立体等