实践时间:3D Photo Inpainting 将照片转换为视频

在文章把你的照片变成 3D 场景视频中,我介绍了 3D Photo Inpainting 项目,可以将照片转换为 3D 场景视频。现在我们就来实践一下吧!

实验需要使用 Google Colab,请确认你能够访问 Google。

初级:体验 3D Photo Inpainting 将照片转换为视频

实验步骤

  1. 此Colab笔记本开始。
  2. 按顺序运行 Prepare environment (准备环境),Download script and pretrained model(下载脚本和准备预训练模型)下单元格。
  3. 运行上传文件单元格。你可以多次运行来上传多张图片。
  4. 运行 Execute the 3D Photo Inpainting (运行3D照片修补)单元格开始生成视频。可能耗时2-4分钟
  5. 运行 Download Results (下载输出视频文件)单元格获得你想要的视频。
  6. 若要再次运行无需运行 1~2 步骤,运行最后一个 Delete Uesless Files (清理文件)单元格后即可从步骤3开始。

注意事项

  • 上传图片格式仅限 .jpg。
  • 下载时请注意允许网站下载多个文件。
  • 输出中出现粘连之类的的情况,八成是深度预测错了,橘子也无法解决。深度预测采用 MIDAS,也不是本项目的范围。直接上传照片对应的 Depth Map 图像可以解决此问题。(然而我觉得不会真的有人会去手动编辑 Depth Map 吧)

中级:修改配置使运行结果更合你的心意

实验步骤

  1. 完成初级实验的 1~3 步。
  2. 打开 Colab 文件管理界面,定位到 /content/3d-photo-inpainting/argument.yml,双击打开配置文件。
  3. 修改配置,关闭文件,继续执行 4~5 步。

关于配置

这里提供部分常用配置的翻译,完整英文说明请前官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 模型目录,请保持默认值
depth_edge_model_ckpt: checkpoints/edge-model.pth
depth_feat_model_ckpt: checkpoints/depth-model.pth
rgb_feat_model_ckpt: checkpoints/color-model.pth
MiDaS_model_ckpt: MiDaS/model.pt

# FPS,俗称帧率,不会真的有人不知道吧
fps: 40

# 渲染的总帧数,想要视频时间更长的可以适当调大此值
num_frames: 240

# 摄像机在x,y,z三个轴上移动的距离
x_shift_range: [0.00, 0.00, -0.02, -0.02]
y_shift_range: [0.00, 0.00, -0.02, -0.00]
z_shift_range: [-0.05, -0.05, -0.07, -0.07]

# 摄像机轨迹类型,可选double-straight-line或circle
traj_types: ['double-straight-line', 'double-straight-line', 'circle', 'circle']

# 输出的视频后缀
video_postfix: ['dolly-zoom-in', 'zoom-in', 'circle', 'swing']

# x_shift_range, y_shift_range, z_shift_range, traj_types,video_postfix四个列表元素应该数量相等且一一对应

# 要处理的图像名称,为空则处理目录下所有图像
specific: ''

# 输出的视频画面的长,过大的值将导致崩溃,建议保留默认值
longer_side_len: 960

# 输出文件保持目录,建议保留默认值
src_folder: image
depth_folder: depth
mesh_folder: mesh
video_folder: video

# 是否加载现有的ply网格文件,为否则始终重新计算
load_ply: False

# 是否保存ply网格文件,为否可以减少运算时间
save_ply: True

# 是否渲染输出视频
inference_video: True

# 使用的GPU的ID,为空则使用CPU,建议保留默认值
gpu_ids: 0

# 是否使用无屏幕渲染,如果你在使用远程服务器请设为True
offscreen_rendering: False

# 输入的图像格式
img_format: '.jpg'

# 输入的Depth Map的文件格式,使用自动生成的Depth Map可保留默认值若要使用自己编辑的深度图请设为'.png'
depth_format: '.npy'

# 是否使用MiDaS推理Depth Map,若要使用自己编辑的深度图请设为False
require_midas: True

# 高级设置,建议保留默认值,详细信息可见官方文档
depth_threshold: 0.04
ext_edge_threshold: 0.002
sparse_iter: 5
filter_size: [7, 7, 5, 5, 5]
sigma_s: 4.0
sigma_r: 0.5
redundant_number: 12
background_thickness: 70
context_thickness: 140
background_thickness_2: 70
context_thickness_2: 70
discount_factor: 1.00
log_depth: True
largest_size: 512
depth_edge_dilate: 10
depth_edge_dilate_2: 5
extrapolate_border: True
extrapolation_thickness: 60
repeat_inpaint_edge: True
crop_border: [0.03, 0.03, 0.05, 0.03]
anti_flickering: True