单目视觉的深度与位姿联合预测网络
2021-12-14贾瑞明刘圣杰王一丁
贾瑞明 李 彤 刘圣杰 苗 霞 王一丁
(北方工业大学信息学院 北京 100144)
0 引 言
计算机视觉的发展为机器人领域的研究带来了极大的突破,机器人实现判断周围环境和自主运动的关键是进行精确的环境三维重建。环境三维重建的目标是从一组给定的彩色图像中恢复出场景的三维结构,可以表示为深度图、点云或者三维体。其中深度图由于可转换性好、容易获取等原因,应用最为广泛。在三维重建的过程中,给定每幅图像的相机位姿有助于捕获图像间的几何关系,使得重建的结果更加准确。
深度信息是理解场景中几何关系的重要线索。例如,具有颜色和深度通道的RGBD图像可以应用于各种任务,如三维模型重建、场景识别和人体姿态估计等。深度可以从立体图像对或运动序列中估计,这为理解三维结构提供了相对丰富的信息。相反地,从单幅图像中估计深度更具有挑战性和模糊性,因为无法做到立体图像或时态帧之间的对应匹配。早期深度图预测方法依赖于手工标注的特征和图模型[1-2],存在预测质量差的问题。最近的方法[3-5]多使用卷积神经网络(Convolutional Neural Networks, CNN)以自动学习具有判别性的特征并且取得了较好的效果。Eigen等[6]提出了一个多尺度CNN,用于融合不同语义层的粗略预测和精细预测结果。一些研究者们研究了用CNN实现条件随机场(Conditional Random Field, CRF)模型,从而实现整个深层网络的端到端优化[7-8]。
传统相机位姿预测方法[9-11]通过图像间的特征匹配找到二维图像和三维模型之间的映射,从而得到相机的精确位姿。三维模型通常由从运动恢复结构(Structure From Motion, SFM)重建得出。得益于深度学习的发展,近年来许多基于深度学习的方法被提出。2015年Kendall等[12]首次提出了一种端到端的网络PoseNet以直接从输入彩色图像预测出相机的6自由度位姿。PoseNet使用GoogLeNet作为主干网络,将网络顶层修改以适用于回归任务。其他方法[13-15]通过使用LSTM结构或ResNet对PoseNet进行改进。
多任务学习是一种可以促进不同任务间知识共享和迁移的深度学习训练方式,它可以有效提高网络的学习效率。不同的计算机视觉任务通常可以被集成在同一个网络框架中。文献[16-17]使用其他的任务如语义分割或表面法向量来辅助深度图的预测。文献[18]设计了一种多任务预测蒸馏网络来进行深度图预测和场景分析。受多任务思想启发,本文设计了深度和相机位姿两个任务联合预测的算法。
本文创新点如下:
(1) 设计了一种深度位姿联合预测网络(Depth-pose Prediction Network,DPNet)。网络接受RGB图像作为输入,直接输出相机位姿和深度图。
(2) 网络以编解码结构为基础,设计了一个分支解码器,包括深度图解码器与位姿解码器。深度图解码器直接输出深度图,位姿解码器又分为位置和姿态两路以减少位置和姿态同时预测带来的互相干扰。
(3) 在公开数据集Microsoft 7-Scenes上进行了详尽的实验,并与多种算法对比,证明了本文算法的有效性。
本文算法不需要更多的附加信息,减少了对数据集采集的要求;联合预测不仅解决了位姿和深度图同时预测的问题,而且有更好的精确度。
1 深度-位姿联合预测网络
本文DPNet总体结构如图1所示,输入为RGB图像,经过编码得到提取的高级语义特征,再将这些高级语义特征分别送入深度图解码器和位姿解码器进行解码,最后输出预测的深度图和相机位姿。图中虚线表示跳跃连接,其将编码器不同阶段的特征图引出,与解码器对应阶段的特征图相加从而实现空间信息的补充及恢复。
图1 联合预测网络结构
DPNet的解码器部分的结构为双路分支结构,位姿解码器中又分为位置和姿态两个分支,两个分支之间具有相辅相成、互相促进的作用,在反向传播梯度时共同对共享的网络部分的权重调整造成影响。在DPNet中,深度图预测和位姿预测互相促进。位姿预测中位置和姿态任务又互相促进,共同提升网络精度。
1.1 编码器
在联合预测网络中,编码器是从图像中提取抽象特征的重要结构。神经网络相对于传统算法一个显著的不同点就是特征不需要人工标注,直接由卷积层提取特征,通过训练网络权重不断让网络学习如何提取有效特征。
本文采用Inception-Resnet-v2[19]作为编码器,将原网络中最后的dropout层、全连接层和Softmax删去以适应本文网络,结构如图2所示,阴影部分表示被删去的层。Inception-Resnet-v2由Google团队提出,其结合了ResNet[20]的思想,将残差模块中的残差结构替换为多尺度结构。Inception-Resnet主要由A、B、C三种模块构成,三种模块的卷积核尺寸、通道数、分支数不同。模块为得到多尺度特征,还加入了最大值池化层(max pooling)以及多尺度卷积层。这种结构既使神经网络在宽度和深度上都得到了拓展,又使梯度消失和梯度爆炸问题得到了改善,同时权重的梯度在反向传播时变得更加有效,网络收敛速度得到了显著提高。图2中Reduction 模块用于降低分辨率同时提升通道数。
图2 Inception-Resnet-v2结构
1.2 位姿解码器
位姿解码器用于直接预测相机位姿。每幅图像都有其对应的相机位置t和q,用于描述拍摄时相机的状态。位置由世界坐标系下的三个坐标值组成,姿态由一个四元数表示。由于使用欧拉角表示姿态会造成“万向锁”的现象,旋转矩阵表示姿态会产生参数冗余,故本文选用四元数来表示相机姿态。
考虑到位置和姿态具有如下区别:(1) 摄像机姿态的平移和旋转有不同的量纲,一个是距离,另一个是角度;(2) 摄像机平移和旋转的变化导致在二维图像有不同表示。平移变化不仅会导致两个对象之间的遮挡关系发生变化同时也会引起视差、放大或缩小图像。旋转中俯仰角和偏航角的变化会导致观察范围的改变。综上,设计双路位姿解码器将位置和姿态分开进行预测以保证二者之间没有互相干扰。
如图3所示,位姿解码器由两个反卷积层及两路分支网络组成,每路分支网络包含三个多尺度融合模块(Multi-scale Fusion Module, MFM)以及一个全局均值池化层。反卷积层(图3中“Deconv”模块)使用半径为2、步长为2的卷积核对编码后的特征图进行升采样同时降低通道数,卷积层则使用半径为1、步长为2的卷积核进行卷积操作,全局均值池化层(图3中“Pooling”模块)用于提取全局信息,做到了对解码后的特征信息的充分利用。跳跃连接加在每个反卷积层之后,图3中未画出。
图3 双路位姿解码器结构
提出的MFM结构如图4所示,使用了1×1和3×3两个尺度的卷积核对反卷积之后的特征图进行特征映射以及降维,之后将特征图进行拼接,最后使用ReLU激活函数进行激活,其中:k表示卷积核;s表示卷积的步长。不同尺度的卷积可以获得不同的感受野,从而提升特征提取能力。
图4 MFM结构
1.3 深度图解码器
深度图表示为物体表面到相机光心的距离,为三维重建提供了非常重要的三维信息。
深度图的预测通常使用全卷积网络实现,在编码之后会有相应的反卷积层将特征图恢复至与输入图像相同大小。DPNet深度图解码器结构如图5所示。与位姿解码器相同,深度图解码器的前两个反卷积层之后也各加入一个跳跃连接,第三个反卷积层之后使用图像双线性插值来调整特征图尺寸以便最终得到与输入相同的特征图尺寸。反卷积层使用与位姿解码器相同的卷积和参数。
图5 深度图解码器结构
1.4 损失函数
神经网络依靠损失函数来迭代地更新网络权重,损失函数反映的是预测结果和实际结果之间的差别。由于本文网络拥有位置、姿态、深度图三个子分支,所以创建多任务损失函数如下:
L=Lt+Lq+Ldepth
(1)
(2)
(3)
(4)
式中:x表示深度图中像素点的坐标;N表示所有像素点的个数;dx表示深度图中对应像素点坐标x处的灰度值。
式(2)和式(3)将预测的位姿损失表示为预测值与真实值的二范数形式。预测出的姿态四元数需要进行归一化以避免计算值溢出上界。
2 实验及结果分析
2.1 数据集和训练设置
本文使用公开数据集Microsoft 7-Scenes以评估网络性能。数据集包含七个场景的室内环境图像,每个场景都包含数量不等的分辨率为640×480的RGB图像和未修正的深度图。图像中具有复杂的纹理信息、不同的光照及遮挡情况,为相机位姿的预测带来了极大的挑战。图6展示了数据集七个场景图像的采样。
图6 7-Scenes数据集
使用一块NVIDIA TITAN RTX GPU在TensorFlow框架下训练网络。优化器使用Adam,学习率初始值设为1e-3,权重衰减率为5e-4。RGB图像首先经过重新调整大小至343×343,再经过随机裁剪送入网络进行训练。编码器的权重使用在ImageNet上训练的权重进行初始化。
2.2 位姿预测实验结果
本文将实验结果与LSTM-Pose等先进方法进行比较,表1给出了七个场景测试的位置误差和姿态误差。误差遵循其他方法的计算规则,位置误差使用欧氏距离度量,姿态误差利用四元数的运算确定,取每个场景所有测试集图片的中位数进行评估。
表1 本文与其他算法的位置误差和姿态误差对比
续表1
本文算法在七个场景的测试误差均为最小,其中位置误差比LSTM-Pose网络平均提升了16%,姿态误差平均提升了11%,两者平均提升13.5%,证明了本网络的有效性。
2.3 深度图预测实验结果
原始数据集的深度图存在尺寸与RGB图不一致、有数据点缺失等问题,在进行实验前先对数据进行了匹配,训练时将缺失的数据点的梯度设置为不进行反向传播。
由于目前几乎没有文献使用本文数据集进行深度图预测,所以仅在此展示实验结果。图7展示了在“chess”场景下原始RGB图、原始深度图标签与预测出的深度图的对比。
(a) RGB图 (b) 原始深度图 (c) 预测深度图图7 深度图预测结果
可以看出预测的深度图有效地填补了黑色空洞,但是由于缺失像素过多,预测效果并未达到完全解决空洞的问题。第二排的显示器、第三排的显示器和架子腿、第四排的架子腿和椅背,以及第五排的桌面和夹架子腿都出现了大面积的预测深度值不准确。由于在同一室内场景进行预测,输入RGB图拍摄时的相机位姿间隔较小,所以像素值未缺失部分预测出的深度值较为准确。
表2给出了深度图预测的度量指标性能。其中包含:
平均相对误差(Average relative error, rel):
(5)
均方根误差(Root mean squared error, rmse):
(6)
对数平均误差(Mean log10 error, mlog):
(7)
关于阈值t的精确度:
(8)
我们还使用了文献[22]提出的网络及文献[23]提出的网络FLEDNet训练了本文数据集。
表2 深度图预测各性能指标展示
从性能指标来看,本文网络预测像素深度值和真实值之比1.25范围内的像素点预测精确度有88.3%,相比于文献[22]的方法有12.6%的提升,相比于FLEDNet有3.8%的提升,具有良好的深度图预测性能。
2.4 编码器对比实验
为了探究不同编码器的性能,本文测试了目前深度学习中已提出的几种高性能网络。编码器的层数通常对应于编码能力,表3给出了对比结果,从上往下层数逐渐加深。
表3 几种编码器结构性能对比
可以看出,Inception-Resnet相比其他网络更深也更宽,取得了最好的结果。
2.5 网络结构对比实验
2.5.1位姿解码器中分支位置选择
图3中位置和姿态两个分支从两层反卷积后分开,不同分离位置会对网络性能产生不同影响,过早的分离会导致公共部分网络学习到的表示不够健壮,过迟的分离则会导致两者之间干扰增加。为此我们设计了几个不同分离节点的对比实验,在场景“chess”的对比结果如表4所示。
表4 不同分离节点性能对比
随着分离节点的推后,位姿预测精度逐步提升,但接着推后则造成了精度的降低,说明在两层反卷积后将位置和姿态分开预测是最佳选择。
2.5.2单任务/多任务实验对比
为了探究网络使用单任务分别预测位姿或深度图和多任务同时预测位姿和深度图的不同性能,设计了以下实验:
(1) 单路位姿。网络仅仅使用单任务训练(相机位姿预测),输入为RGB图像,输出为位姿参数,没有深度图解码器。
(2) 单路深度。网络仅仅使用单任务训练(深度图预测),输入为RGB图像,输出为预测的深度图,没有双路位姿解码器。
(3) 双路输出。深度图和位姿参数通过两路子解码网络分别输出,共计两路输出。
(4) 三路输出。DPNet结构,其中深度图通过一个子网络输出,位置和姿态参数通过两路子网络分开输出(如图1所示),共计三路输出。
为了说明对比效果,三种实验均在“chess”场景下进行,表5给出了实验结果。
表5 几种网络结构性能对比
实验结果表明,DPNet使用的联合学习方式无论对于深度图预测还是相机位姿预测,精度都有显著的提升,证明了本文DPNet的有效性;同时三路输出和双路输出的实验对比证明了分别预测位置和姿态确实避免了两者间的干扰,提升了网络预测精度。
3 结 语
本文利用多任务思想,设计了一种深度-位姿联合预测网络,将深度图以及相机位姿使用相同的编码器以及不同的解码器联合训练,使得任务间可以相互促进。将位置和姿态分开进行预测,消除了两者间的串扰。实验结果表明本文算法的位姿预测准确率和深度图预测质量较高,相比LSTM-Pose方法,位姿平均精度提升了13.5%,相比FLEDNet,深度图预测精度提升了3.8%。