paperUnderstanding&Reconstruction-3D Photography using Context-aware Layered Depth Inpainting

1 论文介绍

1.1 方法概述

该论文提出了一种将单张RGBD图像转换为多视角合成的3D照片的方法,给定上下文区域和现有RGB-D信息,来预测(修补)合成区域颜色值和深度值。

预处理阶段:给定输入的 RGB-D 图像(深度图除了来自双摄像头的不同视角,或者深度相机,或者用普通的RGB图通过DPSNet估计出来),首先将输入的 RGB-D 图的深度通道归一化到 0-1 之间,如图1.1(a-b)所示。并对深度图进行双边中值滤波来锐化以使得边缘更细化,如图1.1(c-d)所示。再基于此图片生成初始 LDI(Layered Depth Image)。然后再根据给定阈值(论文中定义为10 )判断相邻像素的视差,找到深度不连续像素,最后删除短的不连续边(包括孤立的和悬空的片段,size<10像素),得到最终的深度不连续边集合,如图1.1(e-f)所示。

预处理步骤图

图1.1 预处理步骤图

分割阶段:每次选择一条深度不连续边借助填补算法来修复背景,首先在深度不连续处断开 LDI 像素连接,得到 (前景、背景) 轮廓像素,如图1.2(b)所示。合成区域就在背景轮廓附近,如图1.2(c)所示红色区域所需要修复的部分。“联系上下文”,根据背景轮廓周围的像素来推测红色块原本隐藏的部分。使用分水岭算法初始化颜色和深度值,再使用深度学习的方法填补该合成区域。由于检测到的深度边缘在遮挡边界附近可能没有很好的对齐,所以将合成区域扩大了5个像素。这种策略有助于减少合成区域中的artifacts。

image-20200621202800827

图1.2 分割图

修复阶段:给定颜色、深度、提取以及连接的深度边缘作为输入,随机选择其中一个边作为子问题。首先使用边缘修复网络修复合成区域中(红色区域)的深度边缘,然后将修复后的深度边缘与语境颜色连接在一起,并应用颜色修复网络生成用以修复的颜色。类似地,将修复后的深度边缘与语境深度连接起来,并应用深度修复网络生成修复深度。

多层修复阶段:在deep-complex的情况下,使用一次inpainting模型的效果是不完美的,因为inpainting深度边缘不连续区域过程中仍会出现空白(hole),如图1.3(b)所示。因此,多次应用inpainting模型,直到没有进一步的inpainted深度边缘生成,可彻底消除这些artifacts,如图1.3(c)所示。

image-20200621202819913

图1.3 多次修复效果图

合成阶段:通过将所有修复好的颜色和深度值重新集成到原始 LDI 中,形成最终的 3D 纹理网格。使用网格表示可以快速渲染新的视图,而无需对每个视角进行推理,因此文章算法得到的3D表示可以在边缘设备上通过标准图形引擎轻松渲染。

1.2 网络架构

论文中的网络架构如图2.1,将整个修补工作由三个子网络组成,分别是边缘修复网络、颜色修复网络、深度修复网络。

(1)将上下文区域的边作为输入,使用边修复网络预测合成区域中的深度边,先预测边信息能够推断 (基于边的) 结构信息,有助于约束 (颜色和深度的) 内容 预测。

(2)再以边缘修复网络提供的物体结构信息和上下文区域的颜色,使用颜色修复网络预测合成区域中的颜色。

(3)最后再使用同样的方法预测合成区域中的深度信息。

image-20200621202842316

图2.1 网络架构

边缘修复模型由一个边缘生成器和一个鉴别器网络组成。SN→IN表示先进行光谱归一化(SN),再进行实例归一化(IN)。ResnetBlock由2个卷积层、指定的超参数和一个block输入和输出之间的跳跃连接组成。

image-20200621202902725

深度和颜色的渲染网络由一个标准的U-Net架构和部分卷积层构成。其中,下图内PConv表示部分卷积层, BatchNorm表示BN。我们添加上下文和合成区域作为PConv层的局部掩码。

image-20200621202957827

将三个模型的合成区域的输入深度和RGB值设置为0。对于深度和颜色的修复模型,合成区域的输入边缘值同样被设为0,而对于边缘修复网络,则保持不变。

