当前位置: 欣欣网 > 码农

APISR:开源视频高清化工具,低画质的动漫和小时候的动画片都变高清了

2024-05-23码农

项目简介

APISR 是一款开源的基于现实世界动漫画面的超分辨率恢复与增强工具。该工具专门设计用于改善低质量、低分辨率的动漫图像和视频。它能有效处理各种现实场景中的退化问题,提升画面质量。此外,APISR 使用最新的技术和研究成果,为动漫爱好者及专业制作人员提供高效的解决方案,进一步推动动漫产业的技术发展。

扫码加入AI交流群

获得更多技术支持和交流

(请注明自己的职业)

DEMO

安装

git clone [email protected]:Kiteretsu77/APISR.gitcd APISR# Create conda envconda create -n APISR python=3.10conda activate APISR# Install Pytorch and other packages neededpip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118pip install -r requirements.txt# To be absolutely sure that the tensorboard can execute. I recommend the following CMD from "https://github.com/pytorch/pytorch/issues/22676#issuecomment-534882021"pip uninstall tb-nightly tensorboard tensorflow-estimator tensorflow-gpu tf-estimator-nightlypip install tensorflow# Install FFMPEG [Only needed for training and dataset curation stage; inference only does not need ffmpeg] (the following is for the linux system, Windows users can download ffmpeg from https://ffmpeg.org/download.html)sudo apt install ffmpeg

Gradio快速推理

Gradio 选项无需用户准备权重,但每次只能处理一张图片。

在线演示可以在以下网址找到:HuggingFace 或 Colab。

可以通过运行以下代码创建本地 Gradio:

python app.py

注意:Gradio 是为了快速推断,因此将自动下载现有权重并将图像降采样至 720P,以减少 VRAM 消耗。如需进行完整的推理,请查看下面的常规推理部分。

常规推理

从model zoo下载模型权重,并将权重放到「pretrained」文件夹中。

https://github.com/Kiteretsu77/APISR/blob/main/docs/model_zoo.md

然后,执行

python test_code/inference.py --input_dir XXX --weight_path XXX --store_dir XXX

如果你下载的权重是论文权重,那么 test_code/inference.py 的默认参数能够执行「assets」文件夹中的样本图片。

数据集管理

数据集整理管道位于 dataset_curation_pipeline 文件夹中。

你可以通过将视频(mp4 或其他格式)发送到管道中来收集你的数据集,并从视频源中获取最少压缩和最具信息量的图像。

从下方链接下载 IC9600 权重(ck.pth)并将其放置在 "pretrained/" 文件夹中(或者,你可以在以下 collect.py 执行中定义不同的 --IC9600_pretrained_weight_path)

https://drive.google.com/drive/folders/1N3FSS91e7FkJWUKqT96y_zcsG9CRuIJw

如果你有一个包含视频源的文件夹,你可以执行以下命令来获取一个基本的数据集(需要安装 ffmpeg):

python dataset_curation_pipeline/collect.py --video_folder_dir XXX --save_dir XXX

一旦你获得了具有不同宽高比和分辨率的图像数据集,你可以运行以下脚本

注意检查 uncropped_hr、degrade_hr_dataset_path 和 train_hr_dataset_path(我们将在训练阶段的 opt.py 设置中使用这些路径)

为了降低内存利用率和提高训练效率,在数据准备阶段我们预处理所有耗时的伪高清图像(train_hr_dataset_path)。

但是,为了创建面向预测的自然输入压缩,在每个周期中,从未裁剪的高清图像(uncropped_hr)开始降级,低分辨率的合成图像也同时存储。裁剪的高清高清数据集(degrade_hr_dataset_path)和裁剪的伪高清数据集(train_hr_dataset_path)在数据准备阶段固定,训练期间不会修改。

注意检查是否有任何 OOM(内存不足)现象。如果有,将无法正确完成数据集准备。通常,这是因为 scripts/anime_strong_usm.py 中的 num_workers 设置太大了!

训练

整个训练过程可以在一台 RTX3090/4090 上完成!

1. 准备一个数据集(AVC / API),该数据集由数据集整理的第二步和第三步预处理。

你需要在执行以下命令之前准备好三个文件夹:

--> uncropped_hr:未裁剪的高清原图(GT)

--> degrade_hr_dataset_path:裁剪过的高清原图(GT)

--> train_hr_dataset_path:裁剪过的伪高清(Pseudo-GT)

2.训练:请仔细检查 opt.py 以设置你想要的超参数(通常只需修改常改设置即可)。

注意1:执行以下操作时,我们将创建一个「tmp」文件夹来保存生成的低分辨率图像以供检查。如果你想,可以修改代码删除它。

注意2:如果你有强大的 CPU,并且想要加速,你可以在 opt.py 中增加 parallel_num。

第一步(Net L1 损失训练):运行

python train_code/train.py

训练后的模型权重将保存在 'saved_models' 文件夹中(与checkpoint相同)

第二步(GAN 对抗性训练):

· 在 opt.py 中将 opt['architecture'] 改为 "GRLGAN" 并在需要时更改批量大小。顺便说一下,我认为对于个人训练来说,不需要为 GAN 训练 300K 迭代。我这样做是为了遵循 AnimeSR 和 VQDSR 中的相同设置,但 100K ~ 130K 应该可以获得不错的视觉效果。

· 根据之前的工作,GAN 应该从 L1 损失预训练网络开始,所以请带上一个预训练的路径(下面的默认路径应该就可以)。

python train_code/train.py --pretrained_path saved_models/grl_best_generator.pth

项目链接

https://github.com/Kiteretsu77/APISR

关注「 开源AI项目落地 」公众号

与AI时代更靠近一点