基于像素语义信息的单图像视图生成深度预测方法

2023-05-08 03:01孔维罡郭乃网周向东
计算机应用与软件 2023年4期
关键词:热图深度图右图

孔维罡 郭乃网 周向东

1(复旦大学计算机科学技术学院 上海 200433) 2(国网上海市电力公司电力科学研究院 上海 200437)

0 引 言

深度图是物体的三维表示形式之一,一般通过专用设备来获取。由于深度图像包含了场景距离信息,计算机就能借此来进行空间感知等工作。因此,深度图在很多计算机视觉相关领域有着广泛的应用,是3D目标检测[1]、自动驾驶[2]、机器人视觉[3]的重要组成部分。现有深度预测方法大多都是双目深度预测,即需要立体视图对来估计视差,但是绝大多数图像都没有伴随的另一幅视图,所以单目深度估计相比双目具有更好应用前景和研究价值。

一般来说根据单幅图像估计图像像素的深度信息非常困难。为解决这一难点,研究者们认识到同一场景下的不同视角的图片之间是有很大的关联性的。因此参考双目图片预测像素深度的方法,单目图像深度预测可以先根据给定的单目图像对视差图像进行预测(即根据左视图,预测生成右视图),然后生成视差并进行像素深度的计算。

传统的单目深度估计方法效果较差,而随着深度学习的发展,机器计算能力的加大以及数据规模的扩大,单目深度估计有了新的发展方向和新的挑战。Eigen等[4]提出了一种两个尺度的网络结构,先用第一部分网络预测出低分辨率的深度图,然后用第二部分网络去提炼这个输出,最后得到深度结果。Wang等[5]意识到深度信息和图片语义有着较强的关联性,并利用二者的相似性建立了语义分割和深度预测的统一框架,二者相辅相成得到较好的预测效果。除了语义分割之外,Zhang等[6]先用RGB图像预测表面法线和遮挡边界,然后将之与原始深度值结合,求解所有像素点的深度。而Cao等[7]把图像根据视点的远近分层,对每个像素进行分类来预测每个像素的深度标签。Kuznietsov等[8]把传感器得到稀疏的深度数据和无监督的方法结合起来,建立了半监督的深度预测模型。但无论是有监督还是半监督,这些方法都需要使用大量的真实深度数据,而真实深度需要借助红外传感器或者激光雷达,获取难度较高,成本较大。Godrad等[9]设计了一种由两个网络组成的自监督损失架构来估计单幅图像的深度值,该方法包括编码器-解码器架构的深度估计网络和基于残差网络的姿态网络,效果较好,但需要同一场景连续的图像帧参与训练,这限制了应用场景。

学术界也对视图生成进行了深入的研究。早期视图生成方法基于已知的不同视角的三维几何关系,使用基于图片的绘制技术生成新的视角,比如全景图、视图插值、视图变形、全光模型、光场等方法[10]。近年来视图生成方法大多是基于神经网络实现的,这些方法大致可以分为基于深度图像的绘制和基于多视图的视图生成。文献[11]利用具有真实深度的数据作为监督,通过深度估计、图像分割、深度细化三个网络结构得到点云和深度图,进而渲染得到连续的新视图。文献[12]采用无监督的深度估计网络估计致密深度,然后使用前向映射方法将输入投影到对应的新视图。文献[13]为了处理物体遮挡过多、图像深度值变化多样等复杂场景问题。在可学习的梯度下降方法的基础上提出了基于稀疏视点和不同深度图像层的视角合成方法。上述方法中,基于深度的绘制需要获取成本高的地面真实深度作为监督。而基于多视图的生成方法需要同一场景的一些不同角度的视图。但是绝大多数图像都是没有伴随多角度视图的,这极大限制了方法的适用性。文献[14]设计了一种基于变换自动编码器的结构,对给定单一原图进行编码,然后将原图和目标的映射应用于该编码,通过神经网路解码得到深度图,然后根据相机参数把深度图投影到原图上进行致密匹配并编码为光流图,最后借助光流图把原图按像素变换得到目标结果。无监督的单图像视图生成由于缺少深度语义信息,生成结果一般不如前两种视图生成方法,但这类方法不需要真实深度信息或者三维信息作为监督,应用场景更广泛,成本也更低。

Deep3D[15]使用卷积神经网络对单图像提取特征,生成不同视差下的概率图,合成对应的新视图,然后用原图和新视图计算深度图,方法不需要真实深度数据作为监督,有比较好的效果。单图像视图生成和深度预测任务输入为单幅RGB图像(以下简称左图),输出为合成出的同一水平位置另一相机下的视图(以下简称右图)以及输入图像对应的深度图。但该类方法生成的右图中普遍存在图像扭曲问题,针对这个问题,本文基于CenterNet[16]方法,使用深层聚合网络[17](Deep Layer Aggregation,DLA)提取原始左图的语义信息,生成物体中心的中心点热图。本文提出了物体中心点概率分布和视差概率分布加权结合的概率模型。补足的物体语义信息会使生成右图的物体位置更加精确,从而产生更好的右图和更准确的深度图。

