EnlightenGAN: Deep Light Enhancement without Paired Supervision論文閱讀筆記


EnlightenGAN: Deep Light Enhancement without Paired Supervision論文解讀

Motivation and introduction

最近在xiajiba看一些論文,看到了關於低光圖像增強的無監督學習的一篇論文。如題。

作者題目起的非常低調,大概表達的意思是做了一件事情,之后論文的故事講的也非常好。

作者在introduction中介紹了現有的一些方法,以及這些方法都是基於paired training。但是paired training

會遇到一些問題,比如

  1. 對於同一個場景,很難去同時拍攝低光圖像和亮光圖像(注意,低光圖像和亮光圖像是一個paired,在以往的方法都是需要的)
  2. 有些方法是通過合成得到的有損的圖像(有雨的,低光的等),但是通過合成數據來制造pair的方法和真實的圖片相差甚遠
  3. 尤其是對於低光圖像而言,沒有一個統一的標准來衡量究竟是增強到多亮才算好。比如傍晚的圖像可能是深夜的圖像的增強,但是實際上中午的圖像也是傍晚的圖像的增強。

針對以上問題吧,同時受到一些無監督的圖像翻譯文章的啟發,作者提出了一個輕量級但是非常有效果的單路GAN(說是單路GAN,是相對於cyclegan而言的)

因為缺少paired training data,作者提出了一系列的創新的techniques,比如

  1. 他們第一次提出了global discriminator以及local discriminator。
  2. 他們用self-regularized perceptual loss來約束低光和增強之后的圖片
  3. 同時,他們利用低光亮度信息作為特征圖的一種attention map,來正則無監督學習

作者實驗驗證,EnlightenGAN可以很容易增強不同domain的low-light圖像

值得一提的是,作者在introduction中介紹了cvpr2019一篇文章,learning to see in the dark.這篇文章非常有意思,和以前做的低光圖片增強不同,learning to see in the dark這篇文章提出了一個非常暗的數據集合,以至於單純的圖像亮度調整是不可能的,需要考慮到去噪,以及去馬賽克,以后會講一下這一篇paper

their method

網絡圖如上,先看G網絡,作者用到的生成網絡是一個unet256,做了一些稍微的修改是加入了一個attention模塊。這個attention模塊非常簡單,作者的motivation是這樣的,對於圖像增強這個任務而言,亮的部分,我不希望特別亮,對於暗的部分,我希望能頭提亮一些,也就是說我希望網絡着重關注於圖像中比較暗的部分。所以作者對圖像的亮度做了一個減法,就是用\(1-I\)來作為attention map。作者在這里,輸入不僅進行了concate,對encoder中的feature用\(1-I\)進行加權,得到的feature map再與decoder中的feature map進行加權。舉個例子:

conv7 = F.upsample(conv7, scale_factor=2, mode='bilinear')
conv2 = conv2*gray_2 if self.opt.self_attention else conv2
up8 = torch.cat([self.deconv7(conv7), conv2], 1)
x = self.bn8_1(self.LReLU8_1(self.conv8_1(up8)))
conv8 = self.bn8_2(self.LReLU8_2(self.conv8_2(x)))

gray_2是通過resize之后的attention map和encoder中的feature map進行逐元素相乘,相當於是一個attention。

之后網絡輸出的部分和attention map相乘得到一個殘差,這個殘差和原圖相加,得到最終的亮度圖。

這種residual的思想很值得學習,之前在去模糊以及去雨的相關論文中就有這種介紹,學習一個殘差比學習一個完整的去完玉之后的圖像要壓力小的多,尤其是這種對於圖像內容更改不大的任務。不僅僅是學習一個殘差這種low-level vision中會采用,最近看了一片關於雙目深度估計的一篇paper,也是采用類似的思想,學習一個cost volume,之后會講到

Self Feature Preserving Loss

挑重要的說,作者采用perceptual loss 來保持自己的特征。作者說對vgg網絡而言,輸入的圖像的亮度改變之后,輸出的圖像的類別變化很小,所以作者在這里說,希望用vgg約束來保持輸入的暗的圖像和輸出的亮的圖像的content不變。這樣是比較reasonable的,最初的perceptual loss提出來的時候也是用於風格遷移,保持兩張圖片的content不變,只改變style。但是作者說了這個和很多low-level的任務不一樣,比如去雨,去霧這種。這種去雨去霧的都是對於生成器輸出的圖像和gt之間的feature進行度量,而不是,對g的輸入和g的輸出之間的距離進行一個度量。我覺得這個loss可能也只能在亮度增強任務中應用,因為亮度的改變vgg feture之間的距離影響不是特別大,perceptual loss具有保內容性。

golbal and local discriminator

作者發現,最初的判別器在光照變化的區域往往會失效,這個時候對於圖像的local區域進行判別顯得尤為重要。所以在這里作者用了兩個discriminator,一個是global的discriminator,一個是local的discriminator,兩個discriminator的作用正如標題所言。作者在使用local discriminator的時候輸入的圖像是隨機的patch。

對於global discriminator,作者采用的是relativistic discriminator,這個discriminator貌似很出名的樣子,因為deblur-gan v2也使用了這樣的一個gan。不過無論怎樣,loss越小,都是g或者d的目標。

對於local discriminator,作者使用的是ls-gan。

每個part的作用

作者詳細介紹了,local discriminator,attention模塊的作用

local discriminator和attention模塊的作用都是減少失真和保持顏色一致性的關鍵part。

實驗數據

因為不是unpaired的圖像,所以比較好搜集。作者用了914張low light的圖像和1016張normal light的圖像。所有圖像的尺寸resize到600×400。三塊卡上訓練,三個小時訓完。這里想說一句,大部分low-level的任務,數據集合都是比較小的,所以很多開源的代碼,都是單卡上跑的, 作者這里用data parallel多卡並行,看了一下batch size是32,訓練速度非常快。之前做畸變的時候就苦於gan很難用多卡一起跑,作者開了一個好頭。

實驗結果

對於無監督的圖像生成,很難用定量的評價指標進行評價,作者這里除了做了定性的ablation study之外,對於和sota結果的比較,作者用了兩個評價標准,一個是Human Subjective Evaluation,另外一個是NIQE。第一個是人為的去評價圖像質量如何,第二個是,一種通用的圖像質量評價方法。值得注意的是,作者這里和cycle-gan進行了對比,感覺結果還不錯,綜合而言。

總的來說,這篇文章值得借鑒的部分還挺多的,第一個是關於無監督學習的一個motivation以及,一種比cycle-gan更輕量級的gan來進行domain的transfer。local以及discriminator的應用,圖像質量評價標准的應用。

給自己挖幾個坑

  1. 將一片iccv上的扶正文章看
  2. 講一下雙目深度估計相關的paper
  3. 對於see in the dark這一篇文章,寫相關的背景介紹


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM