融合注意力机制和多层U-Net的多视图立体重建

2022-02-28 06:39刘会杰柏正尧程威李俊杰许祝
中国图象图形学报 2022年2期
关键词:视图特征提取代价

刘会杰,柏正尧,程威,李俊杰,许祝

云南大学信息学院, 昆明 650500

0 引 言

多视图立体(multi-view stereo,MVS)的目标是在已知一系列图像以及相应的相机姿态和固有参数(相机的内外参数)的前提下,重建观察到的场景或对象的高精度3D几何模型。作为计算机视觉的一个分支,多视图立体已经取得了巨大发展,并广泛应用在多个领域,例如自动驾驶、机器人导航、遥感和可移动文物(刘建国,2016;张蕾,2018)等。

在现有的MVS重建方法中,基于几何上下文的传统方法(Campbell等,2008;Furukawa和Ponce,2010;Galliani等,2016;Schönberger等,2016)在用朗伯曲面进行场景重建时,已经取得了巨大成功,尤其在准确性方面,但是在重建弱纹理和镜面反射区域以及完整性方面遇到了困难。此外,通常还需要花费很长时间才能建立对应的3D映射关系,场景越大,需要花费的时间就越多。为了解决这些问题,Huang等人(2018)和Kar等人(2017)使用了深度卷积神经网络(convolutional neural network,CNN),速度相比之前快了几倍的同时也提高了整体场景的3D重建质量。这主要得益于以下事实:基于学习的方法可以合并诸如镜面反射和反射先验之类的全局语义信息,从而实现更可靠的匹配。在CNN的感受野足够大的情况下,还能更好地重建较差的纹理区域。

基于学习的MVS重建方法主要包括基于体素的方法、基于点云的方法和基于深度图的方法。基于体素的方法将3D空间划分为规则网格,并估计每个体素是否附着在表面上。缺点主要是空间离散度误差以及巨大的内存消耗;基于点云的方法直接在点云上运行,通常依靠传播策略逐渐使重建变得更加密集。由于点云的传播都是逐步进行的,不能并行,导致重建需要花费很长时间;基于深度图的方法则是利用估计的深度图(Chen等,2019;Choi等,2018;Yang等,2020;Huang等,2018;Luo等,2019;Xue等,2019;Yao等,2018;Weilharter和Fraundorfer,2021)作为中间层,将复杂的MVS问题分解成相对较小的每个视图深度估计问题,并且每次只关注一幅参考图像和几幅源图像,然后对每个深度图进行回归(融合)以形成最终的3D点云模型。尽管之前提出的一系列重建方法仍有改进余地,但最新的MVS基准测试(例如DTU(Technical University of Denmark)(Jensen等,2014))已证明,使用深度图作为中间层的方法可以实现更准确的3D模型重建。而一些端到端的神经网络直接从一系列输入图像中预测场景的深度。例如Yao 等人(2018,2019)提出的MVSNet和R-MVSNet(recurrent-MVSNet)。即使这些方法的准确性已经在DTU数据集上得到验证,但多数方法还是只利用3D CNN预测深度图或者体素的占用,不仅导致内存消耗过多,还限制了分辨率的提高。

为了解决以上问题,本文提出一种基于注意力机制进行3D重建的端到端的监督学习网络,是以一幅参考图像和多幅源图像作为输入,最终得到相对应的参考图像深度图的一种深度学习框架。其深度图估计步骤如下:1)提取深度特征。从输入的多幅源图像和一幅参考图像中提取深度特征,在特征提取的每个级别中加入注意力层,以专注于学习重要信息用于进行深度推理,从而捕获深度推理任务中的远程依赖关系,即从众多信息中选择出对当前任务目标更关键的信息。首先计算查询点与所有点之间的成对关系以得到注意力图,然后通过加权和的方式聚合所有点的特征,得到与此查询点相关的全局特征,最终再分别将全局特征加到每个查询点的特征中,完成远程依赖的建模过程。2)构建匹配代价体。首先采用可微分单应性变换构建参考视锥的特征量,接着进行匹配的代价体的构建,中心思想是在每个采样深度假设下,计算参考摄像机中的每个像素与其相邻摄像机像素之间的匹配成本。3)正则化代价体和深度图的估计与优化。利用多层U-Net体系结构正则化代价体,即对代价体进行降采样,并提取不同尺度的上下文信息和邻近像素信息对代价体进行过滤,进而通过回归生成最终的细化估计深度图。此外,本文应用的基于差异的成本度量准则,不仅解决了任意视图的输入数量问题,还可以将多个要素量最终汇总为一个成本量。

