當前位置: 華文星空 > 新聞

4060顯卡用AI修復老影片變成4K教程

2023-12-01新聞

前言

最近我扒拉出來我之前小時候的一些影像資料,在我的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系的顯卡加一點電費,對此我只有一句話想說:感謝科技的發展。