程式設計師書庫(ID:CodingBook) 猿妹綜合整理
項目地址:https://www.infoworld.com/article/3442978/10-open-source-projects-proving-the-power-of-google-go.html
最近,號稱是當下最強的動畫實時超解析度方法,火爆Github,已經在GitHub摘下8458顆星,並穩穩占在Github Trending榜多天了。
Anime4K可以將1080P的動畫轉換為4K解析度,Anime4K的速度比Waifu2x快300倍,根據介紹提升畫質的時間僅僅需要3ms!
前面提到的Waifu2x通過神經網絡可以將2D圖像升級到更高質量,但是,基於機器學習的方法存在一個問題,即實時升級1080p電影需要花費相當長的時間。而Anime4K則可以更簡便的升級動漫。
下圖是使用Waifu2x生成的圖片效果:
另外,據開發人員B. Penn介紹,市場上的許多1080p動畫並不是真正的1080p,在某些情況下,只是將900p左右的母帶放大到1080p,因此就算是1080P,依然不可避免地會損失圖像質量。
當放大動畫視頻時,Anime4K可以減少模糊程度,並在HLSL / GLSL / Java執行環境中運行。根據Penn的說法,Anime4K的算法本身很簡單,當它在AMD RX Vega 64上運行時,最快可以在3毫秒內處理,甚至用於筆記本電腦的GPU也可以在9毫秒內處理。B. Penn還表示,即使在智慧型手機和筆記本電腦之類的低規格設備上,使用Anime4K也可以使動漫的清晰度增加。
以下是將1080p動畫放大到4K(2160p)的示例,從左到右分別是Biliner、NGU、Waifu2x、Anime4K實現的效果。
還有將720p動畫放大到1080p。你可以清楚地看到使用Anime4K的處理更加清晰,圖像質量得到了改善。
以下是將720P的圖像放大到2060p
但是,Penn表示,當用Anime4K放大多紋理 (Textures)的圖像時,如下圖所示,Anime4K的性能並不是很高,其結果幾乎與Bilinear相同。
算法原理
從以上對比,相信你已經知道Anime4K僅適用於動漫圖像放大,因動漫往往沒有豐富的紋理,而人眼對其邊緣和線段更加敏感。超解析度的原理流程如下:
LR_U為上採樣後的低解析度圖像,r為高頻殘差,高解析度圖像HR = LR_U + r。
Penn發現對於銳利圖像其殘差圖像中邊緣和線段往往比較細,而對於模糊圖像,其殘差圖像中邊緣和線段往往比較粗。
因此,開發團隊首先把殘差厚度最小化當做目標,接著輸入一張圖和它的殘差之後,「push」殘差的像素,讓殘差線變細,這具有疊代地使圖像梯度最大化的效果
偽代碼如下:
for each pixel on the image:
for each direction (north, northeast, east, etc.):
using the residual, if an edge is found:
push the residual pixel in the current direction
push the color pixel in the current direction
其他詳情可以自己到Github詳細查看,最後附上Github地址:https://github.com/bloc97/Anime4K/blob/master/Preprint.md#proposed-method