主要是学习 https://github.com/TachibanaYoshino/AnimeGANv2。学习过程见下面四个文档,是按照时间顺序来的。
- 1 AnimeGANv2 部署测试
- 2 AnimeGANv2 + Gradio 轻量展示
- 3 AnimeGANv2 onnx 模型调用尝试
- 4 为视频转编码以及添加音频
- 5 AnimeGANv2 后日谈
部署最终的程序请参考第五个文档。
(在 RTX 2080Ti 上,后续都是 RTX A4000)简单部署了 AnimeGANv2。并未做出其他调整。
环境:
conda create --prefix /cloud/animegan python=3.6 -y
conda activate /cloud/animegan
pip install --user tensorflow-gpu==1.15.0
pip install --user opencv-python==4.2.0.32
pip install --user tqdm
pip install --user numpy
pip install --user glob2
pip install --user argparse
pip install --user onnxruntime
conda install --prefix /cloud/animegan cudatoolkit==10.0.130 -y
conda install --prefix /cloud/animegan cudnn=7.6.0=cuda10.0_0 -y自动化:
sudo -i -u featurize bash << EOF
cp -r ~/work/AnimeGANv2 ~/AnimeGANv2
EOF测试:
python test.py --checkpoint_dir checkpoint/generator_Hayao_weight --test_dir dataset/test/HR_photo --save_dir Hayao/HR_photo
python video2anime.py --video video/input/お花見.mp4 --checkpoint_dir checkpoint/generator_Hayao_weight --output video/output尝试使用 Gradio 来展示。在这篇文章中,并未解决输出视频编码的问题——但是之后解决了。
换成了 python 3.8,添加了一些包。
conda create --prefix /cloud/newanime python=3.8 -y
conda activate /cloud/newanime
pip install --user opencv-python==4.2.0.32
pip install --user tqdm
pip install --user numpy
pip install --user glob2
pip install --user argparse
pip install --user onnxruntime
pip install --user gradio
pip install --user socksio
conda install --prefix /cloud/newanime cudatoolkit==10.0.130 -y
conda install --prefix /cloud/newanime cudnn=7.6.0=cuda10.0_0 -y
pip install --user nvidia-pyindex
pip install --user nvidia-tensorboard==1.15
pip install --user nvidia-tensorflow自动化:(这里已经接入了自己克隆的 AnimeGANv2 仓库)
cd ~/work/AnimeGANv2
git pull
cp -r ~/work/AnimeGANv2 ~/AnimeGANv2测试:
python app.py调用作者训练好的 onnx 模型,并尝试也调用 v3 中的模型,并成功。
卸载 onnxruntime,安装 onnxruntime-gpu。
由于使用了第四篇文章的 1 提到的 FFMPEG,故需要安装。
sudo apt update
sudo apt install ffmpeg -yconda create --prefix /cloud/newanime python=3.8 -y
conda activate /cloud/newanime
pip install --user opencv-python==4.2.0.32
pip install --user tqdm
pip install --user numpy
pip install --user glob2
pip install --user argparse
pip install --user onnxruntime-gpu
pip install --user gradio
pip install --user socksio
conda install --prefix /cloud/newanime cudatoolkit==10.0.130 -y
conda install --prefix /cloud/newanime cudnn=7.6.0=cuda10.0_0 -y
pip install --user nvidia-pyindex
pip install --user nvidia-tensorboard==1.15
pip install --user nvidia-tensorflow自动化:(加密的 onnx 模型不在仓库里放出,请自行破解并放到相应目录。这里是把 onnx 模型放到云盘然后复制到相应的位置)
sudo -i -u featurize bash << EOF
cd ~/work/AnimeGANv2
git pull
cp -r ~/work/AnimeGANv2 ~/AnimeGANv2
cp ~/work/AnimeGANv3_H64_model0.onnx ~/AnimeGANv2/pb_and_onnx_model/AnimeGANv3_H64_model0.onnx
EOF此外注意修改 onnx 模型名称:AnimeGANv3_H64_model0.onnx,不要小写。
测试:
python onnx_video2anime.py --video examples/2.mp4 --output output --model PortraitSketch_25 --onnx pb_and_onnx_model/AnimeGANv3_PortraitSketch_25.onnx
python onnx_app.py如标题,解决了第二篇文档中的问题,且附上了原视频音轨。
需要安装 FFMPEG。
sudo apt update
sudo apt install ffmpeg -yconda create --prefix /cloud/newanime python=3.8 -y
conda activate /cloud/newanime
pip install --user opencv-python==4.2.0.32
pip install --user tqdm
pip install --user numpy
pip install --user glob2
pip install --user argparse
pip install --user onnxruntime-gpu
pip install --user gradio
pip install --user socksio
conda install --prefix /cloud/newanime cudatoolkit==10.0.130 -y
conda install --prefix /cloud/newanime cudnn=7.6.0=cuda10.0_0 -y
pip install --user nvidia-pyindex
pip install --user nvidia-tensorboard==1.15
pip install --user nvidia-tensorflow自动化:
sudo -i -u featurize bash << EOF
cd ~/work/AnimeGANv2
git pull
cp -r ~/work/AnimeGANv2 ~/AnimeGANv2
cp ~/work/AnimeGANv3_H64_model0.onnx ~/AnimeGANv2/pb_and_onnx_model/AnimeGANv3_H64_model0.onnx
EOF测试略。
conda create --prefix /cloud/newanime python=3.8 -y
conda activate /cloud/newanime
pip install --user opencv-python==4.2.0.32
pip install --user tqdm
pip install --user numpy
pip install --user glob2
pip install --user argparse
pip install --user onnxruntime-gpu
pip install --user gradio
pip install --user socksio
conda install --prefix /cloud/newanime cudatoolkit==10.0.130 -y
conda install --prefix /cloud/newanime cudnn=7.6.0=cuda10.0_0 -y
pip install --user nvidia-pyindex
pip install --user nvidia-tensorboard==1.15
pip install --user nvidia-tensorflow
pip install --user av自动化:
sudo -i -u featurize bash << EOF
cd ~/work/AnimeGANv2
git pull
cp -r ~/work/AnimeGANv2 ~/AnimeGANv2
cp ~/work/AnimeGANv3_H64_model0.onnx ~/AnimeGANv2/pb_and_onnx_model/AnimeGANv3_H64_model0.onnx
EOF测试:
python onnx_video2anime_pyav.py --video examples/2.mp4 --output output --model PortraitSketch_25 --onnx pb_and_onnx_model/AnimeGANv3_PortraitSketch_25.onnx
python onnx_app_pyav.py本文重点是提供了一次完整的,在其他平台运行本项目的实践。可以和第一篇文章对比,发现部署的进步!
onnx_app_pyav_requirements.txt为onnx_app_pyav.py准备的一部分依赖项安装,在第五篇中提到frpc_linux_amd64_v0.2为onnx_app_pyav.pyGradio 所需的内网穿透文件,在第无篇中提到
app.py第二篇文章中 Gradio 展示,仍使用 tf + 导入 ckpt 的方式,没有编码和音轨的后续处理onnx_video2anime.py第三篇文章中调用 onnx 版本的video2anime.py,还加上了第四篇文章 1 的编码和音轨的后续处理onnx_app.py第三篇文章中调用 onnx 版本的app.py,还加上了第四篇文章 1 的编码和音轨的后续处理so_video2anime.py第三篇文章中调用 so 文件的video2anime.py,因为 so 本身原因只能使用 CPUonnx_video2anime_pyav.py第四篇文章中使用 PyAV 处理视频的onnx_video2anime.py(即第四篇文章 2 的编码和音轨的后续处理)onnx_app_pyav.py第四篇文章中使用 PyAV 处理视频的onnx_app.py(即第四篇文章 2 的编码和音轨的后续处理)
- 从 hugging face 的 v3 仓库中得到的动态链接文件 https://huggingface.co/spaces/TachibanaYoshino/AnimeGANv3/
- 从 GitHub 的 v3 仓库中得到的 onnx 模型 https://github.com/TachibanaYoshino/AnimeGANv3
- 从 hugging face 的 v2 仓库中得到的 onnx 模型
examples/文件夹,里面存放用于样例输入,也是各类app.py读取样例的路径