论文创新,可以看看这几篇去雨文章是怎么做的
(方法三首頁demo)
相關資源
論文: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/
論文筆記
01. Restoring an image (ICCV 2013)
在我們拍攝照片的時候會遇到透過玻璃拍攝的場景,如窗戶、車窗,或者透過玻璃自拍等,而玻璃上的污漬會影響照片的效果,這篇論文針對這類透過玻璃拍攝的照片,進行污跡或者雨漬的去除。
CNN結構同LeNet,函數表示:
? 表示的RGB輸入圖像,激活函數使用tanh,第一個卷積層使用“valid”填充,卷積核大小為(果然年代久遠,還有偶數的大卷積核);最后一層使用“full”填充,卷積核大小為8;中間使用的卷積,通道數為512,共兩個中間層(L=3)。所以W1 :,W2:,W3:。
損失函數采用輸入標簽和網絡輸出的MSE:
輸入為大小的圖像塊,輸出大小為,做MSE時,和GT中間對應像素相減。采用隨機梯度下降(SGD)更新可訓練參數:
為學習率,參數初始化使用均值為0,方差為0.001的正態分布,偏置b初始化為0,學習率衰減因子:0.001,不使用動量和權重正則化。
測試環境:Matlab + Nvidia GTX 580;耗時:?彩色圖像60s,彩色圖像7s。
02.?Clearing the Skies (TIP 2017)
論文主要借鑒上一篇文章的網絡結構,設計了一個改進的單圖像去雨CNN結構,主要改進點:
CNN映射有雨圖和去雨圖的細節層,而不是直接在原圖建立映射關系。
未將網絡結構復雜化,而是通過雨滴先驗知識進行圖像預處理,改變了優化的目標函數。
網絡結構
CNN結構函數表示:
作者把雨滴視為圖像高頻部分,通過低通濾波(引導濾波、雙邊濾波或者滾動濾波)將有雨圖I和其無雨圖標簽J分別分為基礎層和細節層:
基礎層為平滑后的圖像,有:,所以只需要建立兩個細節層的映射關系即可,損失函數由原來預測圖與標簽圖的MSE變為了:
訓練時,參數設置同第一篇論文一致,輸入圖像塊,輸出大小圖像。
圖像增強處理
網絡訓練完成后,去雨結果圖像可以直接通過以下運算得到:
但是在雨比較大的情況下,會出現霧的情況,影響視覺效果,所以對基礎層和輸出的細節層做了圖像增強:
03.?deep detail network (CVPR 2017)
論文在上一篇的基礎上進行了進一步優化,設計了一個改進的單圖像去雨CNN結構,主要改進點:
建立真實圖像和雨圖之間的負殘差映射,再次縮小映射范圍,優化映射空間。
使用殘差結構,可以使用更深的網絡建立映射關系,并通過先驗知識,輸入圖像細節層。
CNN結構函數表示:
其中,
L為CNN總層數,*表示卷積操作,BN表示batch normalization,表示激活函數ReLU,不使用池化操作。
利用引導濾波將雨跡圖劃分為細節層和基礎層(同上一篇)。
損失函數:
參數設置:層數L=26,優化器:SGD,權重衰減因子,動量0.9,batch size:20,初始學習率:0.1,迭代100K/200K時除以10,共迭代210K次,卷積核大小為3,個數為16。
04.? Residual-Guide Network (ACM MM 2018)
同樣采用負殘差映射的思想設計了一個CNN單圖像去雨網絡ResGuideNet,主要貢獻點:
通過由淺入深的Block結構,獲取由粗到細獲取負殘差輸出。
通過聯合損失優化每個Block輸出,根據集成學習的思想融合所有負殘差輸出。
CNN結構函數形式:
特征復用:通過密集連接復用每一個Block輸出的負殘差特征。循環計算:如結構圖左下角左下角所示,為平衡模型參數和性能,每個Block內部的兩個卷積層采用循環計算的策略加深Block深度,函數表示:
為了避免結構加深帶來的梯度消失的問題,將Block第一個 Conv+LReLU的輸出加到每個子循環中:
塊間融合:如結構圖右下角所示:通過集成學習的思想將不同Block的預測結果concatenate在一起,最后通過卷積得到最后的結果。
損失函數:對于每一個Block,采用+SSIM loss 損失函數:
M個Block和最后merge輸出的總損失:
實驗細節:環境:python + TensorFlow、NVIDIA GeForce GTX 1080(8GB),初始化:Xavier,優化器:RMSProp,初始學習率:0.001,batch size:16,迭代次數:50000,每層卷積為:16個,輸出層卷積,3個。
05. 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]為構建高斯金字塔的固定平滑核。
所有子網絡結構相同,卷積核個數不同,卷積核大小為 3x3,卷積核大小為1,每個子網絡循環block次數T = 5,激活函數LReLUs,參數為: 0.2。
使用【2】生成的雨圖,包含大雨圖像和小雨圖像,輸入大小?圖像塊,Adam優化器,batch size為10,學習率:0.001,epoch為3。
(論文實驗結果對比)
用code搞事情
上述論文代碼均開源在作者首頁,包括matlab或者python+TensorFlow實現。我們借鑒了方法三和論文【2】多任務的思想,參加了馬上金融的圖像污跡去除賽道,并獲得了第一名的成績。
(提出的人臉去污網絡結構)
該模型訓練過程中輸入數據包括:網紋圖像X,真實圖像Y,mask圖像M。對于真實圖像輸出分支,目標函數使用均方誤差loss1;針對mask輸出分支,我們使用交叉熵損失loss2。兩者采用1:1的比例相加得到最后需要優化的損失函數loss,具體公式如式:
其中,N為訓練圖片數量,為卷積神經網絡,為網絡要學習的參數,除了兩個分支上的權重不同以外,其余權重兩個分支權重共享,表示為第i張圖片的細節層,通過引導濾波所得。
模型的損失函數:
(人臉去污結果)
參考文獻
【1】 Deep joint rain detection and removal from a single image
【2】 Multi-task ConvNet for blind face inpainting with application to face verification
長按二維碼關注我們
有趣的靈魂在等你
留言請摁
總結
以上是生活随笔為你收集整理的论文创新,可以看看这几篇去雨文章是怎么做的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 眨眼算什么,让蒙娜丽莎像你一样唠上嗑才算
- 下一篇: 返岗上班应该注意什么?五个细节必须牢记