本文创新性地引入目标检测模型,将像素的对象类别概率和视差概率结合起来,改进了现有视图生成方法,并使用SGBM算法通过原图和生成视图计算得到深度图。实验表明本方法与现有相关工作相比具有更好的视图生成和深度估计性能。

1 方法架构

我们设计并实现了一个基于像素语义信息的视图生成和深度预测方法,其设计思路如图1所示。

图1 本文方法设计思路

为解决生成右图位置或轮廓不精确的问题。本文借用CenterNet生成包含物体中心点信息的热图,将其与视差概率图相结合,即赋予物体中心点附近像素更高的权重,使其与背景像素距离变大,在训练过程中逐渐逼近真实视差或者物体真实轮廓。

本方法主要由以下三个部分组成:

(1) 得到中心点热图。对于输入图像,将其输入CenterNet的前馈DLA网络中提取特征生成中心点概率热图(Heatmap),每一幅热图中的每一像素点的值服从该位置物体类别的高斯分布,本文这里暂不考虑类别因素,仅突出像素点是否为物体中心,将其归一化为单一类的中心点热图。

(2) 得到视差概率分布并生成右图。将输入图像输入由卷积层和反卷积层组成的神经网络,得到不同视差下的概率分布图。将概率图和上一步的中心点热图以条件概率的形式结合起来,得到加权后的视差概率图,最后在选择层把左图和视差概率图相结合,二者匹配计算得到右图。

(3) 计算得到深度图。将右图和原图作为双目立体图像对利用SGBM(Semi-global block matching)[18]算法就可以计算得到深度图。

2 模型设计

本文提出的方法主要基于目标检测模型CenterNet和视图生成模型Deep3D这两个在各自问题上表现较好的模型。本模型通过引入像素的物体中心概率,对生成视图的视差概率进行加权筛选,使其能更准确地生成物体和背景的位置。其总体框架如图2所示。

图2 总体架构图

2.1 CenterNet像素语义识别

CenterNet是一种anchor-free的目标检测算法,它通过将要检测的目标简化到一个中心点,训练网络提取热图,然后回归得到目标的大小、位置、方向等其他属性,其架构图如图3所示。

本文方法基于CenterNet框架,使用DLA网络提取特征,生成中心点热图,用以辅助视图生成。

2.2 预测中心点热图

如图4所示,本文使用DLA-34网络提取特征得到4倍下采样的中心点概率热图。图中数字代表图片步长,实线框代表步骤,虚线框代表求和节点。实线箭头是下采样过程,虚线箭头是可变卷积,点线箭头是上采样过程。DLA是一种迭代网络结构,其浅层提取的几何信息更精细,深层得到的语义信息更丰富,网络从最浅、最小的尺度开始,往下迭代到更深、更大的尺度,以达到聚合传播过程中细化特征的效果。另外,还在DLA-34结构中所有上采样层的前面添加了3×3的可变卷积层,并跳跃连接低层和输出层,使图像感受野更加精确,提高下采样特征图的分辨率。

图4 添加跳连层和可变卷积的DLA-34结构

DLA网络通过高斯核拟合在图片中计算出物体中心点最可能的位置,并将同一个类别的物体的中心点标记在图片上,按照高斯分布生成该类的中心点热图,如式(1)所示。

(1)

式中:(pi,pj)为预测的中心点坐标;c为类别;σp为和目标大小相关的标准差;Yi,j,c表示该位置点为物体中心的概率,范围为[0,1],等于1则代表该像素点为物体中心点,为0则说明该点为背景。如果两个高斯分布重叠了,则选取重叠部分的最大值作为函数值。

目标中心点损失函数如下:

(2)

另外,相比图片中物体是什么,本文更关注图片每个像素是属于物体还是背景,以及其具体所在的位置范围。因此按式(2)将上文生成的中心点热图对类别数C平均,得到最终的中心点热图。

(3)

2.3 生成右图

我们使用卷积神经网络对原图进行特征提取,并且在每个池化层的分支后,使用反卷积层上采样输入的特征图。这部分流程如图5所示。这样可以得到不同层级的特征图,将每一级的特征结合在一起,得到和输入图像尺寸一致的特征表示。最后进行一次卷积和softmax变换,得到概率分布形式的视差图,即不同视差值d下的视差概率分布,如式(4)所示。

图5 生成右图流程图

(4)

式中:i,j为坐标;N为视差通道数;z为softmax变换前的卷积层的输出。

