1. 程式人生 > >【文章閱讀】【超解像】--Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network

【文章閱讀】【超解像】--Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network

【文章閱讀】【超解像】–Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network

論文連結:https://arxiv.org/abs/1609.04802

code(tensorflow):https://github.com/tensorlayer/srgan

本文將GAN網路引入到了SR應用中,有挺多的創新點,現將文中的主要內容總結如下,後續方便閱讀。該主題文章從2016年到2017年一共有5個版本,本文為最新版本V5的閱讀理解。

1.主要貢獻

​ 針對傳統超分辨中存在結果過平滑問題,在PSNR和SSIM評價指標上能得到很好的結果,但影象細節顯示依舊較差,利用對抗網路結構的方法,得到了視覺特性上較好結果,本文主要貢獻如下:

  • 建立了使用PSNR和SSIM為評價標準的SRResNet,對影象進行放大4倍,取得了最好的測試結果。
  • 提出了SRGAN網路,該網路結構根據對抗網路網路結構提出了一種新的視覺損失函式(perceptual loss),利用VGG的網路特徵作為內容損失函式(content loss),代替了之前的MSE損失函式。
  • 對生成的影象進行MOS(mean opinion score)進行評價。

先上圖看一下影象最終的影象效果:
在這裡插入圖片描述

2.論文分析

​ 基於CNN的超解析度方法主要以最優化思想進行目標函式優化,受到目標函式的影響較大。之前的很多研究以最小化平方方差(MSE)作為損失函式,該方法能得到較好的信噪比,但影象會缺失高頻資訊導致影象的視覺效果差。
在這裡插入圖片描述

1)用MSE作為損失函式影象模糊

​ 文中解釋了為什麼MSE為損失函式的影象會損失影象的高頻資訊,MSE以畫素空間的比較為參考,一個低解析度的影象塊可能對應高解析度中的多個影象塊,而GAN只有唯一的對應,這樣,通過MSE為目標函式的處理方式會將多個高解析度的影象塊進行平均,所以最終得到的結果有一些模糊。
在這裡插入圖片描述

2) 網路結構
在這裡插入圖片描述

上圖上部分為:生成網路結構,基於Resnet網路結構;

上圖下部分為:辨別網路結構,利用LeakyReLU(0.2)為啟用函式,網路層數從64到512,後面連線兩個全連線層和一個sigmoid層,用來判斷是否為同一影象的概率;

3)損失函式

​ (a) 訓練生成器和判別器

​ 對給定的HR影象進行降取樣得到LR圖片,將LR影象作為輸入,訓練生成器,生成對應的HR影象,該訓練過程與訓練前饋CNN類似,對網路引數 θ ^ G \hat{{\theta}}_G 進行優化,如下:
θ ^ G = arg min θ G 1 N n = 1 N l S R ( G θ G ( I n L R ) , I n H R ) \hat { \theta } _ { G } = \arg \min _ { \theta _ { G } } \frac { 1 } { N } \sum _ { n = 1 } ^ { N } l ^ { S R } \left( G _ { \theta _ { G } } \left( I _ { n } ^ { L R } \right) , I _ { n } ^ { H R } \right)
其中 l S R l^{SR} 為視覺損失函式,後面詳細介紹。

​ 文中定義的判別器為 D θ G D_{\theta G} ,生成器和判別器交替優化如下式子:
min θ G max θ D E I H R p t a i n ( I H R ) [ log D θ D ( I H R ) ] + E I L R p G ( I L R ) [ log ( 1 D θ D ( G θ G ( I L R ) ) ] \min _ { \theta _ { G } } \max _ { \theta _ { D } } \mathbb { E } _ { I ^ { H R } \sim p _ { \mathrm { tain } } \left( I ^ { H R } \right) } \left[ \log D _ { \theta _ { D } } \left( I ^ { H R } \right) \right] +\mathbb { E } _ { I ^ { L R } \sim p _ { G } \left( I ^ { L R } \right) } \left[ \log \left( 1 - D _ { \theta _ { D } } \left( G _ { \theta _ { G } } \left( I ^ { L R } \right) \right) \right]\right.

​ (b) 視覺損失函式(perceptual loss function)

​ 本文設計的視覺損失函式,是本文演算法效能的保證,如下,分為內容損失(Content loss)和對抗損失(Adversarial loss)
在這裡插入圖片描述

​ (1) 內容損失

​ 常用的畫素級內容損失函式為MSE,如下,該損失函式能取得較高的PSNR,但導致內容缺乏高頻影象內容,使最終的顯示內容過於平滑。
l M S E S R = 1 r 2 W H x = 1 r W y = 1 r H ( I x , y H R G θ G ( I L R ) x , y ) 2 l _ { M S E } ^ { S R } = \frac { 1 } { r ^ { 2 } W H } \sum _ { x = 1 } ^ { r W } \sum _ { y = 1 } ^ { r H } \left( I _ { x , y } ^ { H R } - G _ { \theta _ { G } } \left( I ^ { L R } \right) _ { x , y } \right) ^ { 2 }

​ 文中對內容損失函式進行了改進,在pre-trained 19層 VGG網路(ReLU損失函式)結構基礎上定義了VGG loss:
l V G G / i . j S R = 1 W i , j H i , j x = 1 W i , j y = 1 H i , j ( ϕ i , j ( I H R ) x , y ϕ i , j ( G θ G ( I L R ) ) x , y ) 2 \begin{aligned} l _ { V G G / i . j } ^ { S R } = \frac { 1 } { W _ { i , j } H _ { i , j } } & \sum _ { x = 1 } ^ { W _ { i , j } } \sum _ { y = 1 } ^ { H _ { i , j } } \left( \phi _ { i , j } \left( I ^ { H R } \right) _ { x , y } \right. \\ & - \phi _ { i , j } \left( G _ { \theta _ { G } } \left( I ^ { L R } \right) \right) _ { x , y } ) ^ { 2 } \end{aligned}