1. 程式人生 > >基於深度學習框架的超解析度問題二之EDSR

基於深度學習框架的超解析度問題二之EDSR

上篇主要介紹了一些基本的超解析度的方法,這篇給大家介紹一下EDSR方法。

EDSR和MDSR(17年冠軍模型)

模型架構

EDSR的根本出發點還是希望增加網路的深度(卷積層的層數)和寬度(卷積核的通道數)來提高計算的準確度。而其更多的可以看作是對SRResNet的改進,去掉其對應的多餘計算(主要是指BN和Relu)。其具體的Residual Block結構如右(圖中a表示最原始的結構,c表示經過改變後本文提出的結構)。由結構可以看出,在使用的時候去掉了BN層。由於BN層佔用了和卷積一樣的記憶體,去掉之後可以節約40%的記憶體消耗,這樣在相同的計算資源下,就可以訓練更深的網路結構。除此之外還去掉了殘差之後的Relu層操作。通過掉這些不必要的操作,EDSR可以訓練更深的網路結構獲得更高的精確度。

BN是深度學習中一個重要的操作,為什麼在分類的時候加入BN往往會存在較好的效果,而在低解析度的時候需要去掉呢。主要由以下幾方面的原因:

  1. 對於超解析度的問題我們解決的是低層的計算機視覺問題,而分類問題屬於高層的計算機視覺問題,對於底層問題的解決不需要使用高層問題時使用的結構策略。
  2. 雖然BN是深度學習中非常重要的技術,不僅可以訓練更深的網路,還可以正則化訓練的過程避免過擬合。但是實驗表明在低解析度的處理過程中很少會出現過擬合現象,不僅BN方法其他的一些防治過擬合的方法(dropout等)也是不適用的。
  3. BN是在影象分類過程中被提出來的,而影象分類和影象生成是兩個完全不同的概念。BN之所以在影象分類任務上如此有效,主要是因為影象分類不需要保留影象的對比度資訊,利用影象的結構資訊就可以完成,所以,將影象都通過BN進行歸一化,可以降低訓練難度,甚至一些不明顯的結構,在BN後也會被凸顯出來(對比度被拉開了)。BN會忽略影象畫素(或者特徵)之間的絕對差異(因為均值歸零,方差歸一),而只考慮相對差異,所以在不需要絕對差異的任務中(比如分類),有錦上添花的效果。
  4. 在影象超解析度和影象生成方面,網路輸出的影象在色彩、對比度、亮度上要求和輸入一致,改變的僅僅是解析度和一些細節,而BN對影象來說類似於一種對比度的拉伸,任何影象經過BN後,其色彩的分佈都會被歸一化,也就是說,它破壞了影象原本的對比度資訊,所以BN的加入反而影響了網路輸出的質量。對於影象超解析度這種需要利用絕對差異的任務,BN只會添亂,還不如直接不用。
  5. 我們簡化BN的計算公式為:對超解析度問題往往輸入的圖片比較小,批量也不大,這樣就會導致均值和方差的差異太大,使得統計量不在起作用。

   根據上述思想,其對應的結構為:

 

總共使用了32個Residual  Block,256個特徵通道數(每一層)來進行計算。上取樣採用的是亞畫素卷積(ESPCN的思想),並且對於4倍上取樣是在2倍上取樣的基礎上進行的(所有較大的解析度都是在較小的解析度預訓練好的模型上進行進一步訓練得到的)。該策略可以提高大解析度圖片訓練的速度。

由於該方法採用的結構過深,訓練過程容易引起數值的不穩定性,為了解決這個問題,作者採用了redisual  scaling的方式進行處理。即:在殘差模組的最後一個卷積層的輸出上乘以一個係數0.1,個人覺得應該是對於256個通道數取0.1的比例(25.6)來進行下一步計算。至於具體是不是這樣還有待研究。

除了在結構上進行改進之外,該模型還根據LapSRN的思想採用了L1範數來計算對應的誤差,這樣也提高了模型的準確度。

MDSR是EDSR的多尺度模型,其出發點主要是為了解決一個可以完成多個不同比率的模型,關於該模型的結構如下

該模型的共享主網路使用了80個Residual Block,64個特徵通道數(每一層),增加了特徵提取時候的共享機制,考慮到了不同尺寸之間的相互作用。其上取樣的過程和EDSR一樣,損失函式也使用的是L1範數進行。最終取得了相當不錯的效果。