圖3. 基于殘差的深度CNN結構。該結構使用殘差連接將低清圖像與CNN的輸出相加得到高清圖像。即僅用CNN結構學習低清圖像中缺乏的高清細節(jié)部分。
圖2中的方法雖然效果遠高于傳統(tǒng)方法,但是卻有若干問題:
訓練層數(shù)少,沒有足夠的視野域;
訓練太慢,導致沒有在深層網絡上得到好的效果;
不能支持多種倍數(shù)的高清化。
針對上述問題,圖3算法提出了采用更深的網絡模型。并用三種技術解決了圖2算法的問題。
第一種技術是殘差學習,CNN是端到端的學習,如果像圖2方法那樣直接學習,那么CNN需要保存圖像的所有信息,需要在恢復高清細節(jié)的同時記住所有的低分辨率圖像的信息。如此,網絡中的每一層都需要存儲所有的圖像信息,這就導致了信息過載,使得網絡對梯度十分敏感,容易造成梯度消失或梯度爆炸等現(xiàn)象。而圖像超清問題中,CNN的輸入圖像和輸出圖像中的信息很大一部分是共享的。殘差學習是只針對圖像高清細節(jié)信息進行學習的算法。如上圖所示,CNN的輸出加上原始的低分辨率圖像得到高分辨率圖像,即CNN學習到的是高分辨率圖像和低分辨率圖像的差。如此,CNN承載的信息量小,更容易收斂的同時還可以達到比非殘差網絡更好的效果。
高清圖像之所以能夠和低清圖像做加減法,是因為,在數(shù)據(jù)預處理時,將低清圖像使用插值法縮放到與高清圖像同等大小。于是雖然圖像被稱之為低清,但其實圖像大小與高清圖像是一致的。
第二種技術是高學習率,在CNN中設置高學習率通常會導致梯度爆炸,因而在使用高學習率的同時還使用了自適應梯度截斷。截斷區(qū)間為[-θ/γ, θ/γ],其中γ為當前學習率,θ是常數(shù)。
第三種技術是數(shù)據(jù)混合,最理想化的算法是為每一種倍數(shù)分別訓練一個模型,但這樣極為消耗資源。因而,同之前的算法不同,本技術將不同倍數(shù)的數(shù)據(jù)集混合在一起訓練得到一個模型,從而支持多種倍數(shù)的高清化。
感知損失
在此之前,使用CNN來解決高清問題時,對圖像高清化的評價方式是將CNN生成模型產生的圖像和實際圖像以像素為單位計算損失函數(shù)(一般為歐式距離)。此損失函數(shù)得到的模型捕捉到的只是像素級別的規(guī)律,其泛化能力相對較弱。
而感知損失,則是指將CNN生成模型和實際圖像都輸入到某個訓練好的網絡中,得到這兩張圖像在該訓練好的網絡上某幾層的激活值,在激活值上計算損失函數(shù)。
由于CNN能夠提取高級特征,那么基于感知損失的模型能夠學習到更魯棒更令人信服的結果。
圖4. 基于感知損失的圖像風格轉換網絡。該網絡也可用于圖像超清問題。左側是一個待訓練的轉換網絡,用于對圖像進行操作;右側是一個已訓練好的網絡,將使用其中的幾層計算損失。
圖4即為感知損失網絡,該網絡本是用于快速圖像風格轉換。在這個結構中,需要訓練左側的Transform網絡來生成圖像,將生成的圖像Y和內容圖像與風格圖像共同輸入進右側已經訓練好的VGG網絡中得到損失值。如果去掉風格圖像,將內容圖像變?yōu)楦咔鍒D像,將輸入改為低清圖像,那么這個網絡就可以用于解決圖像超清問題了。
對抗神經網絡(GAN)
圖5. 對抗訓練的生成網絡G和判別網絡結構D。上半部分是生成網絡G,層次很深且使用了residual block和skip-connection結構;下半部分是判別網絡D。
對抗神經網絡稱得上是近期機器學習領域最大的變革成果。其主要思想是訓練兩個模型G和D。G是生成網絡而D是分類網絡,G和D都用D的分類準確率來進行訓練。G用于某種生成任務,比如圖像超清化或圖像修復等。G生成圖像后,將生成圖像和真實圖像放到D中進行分類。使用對抗神經網絡訓練模型是一個追求平衡的過程:保持G不變,訓練D使分類準確率提升;保持D不變,訓練G使分類準確率下降,直到平衡。GAN框架使得無監(jiān)督的生成任務能夠利用到監(jiān)督學習的優(yōu)勢來進行提升。