本文工作的主要贡献包括:1)提出一种注意力机制用于特征提取模块,以专注于学习重要信息用于深度推理,从而捕获深度推理任务的远程依赖关系;2)提出一种多层U-Net网络,用于代价体正则化,对代价体进行降采样,并提取不同尺度的上下文信息和邻近像素信息对代价体进行过滤,进而通过回归生成最终的细化估计深度图。

1 相关工作

传统MVS方法使用多个摄像机拍摄的视图之间的投影关系迭代优化深度。Schönberger和Frahm(2016)提出的开源方法COLMAP,在特征匹配阶段采用手工特征匹配方法,并优化了每个像素的深度值。由于在从公共基准到互联网照片集的众多场景中表现出色,准确性很高,因此COLMAP已成为传统MVS方法的标准。但这种方法的主要缺点之一就是处理时间过长,即使是单幅图像的深度图估计,如果运用传统的色彩块匹配方法,也需要花费若干分钟时间。因此,基于学习方法的出现逐渐取代了传统的手工特征匹配方法,但如果使用优化程序一对一地优化像素深度值,实现过程又难以并行且耗时极大。Furukawa和Ponce(2006)、Li等人(2016)以及Zaharescu等人(2007)使用可变形的多边形网格估计深度值,也需要先对场景表面进行良好的初始化,并需要迭代地提高光度一致性。Moulon等人(2017)提出一个著名的多视图几何开源库OpenMVG,主要用于处理多视图实体几何,并提供了特征提取和匹配方法以及SFM(structure from motion)完整工具链。尽管OpenMVG可以从一组输入的图像中恢复相机姿势和稀疏的3D点云,但最终还是没有解决摄影制图链流的最后一部分。Cernea(2015)提出了多视图立体重建开源库OpenMVS,旨在通过提供一套完整的算法恢复要重建场景的整个表面来填补这一空白。虽然利用了跨尺度特征,但还是有无纹理区域的困扰问题存在。

