二次元超分常見瑕疵及處理

張哥說技術發表於2023-02-24

背景


2014年,SRCNN (Learning a Deep Convolutional Network for Image Super-Resolution, ECCV2014)橫空出世,是深度學習用在超解析度重建上的開山之作。隨著AI技術的發展,超解析度重建的效果越來越好,速度越來越快。隨著B站自研的超分模型公開,越來越多的影片可以使用超解析度技術進行畫質提升。然而,技術領域沒有銀彈,基於深度學習的超解析度重建自然也有其難以克服的缺點存在,適當的人為干預將極大提升超分效果。


超解析度的數學原理


影片訊號作為訊號的一種,其行為完全符合資訊理論中的描述。正如Nyquist-Shannon 取樣定理描述的,為了不失真地恢復模擬訊號,取樣頻率應該大於等於模擬訊號頻譜中最高頻率的2倍。較低的取樣頻率無可避免的會丟失高頻資訊。在影片中,解析度即為取樣頻率,而畫面中的元素就對應了不同的空間頻率。影片中越銳利的部分,對應了越高的空間頻率。也就是說,影片的解析度越高,其能夠記錄的最高頻率越高,畫面就可以更加銳利。早期的影片受限於當時的技術,採用的較低的製作解析度,導致其畫面銳度較低。由於丟失的資訊數學上是無法還原的,無論使用何種插值演算法,都不可能還原出原本的訊號。

在訊號處理領域常常使用傅立葉變換來對訊號進行分解,將原始訊號分解為一系列不同頻率的正弦訊號。對影片畫面進行傅立葉變換,可以方便的觀察出畫面中存在的不同頻率分量。對二維的影像進行快速傅立葉變換後,會得到一張二維的頻域影像,越靠近座標原點代表越低的頻率,越靠近外圍代表越高的頻率。

以下圖為例,分別對1080P的原始畫面以及縮小到540P再放大回1080P的畫面進行快速傅立葉變換,我們可以看出,當解析度降低時,高頻資訊會無可避免的損失,在頻域中表現為接近座標原點部分的分量幾乎不變,而外圍部分被明顯壓縮。而解析度提高時,並不會還原在縮小時損失的高頻的部分。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理


(上圖依次為:原圖,頻譜分佈,縮小並放大後的圖片,縮小並放大後的頻譜分佈)


超解析度≠影像拉伸

既然插值演算法無法提升畫面銳度,那麼超分演算法是如何做到的呢?雖然高頻資訊無法被“還原”,我們依然可以人為“新增”這些高頻資訊。雖然我們從原理上無法保證這些高頻資訊與原本的資訊一致,但是我們任然可以根據經驗,保證這些高頻資訊“看起來”是合理的。


二次元超分常見瑕疵及處理


超解析度≠更高的影片解析度

大部分的日本動畫,由於成本限制,並不會在生產過程中使用很高的解析度,即使是在1080P已經完全普及的今天,仍有大量動畫採用810P甚至720P作為製作解析度,而使用1080P進行播放。超解析度的本質在於提升畫面銳度,如果畫面銳度沒有超出其本身解析度能承載的範圍,完全沒有必要提升影片的解析度。而更高的解析度也可以透過使用拉伸演算法簡單達成而不改變畫面本身的清晰度。


超解析度的常見缺陷-油


無法保留噪點


在有關超分的話題中,我們經常聽到使用者使用“油畫感”來描述AI生產出的畫面。我們以CUGAN舉例。

可以看到,即使我們已經選擇的降噪強度最低的模型,CUGAN在大幅度清晰化的同時,去除了畫面中的大部分噪點。這是由於高頻的不規律性遠大於低頻成分,因此深度學習對高頻的重建難度遠大於低頻,為了整體擬合到一個不錯的效果,模型傾向於扔掉高頻而更多地去學習低頻的重建。在現實世界中,無論何種攝像機,都會在拍攝過程中無可避免的產生噪點。而大部分的動畫為了模仿攝影效果,人為新增了風格噪點。如果無法保留這些噪點,將無可避免的大幅改變畫面風格。如下圖所示,在右下角的牆壁部分,由於噪點被完全去除,導致畫面風格發生了較大的改變。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理


(上圖依次為:原圖,CUGAN超分結果)


 線條深度\銳度不統一


