如今AI越来越强大,居然能够让一张静态图片变成3D动图,有够神奇!
我们用腾讯云GPU服务器来体验一下这个开源项目的神奇之处吧~
云端GPU真的是解决了不少本地的难题
开始前的准备
- Linux
- Anaconda
- Python 3.9
- PyTorch 1.4.0
以及需求中列出的 Python 依赖项。
- 要开始使用,请运行以下命令:
conda create -n 3DP python=3.7 anaconda
conda activate 3DP
pip install -r requirements.txt
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit==10.1.243 -c pytorch
代码语言:txt复制
- 接下来,请使用以下命令下载模型重量:
chmod x download.sh
./download.sh
代码语言:txt复制
开始使用
- 将文件(例如,test.jpg)放入文件夹中。
.jpg
代码语言:txt复制
代码语言:txt复制
image
代码语言:txt复制
- 例如,
image/moon.jpg
- 运行以下命令
python main.py --config argument.yml
代码语言:txt复制
- 注意:3D照片生成过程通常需要大约2-3分钟,具体取决于可用的计算资源。
- 结果存储在以下目录中:
- 由MiDaS估计的相应深度图
- 例如,`depth/moon.npy``depth/moon.png`
代码语言:txt复制 - 用户可以手动编辑。
代码语言:txt复制 ```
代码语言:txt复制 depth/moon.png
代码语言:txt复制 ```
代码语言:txt复制 - 如果用户希望使用手动编辑作为3D照片的输入,请记住设置下面列出的以下两个标志。
代码语言:txt复制 ```
代码语言:txt复制 depth/moon.png
代码语言:txt复制 ```
代码语言:txt复制 - `depth_format: '.png'`
- `require_midas: False`
- 上色3D网格(可选:用户需要打开标志)
```
代码语言:txt复制 save_ply
代码语言:txt复制 ```
代码语言:txt复制 - 例如:`mesh/moon.ply`
- 具有放大运动的渲染视频
- 例如:`video/moon_zoom-in.mp4`
- 具有摆动动作的渲染视频
- 例如:`video/moon_swing.mp4`
- 具有圆圈运动的渲染视频
- 例如:`video/moon_circle.mp4`
- 具有小车放大效果的渲染视频
- 例如:`video/moon_dolly-zoom-in.mp4`
- 注意:我们假设焦点对象位于图像的中心。
- (可选)如果要更改默认配置。请阅读
DOCUMENTATION.md
并修改。argument.yml
下面是官方的一些参数配置:
- depth_edge_model_ckpt: checkpoints/EdgeModel.pth
- 深度边缘内画的预训练模型
- depth_feat_model_ckpt: checkpoints/DepthModel.pth
- 深度内画的预训练模型
- rgb_feat_model_ckpt: checkpoints/ColorModel.pth
- 预训练的颜色内画模型
- MiDaS_model_ckpt: MiDaS/model.pt
- 深度估计的预训练模型
- use_boostmonodepth: True
- 使用 BoostMonocularDepth 获得更清晰的单目深度估计
- fps: 40
- 每秒输出渲染视频的帧数
- num_frames: 240
- 输出渲染视频中的总帧数
- x_shift_range: [-0.03, -0.03, -0.03]
- 输出渲染视频的 x 轴上的平移。
- 此参数是一个列表。每个元素对应于特定的摄像机运动。
- y_shift_range: [-0.00, -0.00, -0.03]
- 输出渲染视频的 y 轴上的平移。
- 此参数是一个列表。每个元素对应于特定的摄像机运动。
- z_shift_range: [-0.07, -0.07, -0.07]
- 输出渲染视频的 z 轴上的平移。
- 此参数是一个列表。每个元素对应于特定的摄像机运动。
- traj_types: ['straight-line', 'circle', 'circle']
- 相机轨迹的类型。
- 此参数是一个列表。
- 目前,我们只 privode 和 .
straight-line``circle
- video_postfix: ['zoom-in', 'swing', 'circle']
- 视频的后缀。
- 此参数是一个列表。
- 请注意,、 、 和 中的元素数应相等。
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
- 输出 3-D 网格目录。
- video_folder: video
- 输出渲染的视频目录
- load_ply: False
- 加载已存在的网格 (.ply) 文件的操作
- save_ply: True
- 存储输出网格 (.ply) 文件的操作
- 禁用此选项可减少计算时间。
save_ply: False
- inference_video: True
- 渲染输出视频的操作
- gpu_ids: 0
- 工作 GPU 的 ID。将其留空或负数以使用 CPU。
- offscreen_rendering: True
- 如果您在远程服务器(通过 ssh)中执行该过程,请打开此标志。
- 有时,使用屏幕外渲染会导致执行时间延长。
- img_format: '.jpg'
- 输入图像格式。
- depth_format: '.npy'
- 输入深度(视差)格式。使用NumPy数组文件作为默认值。
- 如果用户想要手动编辑深度(视差)图,我们提供格式深度(视差)图。
```
代码语言:txt复制.png
代码语言:txt复制```
代码语言:txt复制- 请记住在使用具有格式的深度(视差)映射时将此参数从 切换到 。`.npy``.png``.png`
- require_midas: True
- 如果用户想要使用 由 估计的深度图,请将其设置为 。
True``MiDaS
- 如果用户想要使用手动编辑的深度图,请将其设置为。
False
- 如果用户想要手动编辑深度(视差)图,我们提供格式深度(视差)图。
```
代码语言:txt复制.png
代码语言:txt复制```
代码语言:txt复制- 请记住在使用手动编辑的深度图时将此参数从 切换到 。`True``False`
- 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
- 深度内画的比例。如果为 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]
- 要在边框周围裁剪的像素分数。
[top, left, bottom, right]
- anti_flickering: True
- 避免输出视频中闪烁效果的操作。
- 这可能会导致渲染阶段的计算时间更长。