随着深度学习的快速发展,使用卷积神经网络进行MVS重构的研究已经取得显著进展。Eigen等人(2014)首先提出将卷积神经网络用于单眼深度估计的方法,将网络分为粗略全局预测和局部细化预测两个模块,通过尺度不变误差定义损失函数,为进一步研究基于学习的MVS重建提供了强大的思想和指导方法。Choy(2016)受长短期记忆网络(long short-term memory,LSTM)(Hochreiter和Schmidhuber,1997)的启发,提出3D-R2N2(3D recurrent reconstruction nerual network)网络,扩展了标准的LSTM框架以构建2D图形到3D体素的映射,完成了单个或多个视图(多个视图的输入同样视为LSTM的输入序列)的3D重建,但重建精度较低,如果提高精度,就需要提高分辨率,而提高分辨率,就会极大地增加计算时间。为了解决MVS分辨率低的问题,Ji等人(2017)提出一个端到端的学习框架SurfaceNet,可以直接学习光度一致性以及表面结构的几何关系。首先将整个空间划分为较小的彩色体素立方体(colored voxel cubes,CVC),然后将所有体素立方体的颜色信息和相机参数结合构成一个3D代价体,构成的3D代价体即为网络的输入,但由于SurfaceNet网络的规模很难增大,即使应用启发式的“分而治之”策略,也需要花费很长时间才能进行大尺度的重建。所以Huang等人(2018)提出用来处理多分类问题的DeepMVS,采用编码器—解码器体系结构进行特征提取和深度估计。但由于DeepMVS是将图像序列预处理为patch,因此在训练过程中会丢失图像的全局信息。Yao等人(2018)提出的MVSNet本质上是借鉴基于两幅图像代价体的双目立体匹配的深度估计方法,进而扩展到多幅图像的深度估计。由于代价体的双目立体匹配方法已较为成熟,所以MVSNet本质上也是借鉴一个较为成熟的领域。这已经成为大多数MVS重建方法事实上的标准管道。Im等人(2019)提出了DPSNet(end-to-end deep plane sweep stereo),与MVSNet一样都是使用可微分单应性变换构造代价体,并从代价体中回归深度图。此后,Yao 等人(2019)提出基于循环网络的R-MVSNet,利用门控循环单元(gate recurrent unit,GRU)代替3D-CNN正则化代价体,有效减少了内存消耗,但增加了估计深度的平均误差距离,并且显著增加了运行时间。Luo等人(2019)设计一个patch的置信量,获得了更好的重建结果。Xue等人(2019)另外添加条件随机场(conditional random fields,CRF)作为后处理步骤,以生成平滑的深度图。Gu等人(2020)提出Cascade-MVSNet,重点是提出了级联代价体方法。首先在特征金字塔编码几何结构和上下文基础上建立代价体,并且逐渐缩小;然后通过前一阶段的预测缩小每个阶段的深度(或视差)范围。随着成本体积分辨率的逐渐提高和深度(或视差)间隔的自适应调整,输出将以较粗略的方式逐渐恢复为较精细的状态,既节省内存又节省时间。Yu和Gao(2020)提出Fast-MVSNet 并从中探索了一种从稀疏到密集的方法,通过仅构造稀疏的成本量学习稀疏的高分辨率深度图,然后在局部致密。Chen等人(2019)提出Point-MVSNet,以一种以粗到精的方式估计深度值的方法,同时利用拟议的PointFlow模块将粗略的深度图迭代优化为最终的细化深度图。

2 方 法

尽管基于深度学习的MVS方法已在各种任务基准中达到了最先进水平,但仍未考虑与注意力机制结合,以捕获大规模特征并获得高分辨率图像,从而提高结果的完整性。对此,本文将重点放在多尺度的多层U-Net以及对MVS神经网络的自我关注上,以获得更大的自适应感受野,从而得到更高精度以及更完整的深度结果。本文提出网络的主要模块为:深度特征提取、匹配代价体的构建、代价体正则化、深度图估计和深度图优化,如图1所示。

图1 本文网络的整体框架Fig.1 Overall framework of the proposed network

2.1 深度特征提取

深度特征提取(feature-extraction of attention-mechanism,FA)模块由卷积层和注意层组成,包括8个卷积层和1个32输出通道的注意层。将邻近像素之间的语义信息成功编码至这个经32通道输出的特征图,可以有效防止输入的图像样片降采样后丢失语义信息。样片通过神经网络提取的图像特征称为深度特征,与传统图像特征提取方法对比,本文特征提取方法有着更好的匹配精度和效率。输入部分是经过视角选择后成功配对的N幅图像(参考图像和源图像),对这N幅图像进行特征提取时,其权重参数都是共享的,如图2所示。

本文网络在MVSNet的特征提取模块后加入一层注意力层,以专注于学习重要信息用于进行深度推理,如图3所示。自我注意(亦称内部注意)是一种与单个序列的不同位置相关的注意力机制,目的是计算序列的表示形式,允许对依赖项进行建模,而不必考虑它们在输入或输出序列中的距离。注意功能可以描述为将查询和一组键值对映射到输出(查询(Q)、键(K)、值(V)和输出都是向量),然后将输出计算为值的加权总和(分配给每个值的权重通过查询与相应键的兼容性函数计算)。具体为

