內容一覽:Real-ESRGAN 是 ESRGAN 升級之作,主要有三點創新:提出高階退化過程模擬實際影像退化,使用光譜歸一化 U-Net
鑑別器增加鑑別器的能力,以及使用純合成資料進行訓練。 關鍵詞:Real-ESRGAN 超解析度 影片修復
本文首發自微信公眾號:HyperAI超神經
相比於如今畫面優良精美的新番,老動漫因時代的技術和裝置限制,畫質較差、解析度低。但那些內容優質、童年經典的老動漫還是會被觀眾拿出來反覆觀看、「盤出包漿」。
每每經典的動漫影片被 4K 修復,在影片網站上的觀看量都居高不下,高畫質加上經典的內容足以讓「雙廚狂喜」。
B 站上的 4K 修復影片極受歡迎
本期教程介紹如何用 Real-ESRGAN 對動漫影片進行超分最佳化,修復影片畫質。教程可用雲平臺 OpenBayes 執行,對裝置配置沒有依賴, 輕鬆享受 1080P 影片帶來的快樂。
Real-ESRGAN:愛二次元的盲超分模型
傳統動畫製作時,動畫師先手繪製作每一幅畫面,再用攝像裝置拍攝畫面,將其掃描到計算機中進行數字化處理。拍攝裝置的好壞、上傳動畫到影片平臺的壓縮及不可預測的噪音等複雜因素, 會影響到動畫的影像效果。
真實世界中引起影像退化的原因非常複雜,這使得非盲的超分演算法,如 ESRGAN,恢復影像的效果並不好。所以需要用盲超分 (Blind Super-Resolution) 為未知退化型別的低解析度影像進行超分增強。
盲超分主要分為顯式建模 (Explicit Modelling) 和隱式建模 (Implicit Modelling) 兩類方法。
顯式建模
將模糊核與噪聲資訊進行引數化,透過先驗知識估計影像的退化過程,包括噪聲、模糊、下采樣和壓縮。但簡單地組合幾種退化並不能很好地擬合現實世界的影像退化。
### 隱式建模
不依賴於任何顯式引數,它利用額外的資料透過資料分佈,隱式的學習潛在超分模型。
Real-ESRGAN 的作者將顯式建模稱為一階建模。一階的退化建模難以擬合複雜的退化,作者提出了一種高階退化模型 (High-order Degradation Model)。 該模型中,n 階模型包含 n 個重複的退化過程,每個過程都遵循經典模型:
x = Dn(y) = (Dn ◦ · · · ◦ D2 ◦ D1)(y)
論文中作者使用的是二階退化過程,這既保持了簡單性,又解決大多數實際問題。
Real-ESRGAN 完全使用合成資料訓練。 在生成高畫質和低清資料對時,模型對輸入的影像進行 4 倍下采樣( subsampled 或稱縮小影像)之外,還繼續進行 1 倍或 2 倍的下采樣操作。
Real-ESRGAN 使用和 ESRGAN 完全一致的結構
為減小計算量,作者創新性地提出了 Pixel Unshuffle 操作, 令輸入解析度減小、通道增加。
在生成高畫質和低清的資料對時,論文使用模糊的 kernel 做卷積,之後對影像下采樣 r 倍,加上噪聲,最後做 jpeg 壓縮。這些操作模仿了現實生活中影像在傳播過程中多次壓縮的情況。
Real-ESRGAN 採用多種影像退化方法
與 ESRGAN 相比,Real-ESRGAN 處理模糊影像的效果更佳,並在 2021 年 ICCV AIM 上獲得榮譽論文提名獎。
## Real-ESRGAN 實操:讓陳年老番變清晰
本教程將演示在 OpenBayes 上,用 Real-ESRGAN 演算法實現影像增強,把老動畫影片變清晰。
第 1 步 環境準備
# !git clone https://github.com/xinntao/Real-ESRGAN.git
%cd Real-ESRGAN
!pip install basicsr
!pip install facexlib
!pip install gfpgan
!pip install ffmpeg-python
!pip install -r requirements.txt
!python setup.py develop
第 2 步 推理
# ! python inference_realesrgan_video.py -i inputs/video/onepiece_demo.mp4 -n RealESRGANv2-animevideo-xsx2 -s 4 -v -a --half --suffix outx2
! python inference_realesrgan_video.py -i /openbayes/home/results.mp4 -n RealESRGANv2-animevideo-xsx2 -s 4 -v --half --suffix outtsx2
# 引數
# -i, --input: 輸入影片
# -n, --model_name: 使用的模型名字
# -s, --outscale: 放大尺度
# -v, --video: 將增強的幀轉換回影片中
# -a, --audio: 將輸入的音訊複製到增強的影片中
# --half: 推理半精度
# -suffix: 輸出影片的字尾
第 3 步 視覺化
from IPython.display import HTML
from base64 import b64encode
def show_video(video_path, video_width = 600):
video_file = open(video_path, "r+b").read()
video_url = f"data:video/mp4;base64,{b64encode(video_file).decode()}"
return HTML(f"""<video width={video_width} controls><source src="{video_url}"></video>""")
# 輸入影片
show_video('inputs/video/onepiece_demo.mp4')
# 增強後的影片
show_video('results/onepiece_demo_outx2.mp4')
具體處理效果及教程的影片講解,點選檢視
以上就是本期教程的全部內容,心動不如行動,你童年的夢中情番是什麼?快克隆 OpenBayes 上的「Real-ESRGAN 動漫影片的超解析度」教程,自制清晰影片吧~
注:高畫質自制內容僅可供個人學習使用
參考連結:
https://zhuanlan.zhihu.com/p/431612275
https://zhuanlan.zhihu.com/p/558893171
—— 完 ——