???? 基础信息
- 3D Photography using Context-aware Layered Depth Inpainting
- github.com/vt-vl-lab/3…
- 另外一篇2D转换3D的博文
requirements.txt
pytorch==1.4.0
torchvision==0.5.0
opencv-python==4.2.0.32
vispy==0.6.4
moviepy==1.0.2
transforms3d==0.3.1
networkx==2.3
cynetworkx
scikit-image
???? 环境搭建
服务器:ubuntu 18.04 Quadro RTX 5000 16G
CUDA版本 V10.0.130
conda create -n torch14 python=3.6.6
conda activate torch14
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.0 -c pytorch
pip install opencv-python
pip install vispy
pip install moviepy
pip install transforms3d
pip install networkx==2.3
pip install scikit-image
???? 代码效果
Paper proposed a method for converting a single RGB-D input image into a 3D photo...
直观结果: 图片转换为 mp4 video ,一项神奇的技术...
- 有兴趣、可以去查阅下原论文
- 本博文、属于一个简单的代码运行测评
???? 项目结构
???? 测试 【版本一》2020】
各位小伙伴,我这个博文是上年测试的,当时的确很轻松就测试成功,运行得到输出
2020 年份,测试过程如下
一:把你想要测试的 图片 (默认 jpg 格式)放到 项目目录的 image 下即可; 二:运行如下测试命令(可以在 argument.yml 中 修改 参数配置):
python main.py --config argument.yml
三:查看运行效果
测试图片生成得到:
zoom-in(拉近)、dolly-zoom-in(滑动放大)、swing(摆动)、circle(盘旋) 四种 mp4 格式的 video;
生成示例:
- 原图:
- 效果如下(mp4 动画 转了 gif ,水印没有去掉哈):
???? 测试 【版本二》2021】
会有这个版本的尝试测试,是因为作者 2021年6月份,代码仓库做了较大更新
各位小伙伴,我这个博文是上年测试的,当时的确很轻松就测试成功,运行得到输出
2021 年份,测试过程如下, 目前遇到的 bug 依旧没有彻底解决
下载模型
很多小伙伴服务器,模型下载缓慢,可以 copy 链接去浏览器下载
chmod 755 download.sh
./download.sh
观察 download.sh 脚本,就是下载模型,然后辅助到对应路径
#!/bin/sh
fb_status=$(wget --spider -S https://filebox.ece.vt.edu/ 2>&1 | grep "HTTP/1.1 200 OK")
mkdir checkpoints
echo "downloading from filebox ..."
wget https://filebox.ece.vt.edu/~jbhuang/project/3DPhoto/model/color-model.pth
wget https://filebox.ece.vt.edu/~jbhuang/project/3DPhoto/model/depth-model.pth
wget https://filebox.ece.vt.edu/~jbhuang/project/3DPhoto/model/edge-model.pth
wget https://filebox.ece.vt.edu/~jbhuang/project/3DPhoto/model/model.pt
mv color-model.pth checkpoints/.
mv depth-model.pth checkpoints/.
mv edge-model.pth checkpoints/.
mv model.pt MiDaS/.
## 比如,下面这些就是 后来,作者又更新 补充的
echo "cloning from BoostingMonocularDepth ..."
git clone https://github.com/compphoto/BoostingMonocularDepth.git
mkdir -p BoostingMonocularDepth/pix2pix/checkpoints/mergemodel/
echo "downloading mergenet weights ..."
此时,download.sh 脚本运行之后,项目结构如下
tree 3d-photo-inpainting/
3d-photo-inpainting/
├── argument.yml
├── bilateral_filtering.py
├── BoostingMonocularDepth
│ ├── Boostmonoculardepth.ipynb
│ ├── dataset_prepare
│ │ ├── create_crops.m
│ │ ├── generatecrops.m
│ │ ├── ibims1_prepare.m
│ │ ├── ibims1_selected.mat
│ │ ├── mergenet_dataset_prepare.md
│ │ └── midas
│ │ ├── models
│ │ │ ├── base_model.py
│ │ │ ├── blocks.py
│ │ │ ├── midas_net.py
│ │ │ └── transforms.py
│ │ ├── run.py
│ │ └── utils.py
│ ├── demo.py
│ ├── eval(238, 238, 238); opacity: 0.6;">第一次运行测试遇到的报错
python main.py --config argument.yml
running on device 0
0%| | 0/1 [00:00<?, ?it/s]Current Source ==> moon
Running depth extraction at 1638526409.2872481
BoostingMonocularDepth/inputs/*.png
BoostingMonocularDepth/inputs/*.jpg
device: cuda
Namespace(Final=True, R0=False, R20=False, colorize_results=False, data_dir='inputs/', depthNet=0, max_res=inf, net_receptive_field_size=None, output_dir='outputs', output_resolution=1, pix2pixsize=1024, savepatchs=0, savewholeest=0)
...
...
Traceback (most recent call last):
...
File "/home/moli/anaconda3/envs/torch14/lib/python3.6/site-packages/imageio/core/request.py", line 260, in _parse_uri
raise FileNotFoundError("No such file: '%s'" % fn)
FileNotFoundError: No such file: '/home/moli/project/projectBy/nine/2021/3d-photo-inpainting/BoostingMonocularDepth/outputs/moon.png'解决方法如下
cp image/moon.jpg BoostingMonocularDepth/outputs/moon.png
- 并且把如下代码,两行清空目录的操作注释掉
2 RuntimeError: CUDA out of memory
RuntimeError: CUDA out of memory. Tried to allocate 1.17 GiB (GPU 0; 15.75 GiB total capacity; 2.56 GiB already allocated; 286.31 MiB free; 2.59 GiB reserved in total by PyTorch)
0%| | 0/1 [00:22<?, ?it/s]
Traceback (most recent call last):
File "main.py", line 76, in <module>
vis_photos, vis_depths = sparse_bilateral_filtering(depth.copy(), image.copy(), config, num_iter=config['sparse_iter'], spdb=False)
File "/home/moli/project/projectBy/nine/2021/3d-photo-inpainting/bilateral_filtering.py", line 31, in
这个问题、经验证,纯粹是 GPU 当时被其他用户占用;
第 0 块 显卡,闲置时,重新运行,该错误就消失了
3 ["Error 65544: b'X11: The DISPLAY environment variable is missing'"]
接下来,继续运行,遇到这个报错
这个报错,网上查了一些解决方法,于我并不适用,盲猜是因为我的服务器不具备、显示器、无法显示
Start Running 3D_Photo ...
Loading edge model at 1638849812.6169176
Loading depth model at 1638849815.373448
Loading rgb model at 1638849816.3655758
Writing depth ply (and basically doing everything) at 1638849817.4631581
Writing mesh file mesh/moon.ply ...
Making video at 1638850000.3338194
fov: 53.13010235415598
0%| | 0/1 [04:18<?, ?it/s]
Traceback (most recent call last):
File "main.py", line 141, in <module>
mean_loc_depth=mean_loc_depth)
File "/home/moli/project/projectBy/nine/2021/3d-photo-inpainting/mesh.py", line 2203, in output_3d_photo
proj='perspective')
File "/home/moli/project/projectBy/nine/2021/3d-photo-inpainting/mesh.py", line 2134, in __init__
self.canvas = scene.SceneCanvas(bgcolor=bgcolor, size=(canvas_size*factor, canvas_size*factor))
...
...
OSError: Could
not init glfw:
["Error 65544: b'X11: The DISPLAY environment variable is missing'"]
报错 github 上的讨论: github.com/openai/mujo…
2021-12- 07 重新更新的本部分内容,如果有小伙伴,参考到这里,并且顺利解决的话,欢迎 告知我一下哇
???? 可能遇到的报错总结
-
AttributeError: 'Graph' object has no attribute 'node'
- 分析: 原因是 没有 安装 networkx 或者 安装的版本 不匹配
正确安装即可:
pip install networkx==2.3