APISR:受动画制作启发的真实世界动画超分辨率技术(CVPR 2024)
APISR是一个图像和视频放大器,旨在恢复和增强来自真实场景中各种质量退化的低质量低分辨率动画图像和视频源。
🔥 更新 | 👀 可视化 | 🔧 安装 | 🏰 模型库 | ⚡ 推理 | 🧩 数据集制作 | 💻 训练
更新 🔥🔥🔥
- 发布APISR论文版本实现
- 发布不同放大倍数的权重(2倍、4倍等)
- Gradio演示(在线版)
- 提供不同架构的权重(DAT-Small)
- 添加与Toon Crafter结合的结果
- 发布使用扩散生成图像训练的权重
- 创建项目页面
- 为中国用户提供在线演示 && 中文README
:star: 如果你喜欢APISR,请给这个仓库点个星。谢谢! :hugs:
可视化(点击查看最佳效果!)👀
Toon Crafter示例放大
安装 🔧
git clone git@github.com:Kiteretsu77/APISR.git
cd APISR
# 创建conda环境
conda create -n APISR python=3.10
conda activate APISR
# 安装PyTorch和其他所需包
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
# 为确保tensorboard能够正常执行,我建议执行以下命令(来自 "https://github.com/pytorch/pytorch/issues/22676#issuecomment-534882021")
pip uninstall tb-nightly tensorboard tensorflow-estimator tensorflow-gpu tf-estimator-nightly
pip install tensorflow
# 安装FFMPEG [仅在训练和数据集制作阶段需要;仅推理不需要ffmpeg](以下适用于Linux系统,Windows用户可以从 https://ffmpeg.org/download.html 下载ffmpeg)
sudo apt install ffmpeg
Gradio快速推理 ⚡⚡⚡
Gradio选项无需用户自行准备权重,但每次只能处理一张图像。
在线演示可以在 https://huggingface.co/spaces/HikariDawn/APISR (HuggingFace) 或 https://colab.research.google.com/github/camenduru/APISR-jupyter/blob/main/APISR_jupyter.ipynb (Colab) 找到
本地Gradio可以通过运行以下命令创建:
python app.py
注意: Gradio专为快速推理设计,因此我们会自动下载现有权重并降采样至720P以减少显存消耗。如需完整的推理,请查看下面的常规推理部分。
常规推理 ⚡⚡
-
从模型库下载模型权重并将权重放入"pretrained"文件夹。
-
然后,执行(单张图像/视频或包含图像和视频的目录均可!)
python test_code/inference.py --input_dir XXX --weight_path XXX --store_dir XXX
如果你下载的是论文权重,test_code/inference.py的默认参数可以直接执行"assets"文件夹中的示例图像
数据集制作 🧩
我们的数据集制作流程位于dataset_curation_pipeline文件夹中。
你可以通过将视频(mp4或其他格式)送入流程来收集数据集,并获取视频源中压缩最少、信息最丰富的图像。
-
从 https://drive.google.com/drive/folders/1N3FSS91e7FkJWUKqT96y_zcsG9CRuIJw 下载IC9600权重(ck.pth)并将其放置在"pretrained/"文件夹中(否则,你可以在执行以下collect.py时定义不同的**--IC9600_pretrained_weight_path**)
-
对于包含视频源的文件夹,你可以执行以下命令获取基本数据集(需要安装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 设置得太大!
bash scripts/prepare_datasets.sh
训练 💻
整个训练过程可以在一块 RTX3090/4090 上完成!
-
准备一个经过数据集整理中步骤 2 和 3 预处理的数据集(AVC / API)
在执行以下命令之前,你需要准备 3 个文件夹:
--> uncropped_hr:未裁剪的真实图像
--> degrade_hr_dataset_path:裁剪后的真实图像
--> train_hr_dataset_path:裁剪后的伪真实图像
-
训练:请仔细检查 opt.py 以设置你想要的超参数(通常只需修改常变设置即可)。
注意1:执行以下操作时,我们将创建一个"tmp"文件夹来存放生成的低分辨率图像以进行完整性检查。如果需要,你可以修改代码删除它。
注意2:如果你有强大的 CPU,想要加速,可以在 opt.py 中增加 parallel_num。
步骤1(网络 L1 损失训练):运行
python train_code/train.py
训练好的模型权重将保存在"saved_models"文件夹中(与检查点相同)
步骤2(GAN 对抗 训练):
-
将 opt.py 中的 opt['architecture'] 更改为 "GRLGAN",并根据需要更改 batch size。顺便说一句,我认为对于个人训练,不需要训练 300K 次迭代的 GAN。我这样做是为了遵循与 AnimeSR 和 VQDSR 相同的设置,但 100K ~ 130K 应该能得到不错的视觉效果。
-
按照之前的工作,GAN 应该从预训练的 L1 损失网络开始,所以请携带一个 pretrained_path(下面的默认路径应该没问题)
python train_code/train.py --pretrained_path saved_models/grl_best_generator.pth
-
引用
如果我们的工作对你的研究有用,请引用我们。
@inproceedings{wang2024apisr,
title={APISR: Anime Production Inspired Real-World Anime Super-Resolution},
author={Wang, Boyang and Yang, Fengyu and Yu, Xihang and Zhang, Chao and Zhao, Hanbin},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={25574--25584},
year={2024}
}
免责声明
本项目仅供学术用途。我们对模型权重和样本图像的分发不承担责任。用户对自己的行为承担全部责任。 项目贡献者在法律上与用户的行为无关,也不对其负责。
许可证
本项目在 GPL 3.0 许可证 下发布。另请查看免责声明。
📧 联系方式
如果你有任何问题,请随时通过 hikaridawn412316@gmail.com 或 boyangwa@umich.edu 与我联系。
🧩 使用 APISR 的项目
如果你在项目中开发/使用 APISR,欢迎告诉我。我会在这里列出所有项目。谢谢!
- 快速动漫超分辨率加速:https://github.com/Kiteretsu77/FAST_Anime_VSR
- ComfyUI:https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR 和 https://github.com/kijai/ComfyUI-APISR
- Jupyter Notebook:https://github.com/camenduru/APISR-jupyter
🤗 致谢
- VCISR:我的代码基于我之前的论文(WACV 2024)。
- IC9600:数据集整理流程使用 IC9600 代码来评分图像复杂度。
- danbooru-pretrained:我们的动漫数据集(Danbooru)预训练 RESNET50 模型。
- Jupyter Demo:Jupyter notebook 演示来自 camenduru。
- AVIF&HEIF:AVIF 和 HEIF 的降质来自 pillow_heif。
- DAT:我们在模型库中用于 4 倍缩放的 DAT 架构来自这个链接。