線條清晰化是超分過程中的重點,將極大影響畫面銳度。不難發現,即使CUGAN的結果已經大幅優於Waifu2X,任然存線上條深淺不一致的現象。可以看到大部分較細深色線條被加深,而較寬的線條中心部分沒有什麼變化,僅僅將邊緣進行了銳化。這是由於日式動畫的製作解析度一般小於其成品解析度,例如使用540P進行動畫製作,而在放送時透過插值演算法放大到720P乃至1080P進行播放。當線條過寬時,AI會將較寬的線條誤認為一個色塊,僅對其邊緣進行增強,導致線條空心。而在黑線部分,由於CUGAN模型傾向於更多地去擬合高質量樣本集,而高對比度往往在質量評估上擁有比低對比度更高的分數,因此將線條和鄰近線條的顏色區域加深對比度是模型的調優方向。在少數情況下,反而會造成線條顏色過深或過淺,導致畫風改變。

在下圖中,可以看到面部輪廓有部分線條非常銳利,接近純黑色,而其他線條出現了空心的情況,並且呈現灰色,甚至在衣領出出現了線條走形,導致整個畫面中的線條銳度不統一。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理


(上圖依次為:原圖,CUGAN超分結果)


 弱紋理塗抹


即使CUGAN使用了景深識別模組,針對大量不同的番劇,其仍然難以分辨弱紋理部分,無可避免的會破壞畫面中微弱的紋理。經過塗抹後的螢幕非常乾淨,並且帶有不自然的漸變效果,是油畫感的主要來源。在下圖中,左側雕像中,一部分較強的紋理被CUGAN進行了加強,同時一部分較弱的紋理被去除。在日式動畫的製作過程中,背景一般採用紙上作畫再掃描的工序進行製作,相較人物部分,作畫更為精細,如果將弱紋理去除將會破壞掉這種精細感,造成畫面不自然。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理


(上圖依次為:原圖,CUGAN超分結果)


畫面閃爍\時域抖動


基於神經網路的天然特性,一點微弱的差別就有可能導致結果出現很大的差距。對於一些噪點較重的影片,由於相同場景下超分的結果可能會有比較大的偏差,在影片連續播放時會感覺線條部分在不停的閃爍,非常影響觀看體驗。


使用傳統預處理演算法規避缺陷


神經網路的能力非常強大,能夠無視物理限制,完成以往傳統演算法難以企及的清晰化處理。但是其過於強大的威力也成為了一把雙刃劍,非常容易損傷源影片本就非常脆弱的細節。由於單一的模型很難普適全部的片源,我們需要使用傳統的預處理演算法來協助實現更優的超分效果。


 噪點分離還原


不同於UGC影片製作,OGV影片一般可以獲取到非常高質量的源影片。這些源影片僅僅是由於製作年代久遠,畫面有效解析度比較低,而位元速率一般非常充足,基本完整保留了母帶的細節,基本不存在編碼缺陷。這些動畫中的噪點一般是動畫製作方為了畫面風格而特意新增的風格噪點,在超分處理中不應將其去除。

為了分離噪點層,我們可以使用降噪演算法對畫面進行降噪,然後與源影片做差來分離噪點層。降噪演算法我們採用BM3D演算法來達到較好的降噪效果。
BM3D是一種基於相似圖塊匹配的高階降噪演算法,對於高斯噪聲有非常好的降噪效果。經過BM3D處理的影像可以在保留原始細節的情況下,非常有效的去除畫面中的噪點。

二次元超分常見瑕疵及處理

(BM3D處理流程[1])


經過降噪的純淨畫面,也將降低潛在的畫面閃爍問題。在影片處理的最後一步,我們將分離出的噪點層附加回畫面上,就達成了與源影片非常相似的畫風。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理

(上圖依次為:原圖,CUGAN超分結果,保留噪點後的結果)


如上圖所示,柯南第一話首次放送於1996年1月8日,當時使用的是膠片作畫,基於膠片本身的物理特性,畫面上無可避免的會留下明顯的噪點。這些膠片噪點成就了作品獨有的畫風,乃至於今日,仍有部分電影導演,為了追求真實的膠片感而不惜花費重金採用膠片攝影機進行拍攝。透過分離噪點的方式,可以有效保留這部分噪點不被破壞。尤其是在右下角玻璃處,在沒有噪點時可以看到出現了明顯的降噪瑕疵,保留下的噪點可以很好的掩蓋這種瑕疵。


