零基礎(chǔ)手把手教你如何在windows使用Real-CUGAN超分模型并分享一些使用細節(jié)(非GUI版)
使用PyTorch版的原因
up先前使用的是topaz來超分動漫,最近看到了B站的超分模型CUGAN,于是就下載了GUI版試試,結(jié)果還是和topaz一樣,吃不滿顯存和核心,推理速度上不去。推測原因可能是GUI版提供可以調(diào)節(jié)的參數(shù)較少,無法對特定的硬件配置進行優(yōu)化。所以想著使用pytorch版,參數(shù)可以自己根據(jù)電腦配置進行調(diào)節(jié),以期提高推理速度。
官方項目及PyTorch版本下載地址
項目地址:https://github.com/bilibili/ailab/tree/main/Real-CUGAN
下載鏈接:https://github.com/bilibili/ailab/releases/tag/Real-CUGAN
百度網(wǎng)盤:https://pan.baidu.com/s/10NbgnusDucllKiE0sgBWvQ 提取碼:ds2a
個人平臺及操作系統(tǒng)
CPU:Ryzen 5900X
GPU:RTX 4090(驅(qū)動:Nvidia Studio 526.98)
內(nèi)存:64GB
系統(tǒng):windows10專業(yè)工作站版22H2
系統(tǒng)環(huán)境要求以及下載與解壓

①打開cmd,輸入nvidia-smi,查看當前的驅(qū)動版本以及該驅(qū)動支持的最高cuda版本

如果驅(qū)動的支持的cuda版本不符合官方要求,請先升級驅(qū)動。
②下載與解壓

根據(jù)自己配置下載,up下載的是圖中第一個,最好解壓到磁盤根目錄,如果非要解壓到子目錄,請保證路徑?jīng)]有中文。
③這是最新的pro模型,推薦下載。


解壓后將紅框的文件復(fù)制到CUGAN模型文件的根目錄中,將藍框的文件復(fù)制到目錄中的runtime文件夾中。
ps:之后會將整理好的會放在評論區(qū),有需要的自取。
環(huán)境搭建
①環(huán)境要求

②下載并安裝anaconda
anaconda下載地址:https://www.anaconda.com/products/distribution#Downloads
安裝目錄放在磁盤根目錄即可(可以不放在C盤)。
③創(chuàng)建環(huán)境
打開anaconda prompt,輸入conda create -n env_name(環(huán)境名稱) python=3.6(對應(yīng)的python版本號)

up這里創(chuàng)建的是一個名為CUGAN,python版本的3.6的環(huán)境。
注意:該項目是基于python3.6開發(fā)的,所以一定要使用python3.6,up原先使用的python3.9的環(huán)境經(jīng)實測無法運行。
④激活環(huán)境
輸入conda activate?env_name(創(chuàng)建的環(huán)境),此時前面的base會變成你創(chuàng)建的環(huán)境名

⑤安裝torch、cuda、cudnn
版本選擇:up在清華源找到的支持python3.6的最高版本的torch就是1.10,對應(yīng)的cuda為11.3,cudnn為8.2。
安裝建議:安裝可以將清華源添加進conda,然后使用conda install命令進行安裝,但是不推薦,因為文件過大,下載過程慢,并且如果意外中斷,又要重新下。這里推薦直接去清華源下載。
清華源地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/
up已經(jīng)下好了,之后也會打包并將鏈接放在評論區(qū)。

將這三個文件放到?C:\Users\Administrator\下安裝,或者用cd命令轉(zhuǎn)到文件所在文件夾下安裝。



由于提前下好了安裝包,運行后很快就裝好了


⑥安裝opencv-python和moviepy
建議使用pip安裝,先運行python -m pip install --upgrade pip將pip更新到較新的版本。

輸入pip install opencv-python安裝opencv-python。

如圖,安裝opencv-python幫up自動安裝上了numpy,所以不需要另外安裝numpy。就用它自動裝的numpy版本,避免不必要的兼容性問題。
輸入pip install?moviepy安裝moviepy。

至此,運行該模型的所有需要的包都已裝上,可以輸入conda list進行查看包是否安裝好,以及版本對不對,如下圖。

環(huán)境配置
①打開高級系統(tǒng)設(shè)置

②點擊環(huán)境變量

③找到系統(tǒng)變量中的Path并編輯,將剛剛創(chuàng)建的環(huán)境添加進去,路徑參考如圖。

添加藍框中的三個,up的路徑僅供參考,實際以自己的安裝anaconda的路徑和環(huán)境名稱為準。
這樣設(shè)置后就會讓系統(tǒng)默認使用你創(chuàng)建的環(huán)境,打開cmd輸入python進行查看。

如圖默認環(huán)境變?yōu)榱?span id="5tt3ttt3t" class="color-pink-03">python3.6.13|Anaconda,Inc|,說明設(shè)置成功。
至此,已經(jīng)完成了所有超分前的準備工作,現(xiàn)在只需要設(shè)置好配置文件就可以運行模型了。
配置設(shè)置
打開模型文件中的config.py文件,用記事本就行。
①超分倍率以及模型選擇

超分倍率scale是指視頻寬高各乘以2,比如將1080p視頻超分成2160p,也就是4k。如果你想將720p超分成4k,就將其改為3,以此類推。up一般是把1080p超分成4k,所以用的是scale=2。
底下的model_path是具體指定用哪個模型,比如我這里是scale=2,用的就是model_path2,后面是模型路徑,根據(jù)作者建議選擇適合自己的模型就行,up一般用的是pro的無降噪版。
②half、tile、cache_mode、alpha設(shè)置

這里就根據(jù)#號后面的建議和自己的配置進行選擇就行,up這里是選擇了比較吃顯存的設(shè)置。
③視頻或者圖片超分路徑

