从系列去雨论文看如何创新
論文:Restoring An Image Taken Through a Window Covered with Dirt or Rain
首頁:https://cs.nyu.edu/~deigen/rain/
傅雪陽首頁:https://xueyangfu.github.io/
廈門大學智能數據分析與處理實驗室:
https://xmu-smartdsp.github.io/
1. Restoring an image (ICCV 2013)
在我們拍攝照片的時候會遇到透過玻璃拍攝的場景,如窗戶、車窗,或者透過玻璃自拍等,而玻璃上的污漬會影響照片的效果,這篇論文針對這類透過玻璃拍攝的照片,進行污跡或者雨漬的去除。
CNN結構同LeNet,函數表示:
xxx 表示N×M×3N × M × 3N×M×3的RGB輸入圖像,激活函數使用tanh,第一個卷積層使用“valid”填充,卷積核大小為16X16(果然年代久遠,還有偶數的大卷積核);最后一層使用“full”填充,卷積核大小為8;中間使用1?11*11?1的卷積,通道數為512,共兩個中間層(L=3)。所以:W1 :16X6X3X512,W2:1X1X512X512,W3:8X8X512X512。
損失函數采用輸入標簽和網絡輸出的MSE:
輸入為64X64大小的圖像塊,輸出大小為56X56,做MSE時,和GT中間56X56對應像素相減。采用隨機梯度下降(SGD)更新可訓練參數:
η\etaη為學習率,參數初始化使用均值為0,方差為0.001的正態分布,偏置b初始化為0,學習率衰減因子:0.001,不使用動量和權重正則化。
測試環境:Matlab + Nvidia GTX 580;耗時:3888 × 2592 彩色圖像60s,1280 × 720彩色圖像7s。
2. Clearing the Skies (TIP 2017)
論文主要借鑒上一篇文章的網絡結構,設計了一個改進的單圖像去雨CNN結構,主要改進點:
- CNN映射有雨圖和去雨圖的細節層,而不是直接在原圖建立映射關系。
- 未將網絡結構復雜化,而是通過雨滴先驗知識進行圖像預處理,改變了優化的目標函數。
網絡結構
CNN結構函數表示:
作者把雨滴視為圖像高頻部分,通過低通濾波(引導濾波、雙邊濾波或者滾動濾波)將有雨圖I和其無雨圖標簽J分別分為基礎層和細節層:
基礎層為平滑后的圖像,有:Ibase≈JbaseI_{base} ≈ J_{base}Ibase?≈Jbase?,所以只需要建立兩個細節層的映射關系即可,損失函數由原來預測圖與標簽圖的MSE變為了:
訓練時,參數設置同第一篇論文一致,輸入64X64圖像塊,輸出56X56大小圖像,
圖像增強處理
網絡訓練完成后,去雨結果圖像可以直接通過以下運算得到:
但是在雨比較大的情況下,會出現霧的情況,影響視覺效果,所以對基礎層和輸出的細節層做了圖像增強:
3. deep detail network (CVPR 2017)
論文在上一篇的基礎上進行了進一步優化,設計了一個改進的單圖像去雨CNN結構,主要改進點:
- 建立真實圖像和雨圖之間的負殘差映射,再次縮小映射范圍,優化映射空間。
- 使用殘差結構,可以使用更深的網絡建立映射關系,并通過先驗知識,輸入圖像細節層。
CNN結構函數表示:
其中,
L為CNN總層數,*表示卷積操作,BN表示batch normalization,σ\sigmaσ表示激活函數ReLU,不使用池化操作。
利用引導濾波將雨跡圖劃分為細節層和基礎層(同上一篇),
損失函數:
參數設置:層數L=26,優化器:SGD,權重衰減因子10?1010^{-10}10?10,動量0.9,batch size:20,初始學習率:0.1,迭代100K/200K時除以10,共迭代210K次,卷積核大小為3,個數為16。
4. Residual-Guide Network (ACM MM 2018)
同樣采用負殘差映射的思想設計了一個CNN單圖像去雨網絡ResGuideNet,主要貢獻點:
- 通過由淺入深的Block結構,獲取由粗到細獲取負殘差輸出。
- 通過聯合損失優化每個Block輸出,根據集成學習的思想融合所有負殘差輸出。
CNN結構函數形式:
特征復用:通過密集連接復用每一個Block輸出的負殘差特征。
循環計算:如結構圖左下角左下角所示,為平衡模型參數和性能,每個Block內部的兩個卷積層采用循環計算的策略加深Block深度,函數表示:
為了避免結構加深帶來的梯度消失的問題,將Block第一個 Conv+LReLU的輸出加到每個子循環中:
塊間融合:如結構圖右下角所示:通過集成學習的思想將不同Block的預測結果concatenate在一起,最后通過1X1卷積得到最后的結果。
損失函數:對于每一個Block,采用L2L_2L2?+SSIM loss 損失函數:
M個Block和最后merge輸出的總損失:
實驗細節:環境:python + TensorFlow、NVIDIA GeForce GTX 1080(8GB),初始化:Xavier,優化器:RMSProp,初始學習率: 0.001,batch size:16,迭代次數:50000,每層卷積為:16個3X3,輸出層卷積,3個1X 1。
5. Lightweight Pyramid Networks (T-NNLS 2019)
為了使去雨網絡更輕量化,使其適用于移動設備,作者提出了輕量級的金字塔去雨網絡LPNet,參數量少于8K,主要貢獻:
- 將傳統的高斯-拉普拉斯金字塔運用到CNN中,使用一個參數量少的小網絡可實現很好的結果。
- 結合多尺度、循環計算和殘差學習技術,在大雨場景下,也能很好地實現單圖像去雨。
CNN結構函數形式:
a、構建拉普拉斯金字塔
b、特征提取網絡
c、循環模塊
d、重建高斯金字塔
作者之前提出方法(方案二、方法三)通過引導濾波將圖像分解成基礎層和細節層,運用細節層訓練可以有效減小優化空間,但是引導濾波針對雨量比較厚的圖像達不到很好的細節提取效果。于是,作者使用拉普拉斯金字塔將圖像分解為不同尺度的圖像金字塔,最后融合不同尺度圖片的處理結果。
損失函數:
實驗細節:
5個尺度的拉普拉斯金字塔:[0.0625, 0.25, 0.375, 0.25, 0.0625]為構建高斯金字塔的固定平滑核。
所有子網絡結構相同,卷積核個數不同,W0,1,3,4W^{0,1,3,4}W0,1,3,4卷積核大小為3x3,W^2卷積核大小為1,每個子網絡循環block次數T = 5,激活函數LReLUs,參數為:0.2。
使用生成的雨圖,包含大雨圖像和小雨圖像,輸入大小80×8080 × 8080×80 圖像塊,Adam優化器,batch size為10,學習率:0.001,epoch為3。
想了解更多,請關注公眾號:AI搞事情
總結
以上是生活随笔為你收集整理的从系列去雨论文看如何创新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习课程01】李宏毅2020年机器
- 下一篇: 【opencv系列02】OpenCV4.