基于深度学习的单幅图像三维重建算法
2020-03-24朱莉,陈辉
朱 莉,陈 辉
(上海电力大学 自动化工程学院,上海 200090)
三维重建是计算机视觉领域具有挑战性的问题之一,根据真实图像中的数据重建出具有精确几何信息的三维结构模型.目前流行的方法是多目图像重建,需要对于目标物体进行多角度测量,耗费资源,相比之下单幅图像的三维重建输入简单,更适合便捷式三维重建的应用场合,如逆向工程、模式识别、机器人导航[1]及无人驾驶领域中.传统的单幅图像三维重建主要包括基于几何外形重建和模型重建的算法.基于几何外形的方法以简单的方式提取表面信息,但对光照和灰度要求高,基于模型的方法利用先验知识在特定物体上取得较好的重建,但很难应用于所有类别.现研究中基于单幅图像的重建.问题分为物体和场景两种重建,本文中将对单个物体的重建进行探究.随着深度学习在计算机视觉领域的应用,目前数据的表达方式主要有体素、点云和网格三种,在不同的研究任务中,不同三维数据的表达方式各具优势.本文针对这个问题选择四种代表算法进行深入研究,并得出结论.
1 单幅图像三维重建研究现状
单幅图像三维重建的主要思想是从给定的单幅图像中提取目标的二维几何信息,并利用先验知识来推测出被遮挡的部分,重构出完整的三维结构,但重建过程中仍会存在图像自身的属性问题、重建的不适应问题、地面的模糊性以及类间差异和类内差异.
围绕深度学习的发展,基于体素表示的方法最先提出,将CAD模型进行体素化,表示为二值或实值的三维张量.2015年,Wu等[2]提出3D shapenets,利用卷积深度置信网络将3D几何外形表示为3D体素网格上二值变量的概率分布,通过吉布斯采样预测其表面形状类型,并填补未知区域生成三维体素模型.为克服缺乏纹理、镜面反射和基线等特征匹配问题,2016年Choy等[3]提出3D-R2N2,以端到端的方式自动学习,重建出单视图或多视图的三维体素模型.针对单幅图像重建的数据集中出现的类内和类间差异问题,Kanazawa等[4]结合卷积神经网络提出WarpNet网络框架,利用细粒度数据集的结构在类别和姿势变化时,预测不同图像之间的对应关系,实现与监督方法相似质量的重构.为更好的利用先验知识,Wu等[5]提出,MarrNet模型,在真实图像上进行端到端的训练,顺序估计出2.5D草图和3D对象形状.为克服体素重建易受信息稀疏的缺点,Fan等[6]提出PSGN生成点云表示的三维模型,利用条件采样器解决不确定性与固有模糊性,有很好的重建效果.体素和点云表示存在计算复杂和缺乏更精细的几何形状等问题,基于网格表示的深度学习模型被提出.但图像和网格之间的转换或渲染易产生离散操作阻碍反向传播.Wang等[7]基于图形的卷积神经网络来表示三维网格提出Pixel2Mesh,通过逐步变形椭球,利用从输入图像中提取的感知特征生成正确的三角形网格表示的三维形状.Groueix等[8]提出AtlasNet,通过将一组正方形映射到3D形状的表面来局部地近似目标表面,多个这样的正方形使用非磁盘拓扑对复杂的表面进行建模.
为便于比较三种不同表示方法的优劣性,以及适用于什么研究场合及方向,选择基于体素表达的3D-R2N2网络、基于点云表达的PSGN网络、基于单片网格表达的Pixel2Mesh网络和基于多片网格表达的AtlasNet网络这4种网络来进行定性定量的分析.
2 几种典型的不同三维表示的点云重建算法
2.1 基于体素表达的3D-R2N2网络
3D-R2N2网络的主要思想是从大量的数据集中学习一个二维图像到对应三维底层模型的映射,利用数据驱动的方法构建的3D循环重建神经网络(3D-R2N2).以多个或单个图像作为输入,输出三维像素块的对应3D重建模型.3D-R2N2网络都由三部分组成:Encoder(2D-CNN)、LSTM(3D-LSTM)以及Decoder(3D-DCNN).见图1.
图1 3D-R2N2网络架构
Encoder:主要是将输入的127*127的RGB图像变换成低维的特征矩阵,然后送到LSTM单元进行循环学习,选择性地更新它们的单元状态或保持状态.其中CNN在每两个卷积层之间都会增加一个残余连接,来有效的加速深度神经网络的优化过程.
LSTM:是3D-R2N2的核心部分,由一组具有受限连接的结构化LSTM单元组成,每个单元负责重建最终输出的特定部分,与循环神经网络(RNN)类似,允许网络保留读取的内容,并在读取新图像时更新内存.
Decoder:采用一个简单的解码器网络,包含5个卷积和一个深度残差网络,其中包含4个残余连接,最后是最终卷积,卷积层采取3*3*3大小的卷积核,来处理被赋予三维的结构信息的像素数据,解码LSTM隐藏状态,并生成最终的3D概率体素重建.
2.2 基于点云表达的PSGN网络
PSGN网络的结构见图2,主要包括点云生成模块、点云损失函数设计和生成多个预测模型三部分.
图2 PSGN分布式建模模块
点云生成网络:具有编码器和预测器两个阶段,见图3.编码器是卷积层和ReLU层的组合,输入包括输入图像I与随机向量r,r用来干扰I的预测,目的是将I和r的输入对映射到嵌入空间.预测器一种方案是由完全连接层组成,独立预测各点的坐标,描述复杂的结构时能表现出良好的性能,但该预测器不能充分利用自然几何统计.第二种网络具有两个预测分支,完全连接(fc)分支和反卷积(deconv)分支.改进的网络不仅在复杂结构中具有很高的灵活性,而且能更好的利用几何平滑性,反卷积分支通过权重共享减少参数,同时Hourglass 卷积网络反复进行编解码,可以更好地联合全局和局部信息.
图3 PSGN点云的生成网络结构[6]
点云损失函数: 选取了两种距离Chamfer distance (CD) 和Earth Mover0s distance (EMD) 作为候选,来比较预测的点云和地面真值.
生成多个预测模型:实验中采用Mon损失或者VAE方法来进行不确定性的建模,在重建结果上,能产生多个可能的输出来解决单幅图像三维重建的不适定问题.
2.3 基于网格表达的网络
(1)基于单片网格表达的Pixel2Mesh网络
Pixel2Mesh网络是基于图形的卷积神经网络,通过逐步变形椭球,采用粗到细的策略,定义各种网格相关损失来捕捉不同层次的特征,从端到端生成三角形网格表示的三维形状的深度学习体系结构.
图4 Pixel2Mesh网络结构[7]
Pixel2Mesh整个网络包括一个图像特征网络和一个级联的网格变形网络.图像特征网络是2D CNN结构,见图4,可从输入图像中提取感知特征,网格变形网络可利用该特征将椭圆形网格逐渐变形为所需的3D模型.级联的网格变形网络是一个基于图的卷积网络(GCN),其中包含三个变形块.每个变形块都会获取一个表示当前网格模型的输入图,并在顶点上附加3D形状特征,并生成新的顶点位置和特征.而图形解池层增加了顶点数量,以增加处理细节的能力,同时仍保持三角形网格拓扑.
(2)基于多片网格表达AtlasNet网络
AtlasNet网络主要思想是基于3D表面生成的,由可学习的参数化组成,受表面正式定义为局部类似于欧几里德平面的拓扑空间的启发,通过将一组正方形映射到3D形状的表面来局部地近似目标表面,多个这样的正方形允许网络使用非磁盘拓扑对复杂的表面进行建模.
AtlasNet网络重点在于推理过程,分为两大模块,学习编码目标物体表面以及网格的生成.学习编码目标物体表面主要解决输入3D点云时如何自动编码3D形状以及输入RGB图像时如何重建3D形状.对于自动编码器,采用PointNet的编码器,将输入点云转换为尺寸为k = 1024 的潜矢量,对于图像,采用ResNet-18作为编码器,解码器采用4个完全连接的层,大小分别为1024、512、256、128.训练中对学习到的参数化以及真值点云定期采样,以避免过度拟合.网格生成过程是将单位正方形上的规则网格转换为3D,以3D方式去连接之前以2D方式连接的点,此方法可以生成高分辨率网格.为了避免网格不闭合或出现空洞或重叠,采用对表面进行密集采样并使用网格重建算法,最终生成闭合高分辨率网格.
3 实例分析
在三维重建研究中,针对三种不同表示,至今仍没有一个完全统一的评价指标[8].本实验中采用以下指标对这四种网络进行分析,其中体素表示和点云表示采用交并比IoU指标,网格表示采用F-Score[9]和Metro指标,最后采用倒角距离CD和地球移动距离EMD对三种三维表示的重建精度进行对比.
3.1 评价指标
(1)交并比IoU
测量预测形状体积与真值体积之间的交集与两个体积的并集的比率,因此处理基于表面重建的其他表示时需要对重建的和真值模型先进行体素化.
(1)
(2)F-Score
从预测结果和真值中统一采样,这些点可以在特定阈值τ内找到彼此最近邻居,然后计算F-score作为精度.对于F-Score,越大重建效果越好.
(3)Metro
为了说明网格的连通性,使用公开可用的Metro软件,使用Metro标准比较了输出网格和地面真实网格的平均欧式距离.
(4)倒角距离CD和地球移动距离EMD
(2)
(3)
3.2 实验结果分析
实验中所有环境配置见表2,并可视化这几种算法在shapenet数据集的飞机类别上的运行结果见图5,各种指标的结果比较见表3.
表2 实验环境配置
图5 三种不同表示的网络重建结果
在图5中,第一个为原始输入图像,从左至右依次为3D-R2N2网络、PSGN网络、Pixel2Mesh网络和AtlasNet网络生成图像.从图中的视觉外观中,基于体素表示的3D-R2N2和基于网格表示的Pixel2Mesh和AtlasNet更注构造物体表面这个曲面上的点,而基于点云表示的PSGN更倾向于生成3D形状体积内的点.3D-R2N2模型的分辨率较低,PSGN生成的模型精细度不够,错过物体的薄特征比如飞机的机翼上的四个发动机,相比之下,PSGN的目标函数鼓励保留精细结构.但PSGN的模型由于点云之间缺少关联信息,导致表面信息的模糊性,而Pixel2Mesh 和AtlasNet的模型相对前两种表示而言,更注重表面信息,因此生成的模型更加逼真,更接近于原来的真实图像.表3中显示了评估标准数据,从表格中可以看出PSGN的CD和EMD值小于Pixel2Mesh,但是由于点云具有最大的自由度而这种自由容易导致较小的CD和EMD,但从图中发现Pixel2Mesh的重构模型更逼真.
表3 不同表示的网络重建评估数值
根据实验的可视化结果得出以下结论.
(1)着重研究物体表面的课题研究,一般选用体素表达与网格表达.体素和点云这两种表示都失去了重要的表面细节,而且重构曲面模型也是很重要的,相比之下网格,能够建模形状细节.
(2)针对研究带孔和精细细节的对象时一般选用体素表达.由于点云的稀疏性与点云之间的不关联性,不适用基于点云表示的模型,网格通常是用渲染管线或可微分的渲染器进行调整以匹配图像的统计信息,基于网格表示的模型难以一致的方式生成,此时更适宜选用体素表达.
(3)目标物体物体结构比较复杂时优先选择体素表达.网格通常由三角形网格构成,因此网格能够很好地描述目标对象的细节层次,局限于网络拓扑的可变性,使得网络对目标物体的复杂性比较敏感,当目标物体的结构比较复杂时,网格重构的精确度和效率降低.基于体素的网络获取三维物体的特征也比较多,因此可优先选择基于体素表达的网络.
(4)研究方向更倾向于重建物体的变换或应用于其他任务时,可优先选择点云表示.
4 结 论
基于深度学习的单个物体三维重建中,不同三维表示的选择在不同的任务以及与神经网络的结合上会产生不同的效果,也直接影响着网络的选择构建、损失函数的设计以及输出模型的精度,因此三维表示的选择至关重要,应根据研究内容合理选择三维表示方式.