超分視頻就填video,超分圖片填image。要注意的是,超分圖片的話,得把圖片放在文件夾input_dir中,會自動輸出到output_dir文件夾。超分視頻的話就要修改視頻的路徑以及輸出的路徑和格式。
比如我目前的設(shè)置是超分視頻,超分的是T盤根目錄的名為01的mov視頻,最終會在T盤根目錄輸出名為01_4k的mov視頻。想輸入輸出其它格式視頻,直接改后綴就行,比如mp4、mkv等等。(ps:不用多此一舉把視頻拆成圖片序列進行超分,實測推理速度不及直接超分視頻,估計原因是需要不斷讀取圖片和寫入圖片造成的時間延長,CPU夠強的話,直接編碼視頻就行)
④編碼參數(shù)設(shè)置

crf設(shè)置得越低,視頻碼率和質(zhì)量越高,up習(xí)慣設(shè)置為12,一般23左右就可以了,個人自己看情況設(shè)置就行。
preset是質(zhì)量和速度之間的取舍問題,越慢視頻質(zhì)量越高,但是越吃CPU。up測試過veryslow,這時候CPU已經(jīng)出現(xiàn)了瓶頸,顯卡占用偏低,推理速度變慢。目前使用的是slower。其實未達到CPU瓶頸之前,你設(shè)置多少都不會怎么影響速度,因為這時候瓶頸是顯卡,CPU再快也沒用,所以up的思路是,設(shè)置在CPU瓶頸的前一檔,這樣能充分發(fā)揮顯卡和CPU的性能,同時又能保證最終的視頻質(zhì)量。
⑤由于up主是一個小白,其他參數(shù)就按照作者的默認設(shè)置了。將前面的設(shè)置完之后,就可以雙擊go.bat文件進行視頻超分了。

PyTorch版和GUI版的速度比較
①運行前硬件狀態(tài)

②各版本的設(shè)置
PyTorch版的設(shè)置:

GUI版的設(shè)置:

倆者都是用的是pro的無降噪模型,可以看到GUI版本可以調(diào)整的參數(shù)很少。
③倆者運行時的硬件占用情況


可以看到倆者的CPU、內(nèi)存以及GPU占用相差不大,但是GUI版卻一點顯存也不吃。up主推測是GUI版本是為了兼容性,把顯存的需求全部拉到最低了。
④倆者推理速度比較


up使用的是同一個視頻??梢钥吹絇yTorch版推理完成全部的6124幀使用了1165秒,通過up主引以為豪的小學(xué)數(shù)學(xué)功底,計算出來的推理速度是每秒5.25幀,而GUI版的推理速度則是1.9幀/秒~2.2幀/秒,前者是后者的2.5倍以上。
據(jù)up主的非專業(yè)分析,應(yīng)該是GUI版沒有積極地調(diào)用顯存而導(dǎo)致顯卡并行計算能力沒有充分發(fā)揮。
(ps:先前up用GUI版本的時候,有些視頻的某些場景會導(dǎo)出全黑的幀,導(dǎo)出幾次都是同樣的地方出現(xiàn),導(dǎo)出成圖片序列也試過了,問題依舊存在。原先以為是模型的問題,直到換成了PyTorch版,問題就消失了,所以GUI版本應(yīng)該還存在bug,遇到同樣bug的小伙伴可以嘗試更換成PyTorch版本)
補充
①CUGAN和topaz的比較
首先從推理速度上來說,按照up主以前使用的topaz video2.6.4版本的經(jīng)驗,1080p超4k大概是2.5幀/秒往上,雖然模型不同,速度不具可比性,但是up注意到topaz顯卡的占用未能上去,一直都是30%~50%,顯存占用也比較小。這也是topaz一直以來的問題,中端顯卡和高端顯卡之間的推理速度沒有什么差距,期待后面的版本能優(yōu)化好吧,目前up已經(jīng)卸載了topaz,所以就沒有上實測了。
其次是視頻質(zhì)量,這點更不好比,topaz偏向非動畫的超分,CUGAN是專用于動畫的,up直觀感受是CUGAN更加清晰,銳化更高一點,這個對于非動畫的視頻原畫質(zhì)的毀壞是顯而易見的。
因此推薦超分動畫使用CUGAN,可以在獲得更高的推理速度情況下,視頻質(zhì)量也很好;而真人實拍視頻則用topaz。由于up只超分動畫,在有了更好的CUGAN之后,topaz自然就卸載了,以后假如要超分非動畫,說不定還會下回來。
②在使用CUGAN時要注意不要爆顯存
如果你運行之后,顯存和核心近乎吃滿,這個時候要注意CPU的占用,如果CPU占用很低,或者上升很少,說明顯存已經(jīng)爆了,推理速度會變得很慢。這個時候要調(diào)整參數(shù),降低顯存占用。
有些客戶端開啟就會占用顯存。up有時候后臺放著CUGAN在跑,然后想開幾個客戶端或者游戲啥的,正好讓顯存爆掉的情況也會存在,這個時候可以調(diào)整參數(shù),降低一點顯存。
③關(guān)于編碼參數(shù)中preset檔位的選擇
為了驗證在達到CPU瓶頸之前,所有檔位速度都差不多,up用同一個視頻測試了slow檔位的速度,對比slower檔位,結(jié)果如下:


如圖,slow所用時間最終比slower少了14s,大概快了1.2%,基本可以算作誤差范圍內(nèi)。
這可以印證up之前的猜想:未達到CPU瓶頸之前,所有檔位速度都是差不多的。當然質(zhì)量越低的檔位,CPU占用相對也會更低,因為此時瓶頸在顯卡。