Remember that if you don’t prioritize your life someone else will.
——《Essentialism: The Disciplined Pursuit of Less》——England/Greg McKeown
近些天磕磕绊绊,不过总算是完成了 MVIMP 项目一些初始的功能集成。MVIMP 项目的初心是把和多媒体处理(图像和视频)相关的一些 AI 能力集成到一个 repo 中,实现一行代码实现一个开箱即用的AI功能
的小目标。
这可能是我写过 Case 系列中最短的一篇,毕竟 MVIMP 自身追求就是一行代码实现一个功能(AI as a service, AIaaS),希望大家喜欢w。
MVIMP
MVIMP
(Mixed Video and Image Manipulation Program)名字的灵感来自于GIMP
(GNU Image Manipulation Program),也希望更多的人可以尝试使用它w
目前MVIMP中添加了如下三个第三方功能,代码目录及各文件功能如下:
third_party
: 存放第三方repo,本打算使用submodule的模式,不过因为各个代码库代码风格不同无法做到统一,所以就保留LISENCE做minimize的二次开发mvimp_utils
: 存放处理文件和视频的单独功能模块,用于辅助推理preparation.py
: 所有的准备工作集成在一起inference_animegan.py
: 统一输入输出接口,辅助AnimeGAN的推理inference_dain.py
: 统一输入输出接口,辅助DAIN的推理inference_photo3d.py
: 统一输入输出接口,辅助3d-photo-inpainting的推理
第三方功能的输入输出定义如下:
模型 | 输入 | 输出 | 是否并行 |
---|---|---|---|
AnimeGAN | 图片(s) | 图片(s) | 可并行 |
DAIN | 视频 | 视频 | 不可并行 |
Photo3D | 图片(s) | 视频 | 可并行(不推荐) |
AnimeGAN
AnimeGAN的原始仓库位于 TachibanaYoshino/AnimeGAN, 作为《 AnimeGAN:一种用于照片动画的新型轻量级GAN》论文的开放源代码,它使用GAN框架将真实世界的照片转换为动漫图像。
系统要求
- TensorFLow 1.15.2
- CUDA 10.0(tested locally) / 10.1(colab)
- Python 3.6.8(3.6+/3.7+/3.8+)
- opencv
- tqdm
- numpy
- glob
- argparse
使用方法
本地运行
1 | Step 1: 准备工作 |
Colab云端运行
我们也可以选择在 playground 模式下在Colab上运行:
https://colab.research.google.com/drive/1bpwUFcr5i38_P3a0r3Qm9Dvkl-MS_Y1y?usp=sharing
Photo3D
Photo3D的原始仓库位于 vt-vl-lab/3d-photo-inpainting,Photo3D输入单个RGB-D输入图像并将其转换为3D照片(视频)的方法。
系统要求
- PyTroch 1.5.0
- CUDA 10.1(tested locally/colab)
- Python 3.6.8(3.6+/3.7+/3.8+)
- 其他的python依赖需求写在requirements.txt中,运行
preparation.py
时将自动添加
使用方法
本地运行
1 | Step 1: 准备工作 |
Colab云端运行
我们也可以选择在 playground 模式下在Colab上运行:
https://colab.research.google.com/drive/1VAFCN8Wh4DAY_HDcwI-miNIBomx_MZc5?usp=sharing
需要注意的是,Photo3D所需的运行时内存随着longer_side_len
(输出视频最大长/宽)的参数增加而显著增加,如果是Colab Pro用户建议开启高内存
的运行时,并尽量一次推理一张图片.
参数说明
--fps
or-f
: 设置输出视频的FPS.--frames
or-n
: 设置输出视频的帧数.--longer_side_len
or-l
: 设置输出视频的最长边边长.
DAIN
DAIN的原始仓库位于 baowenbo/DAIN,DAIN通过检测深度感知流投影层来合成中间流,进行视频帧内插.
系统要求
- FFmpeg
- PyTroch 1.4.0
- CUDA 10.0(tested locally/colab)
- Python 3.6.8(3.6+/3.7+/3.8+)
- GCC 7.5 (Compiling PyTorch 1.4.0 extension files (.c/.cu))
需要注意当前版本的DAIN不支持PyTorch1.5.0版本,所以我们在本地和云端运行环境中都需要手动安装 torch-1.4.0+cu100 和 torchvision-0.5.0+cu100. 参见issue.
1 | 安装 PyTorch 1.4.0(CUDA 10.0) |
使用方法
本地运行
1 | Step 1: 准备工作 |
Colab云端运行
我们也可以选择在 playground 模式下在Colab上运行:
https://colab.research.google.com/drive/1pIPHQAu7z4Z3LXztCUXiDyBaIlOqy4Me?usp=sharing
参数说明
--input_video
or-input
: 设置输入视频名称.--time_step
or-ts
: 设置插帧倍数,0.5对应2X,0.25对应4X,0.125对应8X.--high_resolution
or-hr
: 默认False.对于视频格式为1080p(+)的视频而言V100的显存不足以运行DAIN,设置True将一帧拆分为4块分别处理以减少显存占用.
TODO
- Dockerized deployment.
- https://roxanneluo.github.io/Consistent-Video-Depth-Estimation/ 中提及的一些有趣的视频效果
Reference
- https://github.com/CyFeng16/MVIMP
- https://github.com/TachibanaYoshino/AnimeGAN
- https://github.com/vt-vl-lab/3d-photo-inpainting
- https://arxiv.org/abs/2004.04727
- https://github.com/baowenbo/DAIN
- https://arxiv.org/abs/1904.00830
- https://roxanneluo.github.io/Consistent-Video-Depth-Estimation/