图2 FA模块Fig.2 Feature-extraction of attention-mechanism module

(1)

图3 注意力层模块Fig.3 Attention layer module

2.2 匹配代价体的构建

可微分单应性变换投影过程类似经典平面扫描算法,唯一区别在于采样点来自特征图而不是RGB图像。采用平面扫描算法是因为其不仅适用于无纠正图像,而且能达到实时计算视图差的效果。通过投影变换,N幅图像可形成N个特征体,这个特征体就是匹配代价的表示。通过深度特征提取后,每幅图像Ii∈{I1∪A}都可以得到一幅对应的特征图Fi,根据先验的深度范围信息,n1表示相机的主轴方向,对参考图像I1,以其主轴为扫描方向,将参考图像按照某一深度间隔dscale从最小深度处dmin一直映射到最大深度处dmax,可以得到一个处于不同深度间隔的相机锥体,为了便于计算光学一致性,利用插值方法使每幅投影的长宽一样,从而利用2D的特征生成3D的特征量,即将其他图像上的特征扭曲到参考图像的相机视锥中的192个深度平面上,总有一个深度是对应的。已知参考图像I1,候选集中图像的相机参数为{Kj,Rj,tj},i=I1∪A。考虑到对亚像素的深度估计,以保证深度图平滑,该单应性矩阵是完全可以微分的。第j个特征扭曲到参考图像相机视锥的深度d平面的单应矩阵计算为

(2)

式中,Kj、Rj、tj表示相机的本征特征和外在事物。对于I1,将候选集中代表I1∈A的特征图Fj投影到该相机椎体的不同深度中,定义这个投影变换为

X1=Hj(d)×xj[1]

(3)

式中,[1]表示索引1。

2.3 代价体正则化

原始代价体往往是含有噪声污染的,因此,为了防止噪声使网络过度拟合,本文使用基于多尺度的多层3维卷积神经网络(multi-layer U-Net,MU-Net)进行代价体正则化,即利用U-Net网络(Ronneberger等,2015)对代价体进行降采样,并提取不同尺度中的上下文信息和邻近像素信息,以相对较小的存储/计算代价在一个大的感受野范围内进行领域信息聚合,如图4所示。核心思想是利用3D卷积,对代价体进行过滤,将视角差信息转化为所求的深度图信息。为不失随机性,本文使用一种基于方差的多视图一致性度量准则,实现了对任意视角图像数量的有效处理,保证每一个特征体S都等权加入方差计算中。该代价体是一个由长和宽与参考图像长宽一样的代价图在深度方向连接而成的3维结构,在深度维度每个单位表示一个深度值。其中某一深度的代价图上的像素表示参考图像在相同深度处与候选集图像的匹配代价。这个3维代价体的构造公式为

(4)

图4 代价体正则化模块Fig.4 Cost volume regularization module

2.4 深度图估计

深度估计是通过神经网络直接学习的。输入特征体S和对应GT(ground truth)深度图,利用soft argmin回归每一个像素在深度d处的概率,得到一个表示参考图像沿深度方向置信度的概率体p,以此完成从代价体到深度值的学习过程。当已知概率体时,最简单的可以获取参考图像的所有像素在不同深度的概率图的方法,就是按照“赢者通吃”原则直接估计深度图。然而此原则无法在亚像素级别估计深度,还会造成深度突变、不平滑等情况,所以需要沿着概率体的深度方向,以深度期望值作为该像素的深度估计值,才会使整个深度图中的不同部分内部较为平滑。具体为

(5)

式中,P(d)表示特征m在深度d的置信度。

2.5 深度图优化

