計畫簡介
APISR 是一款開源的基於現實世界動漫畫面的超分辨率恢復與增強工具。該工具專門設計用於改善低品質、低分辨率的動漫影像和視訊。它能有效處理各種現實場景中的退化問題,提升畫面品質。此外,APISR 使用最新的技術和研究成果,為動漫愛好者及專業制作人員提供高效的解決方案,進一步推動動漫產業的技術發展。
掃碼加入AI交流群
獲得更多技術支持和交流
(請註明自己的職業)
DEMO
安裝
git clone [email protected]:Kiteretsu77/APISR.git
cd APISR
# Create conda env
conda create -n APISR python=3.10
conda activate APISR
# Install Pytorch and other packages needed
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
# 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-nightly
pip 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時代更靠近一點