为了使训练更容易,本文使用双向线性插值初始化反卷积层。假设上采样系数为k,则反卷积层的卷积核为2k×2k,步长为k,padding为k/2。权重初始化为:

(5)

式中:c=(2k-1-(kmod 2))/2k。

选择层是传统DIBR(Depth Image-Based Rendering,基于深度图像的绘制)[19]操作的模型化。对于给定左视点I与及对应视差矩阵Di,j,根据式(6)可以得到右视点Oi,j。

Oi,j=Ii,j-Di,j

(6)

传统方法中视差由深度和相机参数计算得到,通常不可微,这里使用式(4)计算得到的视差概率分布进行替换。另外,假设像素点视差为d和为物体中心点二者相互独立,我们将2.2节中的中心点热图以条件概率形式加权进来,可以得到右视点公式。

(7)

最后,我们以计算得到的右图和右图地面真实值的L1损失作为训练目标。

Ld=|O-Y|

(8)

另外,由于原始数据经过下采样后分辨率较低,生成的右图较为模糊,为改进生成图像的效果,这里按比例扩大生成的视差差异图,然后和原始左图计算得到右图。

2.4 计算深度图

根据输入图像进行上述右图计算和生成后,我们采用SGBM[15]算法进行图像深度估计。SGBM算法通过计算左右图中对应像素点的视差,获得视差图,最小化和该图相关的函数来计算每个像素点的视差。然后根据视差和深度的转换公式得到深度图。视差与深度的关系如图6所示。

图6 深度计算示意图

图6中,L、R为双目相机,P为物体,xr、xl分别为P在左右相机中成像的坐标,b为两相机距离,f为焦距,z为物体实际深度。由图中的三角关系可得到深度计算公式:

(9)

xl-xr即为视差d。这里计算深度图方法可以换成双目深度预测网络,以减少对相机内参的依赖,相关工作[20]表明能有较好的效果。

3 实 验

3.1 数据集

本文使用KITTI数据集,KITTI数据集由包含灰度相机、彩色相机、激光雷达、光学镜头、GPS导航的数据采集平台在现实中采集的大量场景图片组成,可用于立体匹配、光流预测、视觉测距、三维物体检测等计算机视觉任务。本文使用KITTI Stereo 2012[21]、KITTI Stereo 2015[22]和KITTI raw[23]组成的5 000多幅立体图片对。图片包括城镇街道、郊外乡村、高速公路等场景,每幅图片可能包含有大量行人和汽车,并且存在各种程度的场景遮挡。其中数据集的80%用于训练,剩下用于测试。图片尺寸大小约为1 246×371,大小误差为1像素。所有数据会插值为1 280×384,然后按比例缩小为320×96以缩短计算时间。

选择层将特征表示理解成65个通道下的概率分布,65个通道代表概率为0(即不存在视差)或者视差为-31到32之间不同的值。

训练上,目标检测部分用CenterNet在MSCOCO[24]上的预训练模型初始化参数,视图生成部分使用VGG16[25]初始化参数,模型训练批次为4,学习率0.000 4,共训练100轮。网络模型都使用Pytorch实现。

3.2 定量评估

本文使用真实右图和生成右图的像素级平均绝对误差(MAE)作为定量评价标准。其计算公式见式(10)所示。生成结果与相关算法Deep3D、DeepView[26]以及Chen等[14]进行了比较。

(10)

式中:H、W为图像分辨率;f()为模型;y为真实右图。MAE值越低越好。

比较算法中Deep3D为本文基准算法。而DeepView,是Bae等[26]提出的基于单图像的视图生成网络,包括两种全卷积网络结构,一种是DeepViewgen的,由编码、解码、渲染三部分构成,使用编码器提取各层级特征,解码后渲染生成概率视差图,并计算得到右图。另一种是DeepViewdec,将RGB图转码为亮度色度图,然后由亮度和色度信号的两个编码解码网络分别提取特征,最后解码结果逆变为RGB图像。Chen等[14]的方法是由三维变换自动编码器、自监督的深度信息预测、投影深度图到原图和视图合成4个过程组成的网络结构。首先,模型对输入的原始图片以及原图到目标的映射进行编码,然后通过深度神经网络解码得到预测的深度图,接着根据相机参数把深度图投影到原图上,最后借助光流图编码对原图进行像素变换为最后的视图生成结果。

表1列出了本文方法和上述对比方法在KITTI测试集上的结果。

表1 视图生成评估结果

