當前位置: 妍妍網 > 碼農

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時代更靠近一點