由于在代价体正则化阶段较大的感受野使得重建的边缘部分过于平滑,因此需要从参考图像中获取边缘信息来优化这些区域的精度。优化阶段使用了深度残差网络,输入为上一步估计的初始深度图(单通道)加上参考图像(3通道),共4通道,然后通过3个32通道的2维卷积和1个单通道的卷积(不加BN和ReLU,最后一层输出残差)并与初始深度图相加,得到优化后的单通道深度图。本文使用L1损失作为训练损失衡量GT深度图和估计深度图之间的绝对差。只考虑那些有效的像素点,即存在GT标签的像素。具体为

(6)

式中,Pvalid表示概率体P的整个有效范围,初始深度图di到GT的L0距离和优化后深度图d1到GT的L1距离作为损失。遵循其他网络(Yao等,2018)的设置,λ系数设置为1。

3 实 验

3.1 数据集

DTU数据集(Jensen等,2014)是专门针对MVS拍摄并处理的大型室内数据集,利用一个搭载可调节亮度灯的工业机器臂对一个物体进行角度严格控制的多视角拍摄,所以可以获取每个物体不同视角下的相机的内外参数。该数据集共124个不同场景,每个场景都是从49或64个位置拍摄的,包括各种各样的对象,对应于场景或扫描中的RGB图像数量,用来解决MVS问题,图像分辨率均为1 600×1 200像素。最后在49或64个位置中记录场景,从定向到漫射共7种不同光照条件。

3.2 实现细节

在DTU数据集上训练本文网络,并在评估集上进行评估。根据MVSNet(Yao等,2018)中的给定GT生成深度图进行数据预处理。由于内存需求,在训练和测试阶段,输入图像分辨率设置为 1 152×864像素,视图数量设置为3,即每个训练样本由 1幅参考图像和2幅源图像组成,共训练27 097(49×7×79)幅图像,测试7 546(49 × 7 × 22)幅图像。初始学习率为0.001,对于平行假设深度范围,在从dmin= 425 mm到dmax=935 mm的192个虚拟平面(即D= 192)上均匀采样每个参考图像,间隔大小为1.06。本文将流迭代设置为I= 3,深度间隔分别为2 mm、4 mm和8 mm以进行深度细化。网络在Pytorch(Furukawa和Ponce,2010)上实现,在1个NVIDIA RTX 2080Ti显卡上运行,batch size设置为1。Adam(Kingma和Ba,2017)用做优化求解器(β1=0.9,β2=0.999),训练 16个epoch。

3.3 基准测试结果

为证明本文方法的有效性,与现有传统方法Colmap(Schönberger等,2016)、Gipuma(Galliani等,2015)、Tola(Tola等,2012)、Camp(Campbell等,2008)和Furu(Furukawa和Ponce,2010)以及基于学习的方法:SurfaceNet(Ji等,2017)、PruMvsnet(Xiang等,2020)和Mvsnet(Yao等,2018)进行对比。使用DTU官方网站提供的评估协议,对重建准确性(accuracy,Acc)和完整性(completeness,Comp)的平均误差,以及两者的平均值即整体性(overall,OA)进行评估。准确性表示估算的点云与GT之间的距离,完整性定义为从GT到估算的点云之间的距离。这3个评价指标值越低表示重建质量越好。

本文方法与现有传统方法和基于学习的方法的对比结果如表1所示。可以看出,与Yao等人(2018)的方法对比,本文方法在整体性和完整性方面分别提升了1.5%和7%,表明了本文方法的有效性。DTU数据集基准测试效果如图5所示。

从DTU数据集的基准测试结果图以及表1可以看出,本文网络在整体性和完整性指标方面有了一定改进,但最终呈现出来的效果图还是有一定缺失,例如图5(c)中scan4和scan24重建效果图的边缘缺失以及scan9和scan33重建效果图的底部缺失。出现此现象的原因可能是:在代价体正则化阶段由于较大的感受野使得重建的边缘部分过于平滑,所以造成了效果图有部分缺失。完整性改进主要是通过将注意力机制与MVS集成在一起实现的,从而使该模型可以学习预测更精确的深度值。