1.3 项目说明

main.py:执行3D照片修复

mesh.py:关于上下文感知深度的函数

mesh_tools.py:在mesh.py中使用的一些常见函数

utils.py:一些用于图像预处理,数据加载的常用函数

networks.py:修复模型的网络架构

ImageRename.py:按0000xx.png的格式重命名RealEstate10K数据集图片

Image文件夹保存实验数据(随机挑选10张样例作演示)

Video文件夹保存生成的3D视频(只放入样例,理由如上)

MiDaS 文件夹下

run.py:执行深度估计

monodepth_net.py:深度估计模型的网络结构

MiDaS_utils.py:深度估计中的一些常见函数

相关环境

  • Linux ( Ubuntu 18.04.4 LTS)
  • Miniconda
  • Python 3.7.7
  • PyTorch 1.5.0
  • 其他的 Python 依赖项:
1
2
3
4
5
6
7
8
opencv-python==4.2.0.32
vispy==0.6.4
moviepy==1.0.2
transforms3d==0.3.1
networkx==2.3
cynetworkx
scikit-image
pyyaml

安装

  • 运行以下指令开始安装:
1
2
3
4
5
6
7
8
9
10
#已有现成的pytorch环境,可跳过
conda create -n 3DP python=3.7 anaconda
conda activate 3DP
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit==10.1.243 -c pytorch

# 激活虚拟环境
conda activate pytorchGPU
cd 项目目录
pip install -r requirements.txt
pip install pyyaml

其中安装 cynetworkx报错

ModuleNotFoundError: No module named ‘Cython’

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

ModuleNotFoundError: No module named ‘decorator’

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

1
2
3
4
# cynetworkx是networkx包的cython端口,用于创建、操作和 复杂网络的结构、动力学和功能的研究
# cynetworkx需要以下依赖
pip install Cython
pip install decorator
  • 下载模型权值:

    1
    2
    3
    # +x 是添加执行文件权限
    chmod +x download.sh
    ./download.sh

运行示例

1
python main.py --config argument.yml

3D照片的生成将需要2-3分钟,将取决于可获得的计算资源

如果想改变默认配置。请阅读document .md并修改argument.yml 。

实验

需要tizifanguoqu下载

https://raw.githubusercontent.com/richzhang/PerceptualSimilarity/master/models/weights/v0.1/alex.pth

一般实验均包括以下三个方面:

  • 量化实验(与其他的方法做对比)

  • Ablation study 消融实验(网络各个组件进行对比,那一部分贡献最大)

  • 可视化结果

经过以上实验后,该模型在日常的大部分场景图片中都能够生成效果炫酷、惊艳的3D照片,该论文方法在SSIM和PSNR上都有较好的性能,其优越的LPIPS评分表现出更好的感知质量。但仍然存在下面三个缺点:

  • 对于复杂或者稀疏结构的场景(如4.3节中的路灯),不能得到满意的结果。

  • 该论文模型不能很好地处理反光/透明表面(如4.3节中的透明花瓶)

  • 生成时间过长,通常情况下在本人电脑上处理时间为 4-6 分钟,具体取决于可用的计算资源。

    本人认为导致这些结果的原因有四个:

  • 应该是现有的单图像深度估计算法(如MegaDepth)通常难以处理稀疏和复杂的结构,并可能产生过于平滑的深度地图。

  • 由于使用了显式深度映射,RGB颜色信息与深度信息需要进行一些处理操作来对齐。在此过程中,深度信息损失过多。

  • 从单一的一张图片生成多个视角的视频序列所能利用的信息量太少,导致生成结果细节丢失严重,补充不到位。

  • 模型过于复杂,当遇到深度不连续边数量过多时,需要多次迭代才能完成。

---------------- 本文结束 ----------------

本文标题:paperUnderstanding&Reconstruction-3D Photography using Context-aware Layered Depth Inpainting

文章作者:Pabebe

发布时间:2020年05月30日 - 18:04:30

最后更新:2020年06月21日 - 20:37:20

原始链接:https://pabebezz.github.io/article/ce73fd06/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%