图片转换为 mp4 video,一项神奇的技术【CVPR 2020】

简介: 图像修复-代码环境搭建-知识总结
声明:本博文做了该代码的测试分享,敬请查阅;

1-0

本文、节选自 图像修复专栏、敬请查阅

📔 基础信息

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;

生成示例:
  • 原图:

2

  • 效果如下(mp4 动画 转了 gif ,水印没有去掉哈):

6

📙 测试 【版本二》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 ..."
wget https://filebox.ece.vt.edu/~jbhuang/project/3DPhoto/model/latest_net_G.pth
mv latest_net_G.pth BoostingMonocularDepth/pix2pix/checkpoints/mergemodel/
wget https://github.com/intel-isl/MiDaS/releases/download/v2/model-f46da743.pt
mv model-f46da743.pt BoostingMonocularDepth/midas/model.pt
此时,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
│   ├── evaluation
│   │   ├── D3R.m
│   │   ├── evaluatedataset.m
│   │   ├── extractD3Rpoints.m
│   │   ├── index2index.m
│   │   └── ord.m
│   ├── figures
│   │   ├── explanation.png
│   │   ├── lunch_edited.png
│   │   ├── lunch_orig.png
│   │   ├── lunch_rgb.jpg
│   │   ├── merge.png
│   │   ├── observation.png
│   │   ├── overview.png
│   │   ├── patchexpand.gif
│   │   ├── patchmerge.gif
│   │   ├── patchselection.gif
│   │   ├── ressearch.png
│   │   ├── sample2_leres.jpg
│   │   ├── sample2_midas.png
│   │   └── video_thumbnail.jpg
│   ├── inputs
│   │   └── moon.jpg
│   ├── lib
│   │   ├── __init__.py
│   │   ├── multi_depth_model_woauxi.py
│   │   ├── net_tools.py
│   │   ├── network_auxi.py
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-36.pyc
│   │   │   ├── multi_depth_model_woauxi.cpython-36.pyc
│   │   │   ├── net_tools.cpython-36.pyc
│   │   │   ├── network_auxi.cpython-36.pyc
│   │   │   ├── Resnet.cpython-36.pyc
│   │   │   └── Resnext_torch.cpython-36.pyc
│   │   ├── Resnet.py
│   │   ├── Resnext_torch.py
│   │   ├── spvcnn_classsification.py
│   │   ├── spvcnn_utils.py
│   │   └── test_utils.py
│   ├── LICENSE
│   ├── midas
│   │   ├── model.pt
│   │   ├── models
│   │   │   ├── base_model.py
│   │   │   ├── blocks.py
│   │   │   ├── midas_net.py
│   │   │   ├── __pycache__
│   │   │   │   ├── base_model.cpython-36.pyc
│   │   │   │   ├── blocks.cpython-36.pyc
│   │   │   │   ├── midas_net.cpython-36.pyc
│   │   │   │   └── transforms.cpython-36.pyc
│   │   │   └── transforms.py
│   │   ├── __pycache__
│   │   │   └── utils.cpython-36.pyc
│   │   └── utils.py
│   ├── outputs
│   │   └── moon.png
│   ├── pix2pix
│   │   ├── checkpoints
│   │   │   ├── mergemodel
│   │   │   │   └── latest_net_G.pth
│   │   │   └── void
│   │   │       └── test_opt.txt
│   │   ├── data
│   │   │   ├── base_dataset.py
│   │   │   ├── depthmerge_dataset.py
│   │   │   ├── image_folder.py
│   │   │   ├── __init__.py
│   │   │   └── __pycache__
│   │   │       ├── base_dataset.cpython-36.pyc
│   │   │       ├── depthmerge_dataset.cpython-36.pyc
│   │   │       ├── image_folder.cpython-36.pyc
│   │   │       └── __init__.cpython-36.pyc
│   │   ├── models
│   │   │   ├── base_model_hg.py
│   │   │   ├── base_model.py
│   │   │   ├── __init__.py
│   │   │   ├── networks.py
│   │   │   ├── pix2pix4depth_model.py
│   │   │   └── __pycache__
│   │   │       ├── base_model.cpython-36.pyc
│   │   │       ├── __init__.cpython-36.pyc
│   │   │       ├── networks.cpython-36.pyc
│   │   │       └── pix2pix4depth_model.cpython-36.pyc
│   │   ├── options
│   │   │   ├── base_options.py
│   │   │   ├── __init__.py
│   │   │   ├── __pycache__
│   │   │   │   ├── base_options.cpython-36.pyc
│   │   │   │   ├── __init__.cpython-36.pyc
│   │   │   │   └── test_options.cpython-36.pyc
│   │   │   ├── test_options.py
│   │   │   └── train_options.py
│   │   ├── test.py
│   │   ├── train.py
│   │   └── util
│   │       ├── get_data.py
│   │       ├── guidedfilter.py
│   │       ├── html.py
│   │       ├── image_pool.py
│   │       ├── __init__.py
│   │       ├── __pycache__
│   │       │   ├── guidedfilter.cpython-36.pyc
│   │       │   ├── __init__.cpython-36.pyc
│   │       │   └── util.cpython-36.pyc
│   │       ├── util.py
│   │       └── visualizer.py
│   ├── __pycache__
│   │   └── utils.cpython-36.pyc
│   ├── README.md
│   ├── requirements.txt
│   ├── run.py
│   ├── structuredrl
│   │   └── models
│   │       ├── DepthNet.py
│   │       ├── networks.py
│   │       ├── resnet.py
│   │       └── syncbn
│   │           ├── LICENSE
│   │           ├── make_ext.sh
│   │           ├── modules
│   │           │   ├── functional
│   │           │   │   ├── __init__.py
│   │           │   │   ├── _syncbn
│   │           │   │   │   ├── build.py
│   │           │   │   │   ├── _ext
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   └── syncbn
│   │           │   │   │   │       └── __init__.py
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   └── src
│   │           │   │   │       ├── common.h
│   │           │   │   │       ├── syncbn.cpp
│   │           │   │   │       ├── syncbn.cu
│   │           │   │   │       ├── syncbn.cu.h
│   │           │   │   │       ├── syncbn.cu.o
│   │           │   │   │       └── syncbn.h
│   │           │   │   └── syncbn.py
│   │           │   ├── __init__.py
│   │           │   └── nn
│   │           │       ├── __init__.py
│   │           │       └── syncbn.py
│   │           ├── README.md
│   │           ├── requirements.txt
│   │           └── test.py
│   └── utils.py
├── boostmonodepth_utils.py
├── checkpoints
│   ├── color-model.pth
│   ├── depth-model.pth
│   └── edge-model.pth
├── depth
│   ├── moon.npy
│   └── moon.png
├── DOCUMENTATION.md
├── download.sh
├── image
│   └── moon.jpg
├── LICENSE
├── main.py
├── mesh
├── mesh.py
├── mesh_tools.py
├── MiDaS
│   ├── MiDaS_utils.py
│   ├── model.pt
│   ├── monodepth_net.py
│   ├── __pycache__
│   │   ├── MiDaS_utils.cpython-36.pyc
│   │   ├── monodepth_net.cpython-36.pyc
│   │   └── run.cpython-36.pyc
│   └── run.py
├── model-f46da743.pt
├── networks.py
├── __pycache__
│   ├── bilateral_filtering.cpython-36.pyc
│   ├── boostmonodepth_utils.cpython-36.pyc
│   ├── mesh.cpython-36.pyc
│   ├── mesh_tools.cpython-36.pyc
│   ├── networks.cpython-36.pyc
│   └── utils.cpython-36.pyc
├── pyproject.toml
├── README.md
├── requirements.txt
├── utils.py
└── video
    ├── moon_circle.mp4
    ├── moon_dolly-zoom-in.mp4
    ├── moon_swing.mp4
    └── moon_zoom-in.mp4