線條深度調整


線條深度不統一的根本原因在於網路無法分辨過寬的線條。在超分進行前,我們需要將源畫面下采樣到最接近製作時的解析度,來幫助網路進行處理。對於拉伸演算法較為明顯的畫面,我們可以使用Descale演算法逆向還原到原解析度。而對於那些無法分辨拉伸演算法的畫面,我們就需要一邊調節目標解析度,一邊觀察超分結果,當超分結果中的線條最為清晰時,即為最適合的目標解析度。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理

(上圖依次為:原圖,CUGAN超分結果,原始解析度調整後的結果)


在上圖中,片源的解析度為1080P,而畫面內容的實際解析度遠低於1080P,這裡我們選擇將解析度降低為原先的1/4,再進行超分。可以看出線條的質量有了非常大的提升,同時畫面清晰度的損失可以忽略不計。

超分後的畫面,線條深度與銳度可能並不符合我們的要求,除了調整CUGAN的Alpha引數外,還可以對線條進行模糊或者加深\減淡處理。當線條過於銳利以至於無法與畫面完美融合時,可以使用高斯模糊對畫面整體進行處理。基於高斯模糊的數學特性,處理後的畫面,僅在較為銳利的部分有較大變化,而本身較為柔和的部分幾乎不受影響,剛好可以完美降低過於銳利的線條,讓畫面風格趨於統一。收線也是一個非常好的銳化方法,當我們覺得線條不夠銳利,或者線條過寬時,可以先使用一個收線處理,將線條寬度降低,同時會增加畫面對比,達到增加線條銳度的效果。

當需要調整線條深度時,我們首先需要分離畫面中的深色線條,然後對其進行加深或減淡處理。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理

(上圖依次為:原圖,CUGAN超分結果,線條調整後的結果)


以上圖為例,我們在對全域性使用了一個sigma為1.2的高斯模糊,並還原噪點層後,畫面的風格就非常接近原始影片的,同時畫面中線條的清晰度被大幅度提升,並完美去除了原有的編碼瑕疵。


 弱紋理保留合併


在日式動畫的製作過程中,其畫面不會輕易變化,畫面銳度較為統一。AI難以訪問全域性資料來確定整部動畫的畫面特性,這就需要人工進行判斷,劃分閾值。

Canny邊緣檢測運算元是John F. Canny於 1986 年開發出來的一個多級邊緣檢測演算法。

我們使用TCanny演算法對線條強度進行計算,將數值較高的部分劃分為線條,將數值較低的部分劃分為紋理,將數值更低的部分劃分為平面。為了最大程度提升觀感,線條部分將會全部採用超分後的結果。紋理部分需要根據超分結果靈活選擇,如果超分後的結果更為清晰,我們將採用超分後的畫面,如果超分後的結果更為模糊,我們將採用源影片的畫面,同時可以使用USM銳化進行補償處理。對於平面部分,基本沒有差別,既可以選擇去色帶後的源影片,也可以選擇超分後的結果。


二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理
二次元超分常見瑕疵及處理

(上圖依次為:原圖,CUGAN超分結果,紋理保留後的結果,邊緣強度


在CUGAN原始超分結果中,我們可以發現灌木叢部分的紋理被完全抹除了。我們利用Tcanny運算元計算畫面的邊緣強度,對於強度較高的部分(上圖中亮度較高的部分),採用CUGAN超分後的結果,這部分內容會被CUGAN顯著增強,對於部分較弱的部分,我們採用原影片,來避免CUGAN對這部分內容進行塗抹。

可以看到,透過保留合併弱紋理的方式,我們可以在不更改CUGAN網路本身的情況下,對於不同番劇靈活設定閾值,以達到保留紋理的同時大幅度提升畫面清晰度的目的。


參考資料

[1] Kostadin Dabov, Alessandro Foi, Vladimir Katkovnik, and Karen Egiazarian, Image denoising with block-matching and 3D filtering, Institute of Signal Processing, Tampere University of Technology, Finlan


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2936846/,如需轉載,請註明出處,否則將追究法律責任。

相關文章