梁志勇,肖衡,楊琳
(1.三亞學院信息與智能工程學院,三亞 572022;2.三亞學院超算中心,三亞 572022)
生成對抗網絡(Generative Adversarial Networks,GAN)是Goodfellow等在2014年提出的一種生成模型,通過讓兩個神經網絡相互博弈的方式進行學習。GAN的主要靈感來源于博弈論中零和博弈的思想,應用到深度學習神經網絡上來說,就是通過生成網絡G(Generator)和判別網絡 D(Discriminator)不斷的進行互相博弈,進而使網絡G學習到數據的分布,如果應用于圖形圖像的生成上,則訓練完成后,網絡G可以從一段隨機數中生成逼真的圖像。
GAN的優勢在于不僅能夠保存圖像中高紋理細節,而且創建出來的圖像又能最大限度接近真實圖像,所以可以主要用于圖像超分辨率重構和圖像修復。正因為GAN有著這樣的優勢,故可以基于條件GAN和多元內容損失的DeblurGAN用于運動圖像的去模糊化操作。無內核的盲目運動去模糊的方法——Deblur-GAN用多分量損失函數來優化條件對抗網絡的去模糊實現了一個實際合成的模糊去模擬不同的模糊源。
圖像去模糊化處理是一個典型的不適應問題,因此處理難度比較大。在深度學習流行以前,傳統的圖像去模糊化主要使用模糊模型對其進行建模處理。模糊模型的常見表述如下:IB=K*IS+N。其中IB是模糊圖像,K是模糊核,*表示卷積運算,N是加性噪聲,IS是潛在、未知的清晰圖像,也就是最終重構出來的清晰圖像。
在去模糊化的方法中,一般分為兩種類型:盲目去模糊與非盲目去模糊。但是在實際去模糊化操作中,模糊函數是未知的,因此可以在潛在、未知的清晰圖像IS和模糊核K中找到盲目去模糊算法。為每個像素找到模糊函數是一個不適定的問題,因此大多數現有算法依賴于圖像啟發式和模糊源的假設。這些方法系列通過考慮圖像上的均勻模糊來解決由相機抖動引起的模糊,這就需要根據誘導模糊核估計相機運動,然后通過執行反卷積操作來反轉效果。
在DeblurGAN中,輸入一張模糊的圖像IB,通過構建一個生成對抗網絡,訓練出一個卷積神經網絡作為GAN中的生成器和一個判別網絡,最終通過對抗形式重構出清晰的圖像IS,從而達到去運動模糊的結果。整個網絡架構如圖1所示。

圖1 DeblurGAN流程圖
在生成器G(Generator)的網絡結構設計上,DeblurGAN使用深度殘差網絡(ResNet)結構,由于ResNet不僅大幅增加了神經網絡層數,而且在一定程度上解決了在很深的網絡訓練中梯度消失或梯度爆炸問題,這可以大幅提升模型的容納能力,從而最終獲得更佳的圖像生成效果。對于生成器G的結構如圖1所示。在圖中的架構中可以看出,DeblurGAN包含兩個1/2間隔的卷積單元、9個剩余residual單元和兩個反卷積單元。每個ResBlock由一個卷積層、實例歸一化層和ReLU激活組成。而DeblurGAN的判別器D(Discriminator)的網絡架構依然使用pix2pix中的Patch-GAN。
在DeblurGAN中,損失函數由“Adversarial loss”和“Content loss”這兩部分構成,其整體計算公式是L=LGAN+λ?LX,其中LGAN是 Adversarial loss、LX是 Content loss,λ=100。
(1)Adversarial loss
訓練原始的GAN很容易遇到梯度消失、模型崩潰等問題,訓練起來十分棘手。使用WGAN-GP實現了在多種GAN結構上穩定訓練,且幾乎不需要調整超參數。在DeblurGAN中使用的是WGAN-GP,Adversarial loss的計算式如下:

(2)Content loss
內容損失是評估生成的清晰圖像和實際清晰圖像之間的差距。兩個常用的選擇是L1(MAE)損失,和L2(MSE)損失。在 DeblurGAN 中使用“Perceptual loss”,本質上是一種L2(MSE)損失。Content loss的計算式如下:

本實驗在Windows操作系統下基于TensorFlow深度學習框架下實現。數據集使用GOPRO數據集中進行訓練。計算機硬件環境為AMD Ryzen 5 1600+16G內存+NVIDIA GeForce GTX1660TI。在模型中,生成器G和判別器D的學習率learning_rate設置成10-4。設置batch_size為200,可同時處理200張圖像。設置epoch為200,表示訓練200次全數據集,同時設定每50個epoch保存一次結果。
GOPRO數據集有三種版本,分別是GOPRO_Large(8.9G)、GOPRO_Large_all(35G)和 blurred_sharp.zip(1G),本文以blurred_sharp.zip中的圖片作為整個模型的訓練集和測試集。該數據集中的圖像主要以汽車的運動場景所造成的圖像模糊,圖片均為720×720像素的圖片。訓練集中的blur文件夾中有1146張運動模糊圖像和sharp文件夾中與之對應的清晰圖片。在模型的訓練過程中,將模糊圖像與相對應的清晰圖像同時作為生成器G(Generator)的輸入。

圖2 DeblurGAN中生成器G(Generator)的網絡結構圖
經過200次全數據集的迭代訓練之后,使用測試集圖片進行驗證,具體結果如圖3所示。

圖3 DeblurGAN的運行結果對比圖
從結果可以看出來,相比于輸入的blur影像,通過DeblurGAN后確實可以明顯地看出圖像清晰了很多,能顯示出圖像中的一些細節紋理,特別是上圖中數字能基本準確辨別出來。由于訓練的次數還不夠或者是原圖像過度模糊難以復原,部分放大了看仍有一些地方比較模糊。為了得到更佳的清晰圖片,可以在增加迭代訓練次數的基礎上采用算力更強的顯卡進行更多次的訓練,從而既能節約訓練時間,又能得到較好的預期結果。
本文提出來基于DeblurGAN的運動圖像去模糊的方法,相比傳統的運動圖像去模糊化算法,采用生成對抗網絡(GAN)能夠使得最終生成圖像具有更佳的紋理效果。但由于本文提出的算法在訓練過程中參數設置過于復雜,增加了訓練的復雜度,同時也加深了訓練時間,下一步的研究重點將用于如何在獲得更佳的去模糊化圖像的情況下,對模型參數進行優化,以降低訓練的復雜度和訓練時間。