45 directories, 165 files

可能遇到的报错总结如下

1 FileNotFoundError: No such file: '../outputs/moon.png

第一次运行测试遇到的报错
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
  • 并且把如下代码,两行清空目录的操作注释掉

1-0

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 sparse_bilateral_filtering
    vis_image[u_over > 0] = np.array([0, 0, 0])
IndexError: boolean index did not match indexed array along dimension 2; dimension is 3 but corresponding boolean dimension is 5
这个问题、经验证,纯粹是 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 上的讨论: https://github.com/openai/mujoco-py/issues/578

1-1

2021-12- 07 重新更新的本部分内容,如果有小伙伴,参考到这里,并且顺利解决的话,欢迎 告知我一下哇

📜 可能遇到的报错总结

  • AttributeError: 'Graph' object has no attribute 'node'
  • 分析: 原因是 没有 安装 networkx 或者 安装的版本 不匹配
正确安装即可:
pip install networkx==2.3

📙 博文此次运行代码+模型分享

有需要此次源码的小伙伴,文末关注公号或者搜索关注本博客同名公号,公号后台,回复 20200105 即可自动获取本博文此次博客对应的 运行代码+模型分享

这份代码对应 ## 📙 测试 【版本一》2020】,当时的确运行成功

20200105
祝科研顺利,天天开心

