前言
最近我扒拉出來我之前小時候的一些影像資料,在我的4K螢幕上看還是很糊的,畢竟當時也沒有太好的保存手段。
老照片/視訊記錄著曾經的歲月,承載著美好的回憶與厚重的歷史。但由於年代久遠,舊的影像素材往往存在模糊、缺色、跳幀等問題。相片或者視訊什麽的分辨率最多也就是720P,本來我自詡一個多媒體通訊專業畢業的人,專業學影像與視訊的,修復一個老視訊老照片,把它變成4K分辨率,應該是毫無問題,但是事實啪啪啪打了我的臉,我自己要去以像素插值的方式去修復的話,那我這輩子的時間都要耗在上面了。
所以作為半個AI從業者,我就開始琢磨一些更方便的途徑去修復老視訊,折騰了差不多一個月之後我終於全部搞定了,現在就過來寫個教程給大家當參考。
首先介紹一下我的主機配置:13700K加技嘉4060 8G的顯卡,然後配了64G的記憶體。
其實如果你只是想修復舊圖片的話,老舊的1080Ti 11G也是可以的,我已經幫你們試過了,只要是視訊記憶體大於4G的N卡都是可以完美操作的。
圖片修復教程
如果你有Python編程基礎的話,你完全可以跟我一樣在某程式碼網站上直接自己配置PaddleGAN,包括 圖片上色、視訊上色、圖片分辨率提升、視訊分辨率提升,以及 視訊流暢度提升(提高視訊播放流暢度)三大功能。
這個動圖就是之前2021年時候這個計畫修復的老北京城的視訊,透過AI模型把之前的黑白低分辨率低碼率的視訊透過自動上色,影像插值提升分辨率,視訊插幀提升流暢度等方式變成了彩色高分辨率高碼率的流暢的現代視訊。
這個已經是2021年的技術了,經過兩年的叠代,其實有更多的開源技術給了我們更多的選擇。
比如現在我選的就是Real-ESRGAN,有自己改程式碼用命令列的版本,也有exe可執行檔的版本,完美照顧到所有人的需求。
這個模型是做的4倍超分辨率,也有一定的機率失敗。
但是看他給的範例圖我就覺得還很不錯,基本上都是以低分辨率的圖為案例去做,然後以高分辨率的圖作為輸出,成像品質相當高。
Real-ESRGAN裏面給了五個訓練好的模型,有預設的4倍分辨率模型,也有realesrgan-x4plus-anime(針對動漫插畫影像最佳化,有更小的體積)和realesr-animevideov3 (針對動漫視訊)。
我首先試了一下我筆記本上的1650Max-Q的效能,這個視訊記憶體只有4GB,勉強能達到修復的最低要求。後來試了一下我桌上型電腦上的技嘉4060,這個就絲滑流暢了。
這個也能跑,一張PNG圖一秒不到就跑完了。
我隨便找了一張圖跑了一下修復,4倍分辨率修復的圖很明顯比修復之前清晰很多。
視訊修復教程
視訊部份修復教程其實相對復雜一點,簡單來說就是把視訊檔變成圖片檔,然後對每個圖片檔進行4倍分辨率修復,最後把修復好的圖片檔再合成視訊檔。
所以視訊需要使用到ffmpeg進行視訊拆分處理,至於ffmpeg是怎麽裝的,可以參考別的教程,我就暫時不細寫了。
先建立兩個目錄用來存放拆分和處理的圖片幀。
再看看demo視訊檔裏面的基本參數,視訊的分辨率就是老照片的感覺。
首先利用ffmpeg把視訊分割成不同的圖片檔:ffmpeg -i onepiece_demo.mp4 -qscale:v 1 -qmin 1 -qmax 1 -vsync 0 tmp_frames/framed.jpg
上面就是執行後tmp_frames目錄產生了拆分後的圖片幀,相對來說還是挺粗糙的。
下一步就是執行命令列對所有的圖片幀進行4倍分辨率修復:realesrgan-ncnn-vulkan.exe -i tmp_frames -o out_frames -n realesr-animevideov3 -s 2 -f jpg
這一步執行的時間會特別長,建議大家用一下40系顯卡,我後面會放出來我用不同的N卡修復同一段視訊的時間對比。
再執行一下命令列:ffmpeg -i out_frames/framed.jpg -i onepiece_demo.mp4 -map 0:v:0 -map 1:a:0 -c:a copy -c:v libx264 -r 23.98 -pix_fmt yuv420p output_w_audio.mp4
將out_frames內的圖片壓縮為視訊,看一下最後的視訊品質,可以看出解析度和分辨率也有了不小的提高。
不同顯卡修復視訊的效能對比
我嘗試對比了一下筆記本的1650Max-Q的顯卡,1080Ti的顯卡,以及4060的顯卡,居然還是最新款的4060最快。
整個視訊修復需要修復的圖片數量是181張圖,視訊長度是7秒,1650Max-Q的單張修復時間是1.2s,總修復時間是3.62分鐘,1080Ti的單張修復時間是0.76s,總修復時間是2.29分鐘,4060的單張修復時間是0.44s,總修復時間是1.3分鐘。
也就是說要想修復得快一點,還是要買新款的40系顯卡。7s左右的視訊修復時間差不多是一分鐘,如果視訊長度拉到10min,那麽用老顯卡的修復時間就是196分鐘,用新的4060的卡修復時間就是111分鐘,足足能節約一半多的時間下來,並且修復的視訊時間長度越長,節約的時間就越多。
結語
科技改變生活,也改變生產力,之前很多歷史圖片和視訊都是低分辨率的,對這類資料的修復是需要花費大量的時間精力的,之前需要專業人士花費大量時間和精力去處理的事情,現在只需要一張40系的顯卡加一點電費,對此我只有一句話想說:感謝科技的發展。