前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让你的照片变成3D!

让你的照片变成3D!

原创
作者头像
用户7917993
发布2022-05-30 18:41:20
1.1K0
发布2022-05-30 18:41:20
举报
文章被收录于专栏:漫天雨落漫天雨落

如今AI越来越强大,居然能够让一张静态图片变成3D动图,有够神奇!

我们用腾讯云GPU服务器来体验一下这个开源项目的神奇之处吧~

云端GPU真的是解决了不少本地的难题

开始前的准备

  • Linux
  • Anaconda
  • Python 3.9
  • PyTorch 1.4.0

以及需求中列出的 Python 依赖项。

  • 要开始使用,请运行以下命令:
代码语言:txt
复制

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
复制
  • 接下来,请使用以下命令下载模型重量:
代码语言:txt
复制

chmod +x download.sh

./download.sh

代码语言:txt
复制

开始使用

  1. 将文件(例如,test.jpg)放入文件夹中。
代码语言:txt
复制

.jpg

代码语言:txt
复制
代码语言:txt
复制

image

代码语言:txt
复制
  • 例如,image/moon.jpg
  1. 运行以下命令
代码语言:txt
复制

python main.py --config argument.yml

代码语言:txt
复制
  • 注意:3D照片生成过程通常需要大约2-3分钟,具体取决于可用的计算资源。
  1. 结果存储在以下目录中:
代码语言:txt
复制
 - 例如,`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
复制
 ```
代码语言:txt
复制
 save_ply
代码语言:txt
复制
 ```
代码语言:txt
复制
 - 例如:`mesh/moon.ply`
  • 具有放大运动的渲染视频
代码语言:txt
复制
 - 例如:`video/moon_zoom-in.mp4`
  • 具有摆动动作的渲染视频
代码语言:txt
复制
 - 例如:`video/moon_swing.mp4`
  • 具有圆圈运动的渲染视频
代码语言:txt
复制
 - 例如:`video/moon_circle.mp4`
  • 具有小车放大效果的渲染视频
代码语言:txt
复制
 - 例如:`video/moon_dolly-zoom-in.mp4`
 - 注意:我们假设焦点对象位于图像的中心。
  1. (可选)如果要更改默认配置。请阅读 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
复制
```
代码语言:txt
复制
.png
代码语言:txt
复制
```
代码语言:txt
复制
- 请记住在使用具有格式的深度(视差)映射时将此参数从 切换到 。`.npy``.png``.png`
  • require_midas: True
  • 如果用户想要使用 由 估计的深度图,请将其设置为 。True``MiDaS
  • 如果用户想要使用手动编辑的深度图,请将其设置为。False
  • 如果用户想要手动编辑深度(视差)图,我们提供格式深度(视差)图。
代码语言:txt
复制
```
代码语言: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
  • 避免输出视频中闪烁效果的操作。
  • 这可能会导致渲染阶段的计算时间更长。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始前的准备
  • 开始使用
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档