如何「無(wú)損」放大低清動(dòng)畫(huà)

前言
從低清視頻放大到高清視頻——超分辨率,這個(gè)在以往不可能的事,近幾年得益于深度學(xué)習(xí)的應(yīng)用,它已經(jīng)變成了可能。

年初的時(shí)候,B站知名科技數(shù)碼UP主極客灣分享了兩個(gè)利用AI技術(shù)對(duì)視頻進(jìn)行超分辨率和補(bǔ)幀的軟件。

補(bǔ)幀本篇先不談,超分辨率此教程中利用的軟件是Topaz Video Enhance AI,超分辨率的效果確實(shí)爆炸,而且軟件操作也比較簡(jiǎn)單。選擇視頻,點(diǎn)擊開(kāi)始就可以了。
這個(gè)軟件效果雖好,但它是個(gè)商業(yè)軟件,極客灣出視頻的時(shí)候是處于測(cè)試階段,可以免費(fèi)使用?,F(xiàn)在它就開(kāi)始收費(fèi)了,200刀,emmm……告辭。

其實(shí)在此之前已經(jīng)有一個(gè)類(lèi)似的超分辨率開(kāi)源軟件——waifu2x,從讀音你就可以知道這是個(gè)給二次元老婆分辨率拉伸2倍的軟件,所以最適合給它超分辨率的圖像就是動(dòng)畫(huà)風(fēng)格的圖。
Image Super-Resolution for Anime-style art using Deep Convolutional Neural Networks.?
利用卷積神經(jīng)網(wǎng)絡(luò)針對(duì)動(dòng)畫(huà)風(fēng)格畫(huà)作的超分辨率軟件。
——nagadomi/waifu2x
軟件原作者提供了一個(gè)在線(xiàn)處理網(wǎng)站?http://waifu2x.udp.jp/?可以上傳圖片,在線(xiàn)體驗(yàn)它的超分辨率效果。


利用waifu2x對(duì)視頻超分辨率
視頻本質(zhì)上是由一幀一幀的圖片,那么如果我們對(duì)每一幀圖都進(jìn)行超分辨率就可以讓低清視頻變成高清視頻了。
以下流程所需的軟件及硬件
waifu2x-caffe:waifu2x?的主流PC端GUI軟件。
FFmpeg:視頻提取幀,及超分辨率后合并視頻。
搭載NVIDIA?GTX600系以上顯卡的電腦(顯存建議4G以上):指定600系以上是因?yàn)閣aifu2x-caffe,需要CUDA?Compute Capability 3.0?以上的顯卡,具體請(qǐng)參考:https://developer.nvidia.com/cuda-gpus
充足的硬盤(pán)空間。
提取全部視頻幀
這一部分需要使用的是FFmpeg,這個(gè)沒(méi)有GUI的開(kāi)源軟件,我這么概括:它是音視頻處理界的一把瑞士軍刀,你使用的視頻轉(zhuǎn)碼軟件、視頻播放器可能都是基于它進(jìn)行開(kāi)發(fā),功能強(qiáng)大可想而知。
因?yàn)檫@是講超分辨率視頻的教程,我不是太想講解基礎(chǔ)FFmpeg的下載和配置,所以引用一篇B站上的其他文章。

接下的步驟,需要你先將ffmpeg下載好,并添加到系統(tǒng)的環(huán)境變量,跟著上面的一篇文章就可以達(dá)成。
好了,下面開(kāi)始,打開(kāi)powershell(雖然Cmd命令提示符也可以,但powershell對(duì)命令高亮提示比較直觀,注意接下來(lái)展示的命令僅保證powershell可運(yùn)行。)
1.轉(zhuǎn)移操作目錄到你需要處理的視頻所在目錄。
剛打開(kāi)powershell,它的操作目錄在你的用戶(hù)目錄。
輸入 cd "目錄地址"?

2.在操作目錄下新建文件夾保存提取出來(lái)的幀
比如名字為frames,這點(diǎn)比較重要!

3.ffmpeg命令提取幀
命令為:
ffmpeg -i "視頻文件名" -f image2 "frames/%d.png"?

frames文件夾里就保存了視頻所有的幀圖片。
4.waifu2x-caffe超分辨率
waifu2x下載地址:https://github.com/lltcggie/waifu2x-caffe/releases
下載zip包解壓雙擊waifu2x-caffe.exe即可運(yùn)行。