9-6

765_blue.jpg

目录
相关文章
|
安全 网络安全 数据安全/隐私保护
【计算机网络】URL概念及组成
【计算机网络】URL概念及组成
|
Java 数据库连接 Nacos
Nacos报错问题之启动不了如何解决
Nacos是一个开源的、易于部署的动态服务发现、配置管理和服务管理平台,旨在帮助微服务架构下的应用进行快速配置更新和服务治理;在实际运用中,用户可能会遇到各种报错,本合集将常见的Nacos报错问题进行归纳和解答,以便使用者能够快速定位和解决这些问题。
2601 2
|
人工智能 监控 数据可视化
BISHENG下一代企业AI应用的“全能型“LLM软件
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
11月前
|
人工智能 数据可视化 API
新手轻松上手:零基础搭建Qwen智能体指南
本文详细介绍了如何从零开始搭建Qwen-Agent智能体,涵盖环境配置、模型部署、工具调用及多Agent协作等关键步骤,帮助无AI经验的开发者快速上手,实现从环境准备到智能体运行的完整流程。
|
前端开发 JavaScript API
React 搜索组件 Search Box
本文介绍了如何在 React 中实现一个搜索组件,从基础的输入框和按钮创建开始,逐步讲解样式美化、常见问题及易错点的解决方法,包括输入延迟、空值处理、错误处理和状态管理等,帮助开发者构建高效、可靠的搜索功能。
859 4
|
SQL 安全 PHP
thinkphp5之sql注入漏洞-builder处漏洞
在Web应用开发中,SQL注入是一种需要高度警惕的安全漏洞。通过深入理解ThinkPHP5中的SQL查询机制,并结合安全编码实践,开发者可以有效防止SQL注入攻击,保障应用的安全性和稳定性。
633 13
|
人工智能 开发框架 算法
Qwen-Agent:阿里通义开源 AI Agent 应用开发框架,支持构建多智能体,具备自动记忆上下文等能力
Qwen-Agent 是阿里通义开源的一个基于 Qwen 模型的 Agent 应用开发框架,支持指令遵循、工具使用、规划和记忆能力,适用于构建复杂的智能代理应用。
12713 13
Qwen-Agent:阿里通义开源 AI Agent 应用开发框架,支持构建多智能体,具备自动记忆上下文等能力
|
文字识别
统一多模态Embedding, 通义实验室开源GME系列模型
随着多媒体应用的迅猛发展,用户产生的数据类型日益多样化,不再局限于文本,还包含大量图像、音频和视频等多模态信息。这为信息检索带来了前所未有的挑战与机遇。传统的信息检索模型多关注单一模态,如仅对文本或图像进行分析和搜索。
3530 6
|
C++ Python
Python 技术篇-将项目打包成whl文件实例演示,whl包的制作方法
Python 技术篇-将项目打包成whl文件实例演示,whl包的制作方法
1829 0
Python 技术篇-将项目打包成whl文件实例演示,whl包的制作方法
|
机器学习/深度学习 算法 搜索推荐
"震撼揭秘!阿里云AIGC智能图像识别:黑科技如何颠覆你的视界,让图像识别秒变超能力,生活工作全面革新!"
【8月更文挑战第12天】在数字化浪潮中,图像数据激增,高效准确处理成为关键。阿里云智能图像识别服务(AIGC)应运而生,依托深度学习与计算机视觉技术,实现图像特征精确提取与理解。通过大规模数据训练及优化算法,AIGC在图像分类、目标检测等方面表现出色。其应用场景广泛,从电商的商品识别到内容安全审核,再到智能交通和医疗影像分析,均展现出巨大潜力。示例代码展示了AIGC图像生成的基本流程,彰显其技术实力与未来前景。
697 1

热门文章

最新文章