实验结果表明,本文使用的方法在评价标准上均超过了对比方法。相比基准算法Deep3D有较大的提升说明引入目标检测模型确实是有成效的。而DeepViewgen也是使用概率视差图来生成右图,同样也说明了概率结合中心点热图和概率视差图的有效性。对于DeepViewdec,亮度色度颜色空间描述了影像的色彩和饱和度,常用于人脸检测[27],对受亮度影响较大的场景效果较好,可能对于光照复杂的实拍场景不太适用。而相比最新的Chen等方法,本文方法在评估标准上表现也比较突出,可能原因是该方法模型是在合成数据集上进行的训练,并且借助了相机参数,合成数据和真实数据的差别,相机参数标定的准确程度,都影响的生成的结果。这也说明了本方法引进像素语义信息的改进思路是十分有效的。

表2列出了本文方法和Deep3D在深度预测方向上的比较。二者都是用SGBM算法计算深度,由于数据集缺少真实深度数据,这里使用地面真实的左图和右图通过SGBM得到的深度图作为对照,比较了同等情况下本方法和Deep3D深度预测的情况。实验结果表明,本文方法相比原方法确实能提取出更准确的深度信息。

表2 深度预测评估结果

为验证本方法各部分模块的贡献,表3展示了移除或更改本方法的部分组件之后的模型性能。

表3 消融分析

表3中使用下采样之后的左图和得到的差异图计算得到右图,然后放大为原始分辨率。可以看出,生成右图的效果大大降低了。因为进行下采样后图片的分辨率较低,生成的右图较模糊,后续操作按比例放大则会使之更加模糊。而使用原始左图直接参与训练可以在训练过程中补足一部分精度。表3在训练目标检测网络时使用CenterNet的3D目标检测模型作为预训练模型。结果显示,虽然相对基准方法有了提升,但是仍不如直接使用二维模型训练,原因可能是对于不带三维信息的单二维图像,直接使用3D模型会使初始训练误差加大,反而达不到更好的效果。

3.3 定性评估

图7比较了本文方法和Deep3D生成的右图,图中分为A、B、C三组对比图片。每组中(a)为左图,(b)为右图;(c)为Deep3D生成的右图;(d)为本文方法生成的右图。图8展示了一些细节对比,分别对应图7中的A、B、C三组的细节对比:(a)为真实右图;(b)为Deep3D生成右图;(c)为本文方法生成右图。从图8中可以看出,A组中,Deep3D生成的结果车子整个歪了过来,而本文的方法车子位置和轮廓相比来看更加准确。B组中,原方法结果中的树丛几乎没有纹理,而本文方法纹理相比之下保存得更多一点。C组车的纹理细节部分,本文方法的结果也比原方法的要更加的完善。实验结果表示,相比Deep3D,本文生成的右图图中物体整体位置更精确,边界更稳定。说明引入物体目标信息是很有效的。

图7 两种方法右图生成结果对比

另一方面,生成的右图分辨率较低,这是因为原图和经过4倍下采样然后放大得到的差异图生成的右图,放大细节后更显得模糊虚化。此外,由于右图是在单左图上合成的,真实右图中有部分物体不出现在左图中,所以部分生成右图边界会发生畸变现象。本文方法相比基准方法噪点较大,这是因为本文模型使用了视差概率和中心热图加权相乘,生成的视差和左图像素结合后不是整数像素点的可能性更大了,导致不可用的像素点相对变多,就需要更多地使用就近原则把生成的非整数像素点近似到相近的点,所以显得噪点较大,但是定量评估结果说明这并不影响模型对场景的感知。

图9展示了本文和Deep3D分别在物体和背景两方面生成深度图的表现。图中分为A、B两组,每组4幅图片,依次为:(a) 左图;(b) 左图和真实右图计算的深度;(c) Deep3D生成右图计算的深度;(d) 本文生成的右图计算的深度。可以看出,本方法对图中汽车的深度预测表现比Deep3D要好。而在纯背景场景的B组中,本方法对背景深度的计算也相对更准确。说明本方法生成的右图更好地保留了深度信息。如果换用较好的双目深度预测模型,将左图和生成的右图作为输入,能达到较好的效果,这将可能是本文的扩展工作。

图9 SGBM计算得到的深度图比较

4 结 语

本文提出并实现了基于目标检测模型的单图像视图生成方法。在KITTI数据集上进行了实验和评估,结果显示在该数据集上本方法达到了较好的效果。本文在Deep3D的基础上引入了目标检测模型的思想,将物体中心点概率和视差概率结合起来,使得生成的右图物体更加精确,并且保留了Deep3D不需要真实深度数据监督,端到端训练的优点。并进一步探讨了使用生成的右图进行深度预测。实验显示本文生成的右图相比原方法在图像深度预测方面显示出更好的性能。

猜你喜欢
热图深度图右图
基于深度图的3D-HEVC鲁棒视频水印算法
热图
一种基于局部直方图匹配的深度编码滤波算法
每月热图
叠加速度谱在钻孔稀少地区资料解释中的应用
我会猜
快速记忆比赛
Kinect深度图像快速修复算法