點(diǎn)擊右邊的cuDNN檢查,一般來(lái)說(shuō)臺(tái)式機(jī)單獨(dú)獨(dú)立顯卡就可以檢查通過(guò)。
如果是筆記本雙顯卡,可能會(huì)檢測(cè)不到顯卡,先應(yīng)用設(shè)置里,設(shè)置一下GPU編號(hào)(0改1)
如果是MX的輕薄本顯卡,可能會(huì)還是檢測(cè)不到,這時(shí)候需要用舊版(我會(huì)網(wǎng)盤(pán)分享一下)
如果出現(xiàn)cuDNN不可用,這時(shí)候其實(shí)已經(jīng)可以運(yùn)行了,只是不能用cuDNN。解決方法是替換軟件目錄里的cudnn64_7.dll文件,需從NVIDIA官網(wǎng)下載,涉及CUDA版本匹配,先不提及。
軟件界面已經(jīng)漢化,輸入路徑選擇剛才存放幀的frames文件夾。
模型選擇:(可以先轉(zhuǎn)一張圖,試試效果)

降噪強(qiáng)度(按需選擇,總之先試試幾張圖,根據(jù)經(jīng)驗(yàn)3級(jí)會(huì)有可能在細(xì)節(jié)涂抹明顯)
拆分尺寸和批尺寸影響處理速度,拆分尺寸越大處理越快,也越占用顯存,顯存溢出軟件會(huì)崩潰,總崩潰就調(diào)小拆分尺寸,直到不崩潰。這時(shí)候可以適當(dāng)調(diào)高批尺寸。
tta:花8倍時(shí)間減少失真,要速度就不要勾。
一切順利的話(huà),導(dǎo)入frames文件夾,批量處理里面的幀,根據(jù)視頻的幀數(shù)和GPU性能長(zhǎng)短不一,這時(shí)候就是等待了。

5.FFmpeg?將超分辨率后的幀圖片壓成視頻
命令:
ffmpeg -f image2 -r?[原視頻的幀率數(shù)值] -i "超分辨率圖片存放文件夾/%d.png" -vn -i "原視頻文件" -c:v?[視頻編碼器] -c:a?copy?[其他參數(shù)] "輸出視頻文件名.mkv"?
講解一下不定的參數(shù):
-r?后是指定幀率,支持分?jǐn)?shù),如23.976可以用24000/1001
-vn -i "原視頻文件"?是輸入原視頻的音頻。
-c:a copy?指復(fù)制原視頻音頻。
視頻編碼器一般有兩種選擇:
1.libx264(純CPU編碼壓制跟小丸工具箱差不多,但需要指定x264壓制參數(shù)較復(fù)雜,卻質(zhì)量好)
2.硬件編碼器:nvenc(N卡的硬件編碼器),QSV(intel核顯的quicksync硬件編碼器),特點(diǎn)是速度快。
使用硬件編碼一般要指定輸出的平均碼率:命令上加上 -b:v 10000k (示例目標(biāo)10000kbps)
范例命令:
1.使用libx264軟件編碼:
ffmpeg -f image2 -r 24000/1001 -i "frames(Y)(noise_scale)(Level3)(width 1920)/%d.png" -vn -i "P2_正體_1080p.flv" -c:v libx264 -preset veryslow -profile:v high -crf 16.5 -deblock -1:-1 -mbtree 1 -aq-mode 3 -aq-strength 0.8 -psy-rd 0.6:0.15 -x264-params threads=6:keyint=600:min-keyint=1:bframes=8:ref=13:qcomp=0.75:rc-lookahead=70:me=tesa:no-fast-pskip=1 -pix_fmt yuv420p -c:a copy "out.mkv"

這是VCB-S壓制動(dòng)畫(huà)BD的一套x264參數(shù),較慢。
2.使用N卡加速
ffmpeg -f image2 -r 24000/1001 -i "frames(Y)(noise_scale)(Level3)(width 1920)/%d.png" -vn -i "P2_正體_1080p.flv" -c:v h264_nvenc -b:v 10000k?-pix_fmt yuv420p -c:a copy "out.mkv"

3.使用intel核顯Quicksync
ffmpeg -f image2 -r 24000/1001 -i "frames(Y)(noise_scale)(Level3)(width 1920)/%d.png" -vn -i "P2_正體_1080p.flv" -c:v h264_qsv?-b:v 10000k?-pix_fmt yuv420p -c:a copy "out.mkv"
硬件編碼替換下輸出碼率即可,統(tǒng)一mkv輸出保證大部分音頻流都能封裝。
所有的ffmpeg操作,也可用其他軟件代替,只要實(shí)現(xiàn)提取視頻幀序列和合并就行。

結(jié)
至此給視頻超分辨率的基本流程就走完了,利用ffmpeg還可以輸入avs腳本對(duì)視頻進(jìn)行銳化等處理,那就更加復(fù)雜了。
最后展示下waifu2x的效果吧。
從B站上搞來(lái)張mio 600x800規(guī)格

waifu2x?CUnet超分辨率4倍2400x3200

建議原圖對(duì)比

關(guān)于ffmpeg更進(jìn)一步使用,以及參數(shù)深入:建議

上面文章作者的一系列文章。
@ZHY