表1 不同方法的测试结果对比Table 1 Comparison of test results among different methods /mm

整体性改进主要是通过将用于特征提取模块的注意力机制和多层U-Net网络将特征提取和正则化网络的低级和高级功能的集成。特征提取模块的注意力机制可以专注于学习重要信息,多层U-Net网络可以提取不同尺度的上下文信息和邻近像素信息,最终通过估计精确的点位置重建逼真的3D模型。

3.4 消融实验

为了进一步验证本文方法的有效性,进行了消融实验和定量分析,用来评估框架中关键组件的优势。针对本文提出的注意力机制和多层U-Net网络,在DTU数据集上进行了4组对比实验,并使用准确性和完整性结果衡量重建质量,实验结果如表2所示。其中,FE表示原特征提取模块,U-Net表示原代价体正则化模块,FA表示本文提出的特征提取模块,MU-Net表示用于代价体正则化的多层U-Net。运行时间均为训练集单个epoch的单个模型参数的运行时间均值。

图5 DTU数据集的基准测试结果Fig.5 Benchmark test results of DTU datasets((a)depth maps;(b)confidence maps;(c)confidence maps)

从表2可以看出,1)在原来的基础上加注意力机制,整体性、准确性和完整性指标分别提高了0.6%、0.7%和0.4%,内存增加了331 M,模型参数增加了3 168,但运行时间相当于原来的4.9%,这归因于注意力机制可以捕获更重要的信息,便于进行深度推理。2)在原来的基础上加多层U-Net,整体性、准确性和完整性指标分别提高了2.3%、3.2%和1.5%,内存增加了2 473 M,模型参数减少了1 408,运行时间相当于原来的10.3%,这归因于多层U-Net可以同时提取上下文信息和邻域信息,便于对代价体进行体滤。3)在原来的基础上同时加注意力机制和多层U-Net,整体性和准确性指标分别提高了2.1%和4.9%,内存增加了2 343 M,模型参数增加了1 760,运行时间相当于原来的10.5%,该方法集成了来自特征提取和正则化网络的低级和高级功能的优势,不仅提高了重建结果的清晰度和精度,而且在一定程度上得到了更高质量的重建效果。DTU数据集中不同scan数据的效果如图6所示。

表2 消融测试结果对比Table 2 Comparison of ablation test results

图6 DTU数据集中不同scan数据的效果图Fig.6 Effect pictures of different scan data in DTU datasets

4 结 论

本文提出一种基于注意力机制进行3D重建的端到端深度学习架构,通过改进基于深度图的深度学习体系结构进行MVS重构,同时应用多层U-Net网络对代价体进行正则化。注意力机制用于特征提取模块,专注于学习重要信息进行深度推理,从而捕获大规模特征并获得高分辨率图像。多层U-Net网络则用于对代价体进行正则化,即对代价体进行降采样,并提取不同尺度的上下文信息和邻近像素信息对代价体进行过滤。在DTU数据集上的实验结果表明,本文网络优于现有的其他网络,在整体性和完整性方面分别提升了1.5%和7%,达到44.7%和45.7%,同时得到了更高质量的重建效果。但由于在网络模型中增加了注意力机制和多层U-Net,导致参数增多,内存占用也更大。

由于内存需求,本文网络对输入图像的分辨率设置较低,而且只适用于大型室内数据集。如何在现有基础上提高重建准确性以及应用于大型室外数据集是未来的一个研究方向。

猜你喜欢
视图特征提取代价
同步定位与建图特征提取和匹配算法研究
幸灾乐祸的代价
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
幸灾乐祸的代价
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于曲率局部二值模式的深度图像手势特征提取
代价
《投影与视图》单元测试题
Django 框架中通用类视图的用法