1. 引言
随着VR、AR等技术的出现,图像的立体化展示逐渐成为对影像等媒介的需求。除了常见的3D电影 [1] 等方面的娱乐应用,图像立体化还可以应用于广告等商业应用,比如通过立体化的海报来实现更好的宣传效果。常用的立体化实现方式有建模、全息投影、神经辐射场(Neural Radiance Field, NeRF) [2] 等,其中单目深度估计(Monocular Depth Estimation, MDE)是从单幅图像中估计深度,通过预测平面图像中每个像素的深度值来实现从平面到立体的投影。其研究方法不管是传统的物理方法,还是概率图模型,或者是现如今主流的深度学习,都仅关注于自然图像。
非自然图像,比如手工绘制的绘画图像,不同于建模场景中真实计算的景物深度,没有深度的地面真实值(Ground Truth, GT)。同时,绘画图像有着天生的低纹理、切边锐利、平滑过渡较少等特点,在使用关注于自然图像的模型估计深度时,往往会出现深度估计中前后不同物体的层次感不明显,以及同一物体上出现深度不一致的问题。
针对上述问题,本文提出了一个针对非自然图像的基于Transformer网络 [3] 的单目深度估计网络。首先,通过一个单目深度估计网络估计出场景深度分布,可获得该场景下的深度图像;其次,在后处理中引入了RGB图像指导的精细化(RGB-Guided Refinement, RGR)模块,能更好地恢复在深度估计过程中缺失的纹理和边缘等细节:利用原图作为指导,以深度图的地面真实值作为目标进行精细化,增加深度图的细节部分,以提升整体效果。另外,使用基于深度图像的渲染(Depth Image Based Rendering, DIBR)技术 [4] 实现从原始视图和深度帧生成虚拟视图,实现图像的动态合成。
对于绘画图像而言,由于其主观创造性和抽象性,不存在可以直接使用的成对RGB图像和对应的深度地面真实值,往往需要手动去绘制深度,消耗大量人力物力。针对这一问题,本文使用三维场景的卡通风格渲染得到的图像来模拟绘画类非自然图像,以及场景中自带的深度信息作为深度值来设计并制作了两个数据集。模型通过学习这些数据集中非自然图像和对应深度的映射关系,来估计绘画图像的深度值。同时,本文中制作了一个手工绘制的山水画测试集来测试模型。实验结果表明,模型在测试集上达到了满意的结果。
2. 相关工作
单目深度估计在过去通常根据阴影 [5] 、消失点 [6] 等图像特征进行计算。然而,这些中的大多数应用于特定的约束场景,方法复杂且低效,缺乏可行性。随着计算机视觉的发展,提出了许多手工特征和概率图模型,例如尺度不变特征变换(Scale-Invariant Feature Transform, SIFT) [7] 、条件随机场(Conditional Random Field, CRF) [8] 和马尔可夫随机场(Markov Random Field, MRF) [9] ,然而这些传统的机器学习方法严重依赖于图像纹理信息,预测结果缺乏精度。
在深度学习的主流框架中,卷积神经网络(Convolutional Neural Networks, CNN)可以自动提取表示场景中深度的空间特征,作为一种前馈神经网络,与传统方法相比,它以更少的参数同时提取深度特征和重建深度图,利用彩色图像和深度图像的映射关系来训练模型,实验证明,单帧图像可通过模型获得较为准确的深度图。Eigen等人 [10] 首次使用CNN来处理单目深度估计。在此基础上,Wang等人 [11] 应用了多尺度融合卷积框架来生成高质量的深度预测。后来,Godard等人 [12] 提出的基于双目图像的无监督单目深度估计网络,通过估计出的双目视差图和原双目图像交叉重建,得到重建的双目图像,并且证明利用成对的立体图像和立体视频可以实现单目深度估计的模型训练。最近,Transformer网络以其强大的性能在计算机视觉领域收到了广泛关注,其中就包括单目深度估计。Yang等人 [13] 通过跨深度在瓶颈处嵌入视觉Transformer (Vision Transformer, ViT),避免Transformer丢失局部信息,以及使用一个注意门解码器融合多级特征。Bhat等人 [14] 将自适应容器根据输入场景的表示动态改变,并提出在解码器之后以高分辨率嵌入。Ranftl等人 [15] 从密集预测的角度出发,结合Transformer,利用大规模高分辨率数据的跨数据集方式预训练模型,在单目深度估计领域取得突破。以上的这些算法聚焦于自然图像的深度估计,在非自然图像中的效果却不够信服。
针对图像的细节恢复,多数的深度学习网络选择密集预测来实现。RefineNet网络 [16] ,利用不同层特征来完成语义分割。其递归的方式,使用低水平的特征来生成高分辨率的图像。Zhang等人 [17] 选择按图像序列预测每个任务,利用上个阶段预测一个任务的信息,在每次迭代中细化另一个任务的特征。Zhou等 [18] 通过分离任务间和任务内模式,完善了像素间依赖的使用,从而提取信息。在最新的细节恢复方法中,Hu等人 [19] 利用了超分辨率的网络,以掩膜为指导,通过局部精细化进行全局复原。
3. 算法介绍
RefineDepth模型由一个单目深度估计模块(MDE module)以及一个RGB图像指导的精细化模块(RGR module)组成的架构(图1)。最后,通过DIBR,将原图和获得的最终深度图渲染成3D立体图像。单目深度估计模块,负责从彩色绘画图像中估计深度并预测出粗略的深度图;RGB图像指导的精细化模块,以原有的RGB绘画图像作为指导,将粗略的深度图精细化处理,恢复更多的图像深度细节,获得更好的深度估计效果。
单目深度估计模块(图2):灵感来自DPT,本文从单目深度估计的视角,探索了使用单个ViT结构ViT-base和单个头部通过轻量化来实现单目深度估计的可能性。在模型中把输入原图像分割为16 × 16的若干块,块的数量为
,H、W为RGB图像的高和宽。将这些块经过特征提取块得到
个1 × 1的768维标记,这里还添加了一个独立的标记,用于后续将以上标记整合为一个类似图像的像素级特征表达。由于标记特征维度大于输入块中的像素数量,这说明可以完整地学习保留信息。实际上,输入的标记正是以像素级的精度对块中的特征进行解析。在ViT-base提取模块中将这些标记送入在ImageNet [20] 上预训练过的视觉Transformer中。在网络中使用了12层的Transformer,并在第{3, 6, 9, 12}层增加了一个分支,将不同阶段提取的特征表达送入重组(Recast)模块。
![](//html.hanspub.org/file/6-1542838x9_hanspub.png?20230418093309456)
Figure 1. Overall framework of RefineDepth model
图1. RefineDepth模型整体框图
这些特征表达通过重组块进行组合,获得类似图像的像素级输出,这里利用了CNN的思想,保留不同阶段的Transformer的特征表达,保留不同程度的图像细节,以此更好地估计场景深度。这些特征表达可以在后续的迭代中不断融合上级特征。
在重组模块中,将尺度
首先映射到尺度为
(D为标记的维度);然后将这些标记组合起来,使每个特征表达对应一个块,再按照块的顺序连接每一个特征表达,这就产生了中间特征图这一类似于图像的特征表达;再将输入的特征表达经过一个1 × 1的卷积投影到256维的空间中。除此之外,另加了一个的卷积,它的内部参数是根据上一层重组块输入的尺度而变化;最后经过卷积的特征表达s和上一个阶段的重组块作为输入,在求和之后使用两个连续的卷积单元,并对预测的结果进行2倍上采样,自上而下进行融合各级特征,最终将尺寸为输入图像一半的特征表达输出到深度重建(Depth Reconstruction)头模块中。头模块由一个带有上采样模块的反卷积组成,输出的深度图与RGB原图同尺度同维度。
RGB图像指导的精细化模块(图3):使用单目深度估计网络估计深度的时候,由于没有明确的边缘信息作为指引,往往会使同一平面的被测物体的深度估计不一致,导致深度的离散化。绘画图像,由于其简单的纹理、锐利的切边和较少的平滑过渡,相对于自然图像来说,利用其边缘和纹理等信息可能更好地恢复原有的图像细节,从而获得更加准确的场景深度。因此,提出利用输入的RGB原图作为指导,通过增加特征图支路的方式,在深度图像精细化的过程中改善边缘细节。
模块由两部分组成,第一部分是RGB原图的支路,将原图灰度化之后经过一个3 × 3卷积得到特征图,再将特征加入后续的网络中;第二部分中,设计了一个图到图的回归模型来作为网络主干来精细图像细节,该模型基于常见的图像重建任务,如超分辨率。本文使用Wang等人 [21] 提出的残差密度块(Residualin Residual Dense Block, RRDB)来搭建网络。网络中共有24个RRDB块,分别在第5、10、15、20个块后面对上个分支的特征融合,并将输出特征送入下个块中。最后融合特征信息,具体来说,先将这两个特征合并起来,然后使用另一个RRDB块和两个卷积来重建最终的SR特征。
4. 数据集制作
SSMO (Shot on Super Mario Odyssey)数据集(图4):本文在《超级马里奥奥德赛》这款游戏中选取了13种场景,包括沙漠、城市、海滩等。控制游戏角色在不同场景中以不同视角截取场景图和漫画滤镜图、线稿以及对应的游戏中建模自带的深度图共1344对,图像分辨率为1280 × 720像素。为了平衡每种场景下的学习效果,提升模型的泛化性,平均地截取了不同场景中的相同数量的图片对。
![](//html.hanspub.org/file/6-1542838x14_hanspub.png?20230418093309456)
Figure 4. SSMO dataset (from left to right): RGB, manga, corresponding GT depth, line draft
图4. SSMO数据集示例(从左到右):RGB、漫画、对应GT深度、线稿
SU3D (Shot on Unity3D)数据集(图5):本文利用Unity3D构建了大量的三维场景模型并开发了一套轨道相机深度图采集系统,使用该系统采集数据集。与从真实场景中采集深度数据相比,该方法具有易于调整、易于采集、场景类型多样、降低人工成本等诸多优点。根据需要构建不同类型的场景,例如室内布局、城市立面、街景、自然景观等。同时,可以调整相机角度,从不同的视角获取场景,或者对场景中的物体进行增删改查,从不同的场景中获取大量对应的深度数据。在系统中可以根据需要选择场景、在场景中切换相机运行轨道、设置拍摄速度,以及选取不同的相机高度及视角进行拍摄,以此获取RGB图。同时,绑定深度计算脚本,确定好场景、轨道和视角后,首先获取RGB图像,着色器通过纹理采样得到深度值后赋予深度计算脚本,即可得到RGB图像对应的场景深度图。在本文的实验中,我们共采集了RGB图像和深度图像共1000对,图像分辨率为640 × 480像素。在场景方面,本文共选取了10个虚拟场景用于图片对的采集,场景类型包括城市街道、乡野田园和森林景象等。与采集SSMO数据集相似,本文在采集SU3D数据集过程中亦进行了数据的平衡。
为了测试本文的模型在绘画图像上的效果,以验证泛化性性能表现,本文收集了165张绘画作品制作了山水画测试集(图6),图像分辨率为1280 × 720像素。
除此之外,本文还使用了自然图像NYUv2数据集 [22] 共1449张,分辨率为640 × 480像素,它包含地面真实深度值GT,以测试本文的模型在自然图像上的表现。
![](//html.hanspub.org/file/6-1542838x15_hanspub.png?20230418093309456)
Figure 5. (a) The maininterface of the track camera depth map acquisition system; (b) Example of indoor scene tracks; (c) Examples of a SU3D dataset: the first and third columns are the original image, and the second and fourth columns are the corresponding GT depth
图5. (a) 轨道相机深度图采集系统主界面;(b) 室内场景轨道示例;(c) SU3D数据集示例:第1、3列为原图,第2、4列分别为对应的GT深度
5. 实验
5.1. 模型训练
由于单目深度估计和精细化后处理两个任务互相独立,为了更灵活地使用,本文将两个模块分开训练。数据方面把SSMO和SU3D数据集混合,其中保留70%的数据集作为训练集,10%作为验证集,其余20%作为测试集。
在DPT中,作者已验证,使用在大型数据集上预训练的ViT模块有助于提升网络的学习能力,因此选取经过ImageNet预训练的ViT作为基础块应用在网络里,由于非自然图像与预训练的数据集有较大区别,因此将该基础块在我们的训练集上再次训练。本文调整批次大小batch_size为8,使用2个不同的优化器和不同的学习率来训练模型。具体来说,本文使用优化器Os来更新解码器从头训练的参数,使用另一个优化器Ob来更新。对于Os,本文使用Adam [23] 优化器,学习率为3 × 10−5;对于Ob,本文同样使用Adam,学习率设置为1 × 10−5,在300个epoch中训练本文的模型。对于单目深度估计来说,是旋转裁切翻转不相关的,本文将输入图像进行50%随机水平翻转、30%随机裁剪和20%随机旋转(最大角度10度)进行数据增强,增加学习样本的数量,以提升模型的鲁棒性。
RGB指导的精细化模块中,本文使用目前性能较好的RRDB块,采用更加密集的连接进行迭代,并使用L1 loss训练模型。由于输入图像和目标图像都是同分辨率,本文将这两者都裁剪至64 × 64,batchsize设置为8送入网络,使用预训练的面向PSNR模型的参数初始化生成器。学习率初始设置为2 × 10−4,最小为1 × 10−7,每过2.5 × 104次迭代衰减2倍,共迭代1.0 × 105次结束。本文使用Adam优化器,权重衰减为0,控制参数β1设置为0.9,每迭代1000次记录数据。
所有的训练过程均在Windows 11系统搭载的12 GB NVIDIARTX 3060和2.5 GH zInteli7-11700 CPU上完成,在Pytorch-GPU 11.6.0环境下使用Python 3.6实现了模型。
5.2. 结果与分析
5.2.1. 在绘画数据集上对比实验
为了进行直观的对比,我们将本文所提模型与CNN为主干网络的Monodepth2 (mono)和以Transformer为主干,在当今单目深度估计方面表现出色的DPT、GCN网络模型,在本文提出的绘画图像数据集上训练后的表现进行对比,体现所提出模型的学习能力。
第1、2行、第3、4行分别是不同模型在SSMO数据集、SU3D数据集预测结果对比(图7)。我们观察到,monodepth2由于卷积主干网络更关注于像素级密集预测任务,在学习过程中对于图像纹理把握较差,其结果表现不够出色;GCN和DPT借助Transformer架构提升了对图像的全局性和边缘纹理细节的把握,但是对绘画图像这种过渡平滑少的场景,在估计景物时还是会缺失深度一致性。相较于文中的其他模型而言,本文提出的模型可以从原图中学到更好的深度信息并更好地恢复深度图像的纹理和边缘信息,从而达到准确预测场景深度。
此外,还将monodepth2、GCN和DPT在绘画图像数据集训练前和训练后的推理结果进行了对比(图8)。在深度估计中本文更关注结果中场景边缘和结构性的提升,所以使用SSIM这一指标(数值越大表示越接近地面真实值)对推理结果进行量化(表1)。可以看出,在本文的绘画图像数据集上训练之后,不同模型对绘画场景的预测能力都有提升。
![](//html.hanspub.org/file/6-1542838x17_hanspub.png?20230418093309456)
Figure 7. Performance of different models after training on the painting dataset
图7. 不同模型在绘画数据集上训练后的表现
![](//html.hanspub.org/file/6-1542838x18_hanspub.png?20230418093309456)
Figure 8. Comparison of different models on the painting dataset after training and before training
图8. 不同模型在绘画数据集上训练后与训练前对比
![](Images/Table_Tmp.jpg)
Table 1. Average SSIM metrics of different models on the painting dataset
表1. 不同模型在绘画数据集上的平均SSIM指标
在消融实验中,本文探索了RGB指导的精细化(RGR)模块在深度估计中的作用(图9)。同样以SSIM作为指标,分别计算精细化前和精细化后的结果。经过精细化后的图像质量均有不同程度的提升,SSIM的数值也从精细化前的0.70提升至精细化后的0.91。
![](//html.hanspub.org/file/6-1542838x19_hanspub.png?20230418093309456)
Figure 9. Visual comparison of images before and after the RGR module: (a) before passing through the RGR module; (b) after passing through the RGR module
图9. RGR模块的前后图像直观对比:(a) 经过RGR模块前;(b) 经过RGR模块后
5.2.2. 在山水画测试集上对比实验
本文在山水画测试集上测试了在绘画图像数据集上重新训练后各个模型的预测结果(图10),并且与没有重新训练的模型进行对比(图11)。结果表明,本文模型在其他绘画图像上依然可以更好地估计深度并恢复深度图像的纹理及边缘信息,准确预测场景深度。同时,也说明本文提出的绘画数据集在非自然图像中具有很好的泛化性。
![](//html.hanspub.org/file/6-1542838x20_hanspub.png?20230418093309456)
Figure 10. Comparison results of different models on the landscape painting test set
图10. 不同模型在山水画测试集上对比结果
![](//html.hanspub.org/file/6-1542838x21_hanspub.png?20230418093309456)
Figure 11. Comparison of different models on the landscape painting test set after training and before training
图11. 不同模型在山水画测试集训练后与训练前对比
5.2.3. 在自然图像上的拓展实验
为了测试本文模型在自然图像上的表现,将模型在NYUv2数据集上重新训练并测试(图12)。结果显示,在自然图像上也可以获得接近地面真实值的深度估计结果,测试SSIM为0.88,说明本文模型在自然图像上也能很好的恢复图像细节,泛化性出色。
![](//html.hanspub.org/file/6-1542838x22_hanspub.png?20230418093309456)
Figure 12. The effect of model in this paper on the NYUv2 dataset: (a) original image; (b) depth estimation image; (c) GT
图12. 本文模型在NYUv2数据集上的效果:(a) 原图;(b) 深度估计图;(c) GT
![](//html.hanspub.org/file/6-1542838x23_hanspub.png?20230418093309456)
Figure 13. Dynamic effect display: (a) RGB image; (b) depth image; (c) red and blue image
图13. 动态效果展示:(a) RGB图;(b) 深度图;(c) 红蓝图
5.2.4. 基于DIBR的动态效果制作
最后,利用DIBR技术,将RGB图与本文模型估计的深度图进行动态生成,来展示图像的立体化结果。由于文章不能展示动态效果,本文使用深度图进行双向warp到虚拟视角,获得左右视图,并通过左右视图偏移模拟视差来表现动态效果,如红蓝图所示(图13)。本文模型合成结果可清楚展示图中红蓝偏移量,说明模型能够成功胜任动态合成任务,具体动态效果可访问文末链接查看。
6. 总结
本文提出RefineDepth网络来学习非自然图像在单目深度估计上的表现,并根据绘画图像的特点创新地设计了RGB指导的精细化模块对单目深度估计的结果进行后处理。实验结果表明,与以往的单目深度估计模型相比,本文提出的模型在绘画作品上得到了更细粒度和全局一致的预测,经过DIBR之后,本文的预测结果也实现了很好的图像立体感。同时,本文的模型在自然图像上也获得了出色的表现。除此之外,设计制作的绘画图像数据集,包括绘画数据集SSMO和SU3D以及山水画测试集,除了单目深度估计任务之外,同样也可以应用于风格迁移、边缘检测等领域,具有很高的应用价值。立体效果展示及数据集公开详见https://github.com/PapillonYu/Depth-Estimation-and-Dynamic-Synthesis。