# Cycle Dehazed 作者: *Deniz Engin、Anıl Genc、Hazım Kemal Ekenel* 整理:Pocky [論文連結](https://arxiv.org/abs/1805.05308) - - - - - ## 前言 有關於圖像去除霧氣的問題,過去的方法都是基於先驗信息對大氣散射模型的參數估計,直接估計霧氣的厚度,如何愷明的[暗通道先驗](https://ieeexplore.ieee.org/document/5567108)。 這篇論文提出了一種名為Cycle-Dehaze的端對端網路,同樣是解決單張圖像去霧問題,Cycle-Dehaze不依賴於大氣散射模型的參數估計。不需要成對的模糊和相應的真實圖像,可以使用不匹配的圖像進行訓練。透過結合[CycleGAN](https://arxiv.org/abs/1703.10593)的Cycle-consistency和[EnhanceNet](https://arxiv.org/abs/1612.07919)的 Perceptual loss 來增強CycleGAN的架構。最後為了獲得高解析度的圖像輸出,採用了基於拉普拉斯金字塔的上採樣方法。 - - - - - ## 論文主要貢獻 - 通過添加循環感知一致性損失,增強了CycleGAN[37]架構用於單圖像去霧。 - 在訓練和測試階段既不需要霧化和真實圖像的成對樣本,也不需要任何大氣散射模型的參數。 - 提出了一種簡單而有效的技術,通過利用拉普拉斯金字塔來上採樣去霧後的圖像。 - 由於其循環結構,此方法提供了一個通過跨數據集場景實驗證明的可泛化模型。 - - - - - ## 相關概念解釋 在圖像處理領域時,通常會使用不同的損失函數來評估和指導模型的學習過程。 以下介紹兩種損失函數: 1. EnhanceNet中的感知損失(Perceptual Loss) * 概念:感知損失是一種在圖像解析任務中用於保持圖像細節的損失函數,通過比較經過處理後的圖像與高解析度的參考圖像在高維度特徵上的差異來計算。例如去霧後的圖像與清晰的無霧圖像拿來做比較。 * 公式:$LP = ||ϕ(I_{est})-ϕ(I_{HR})||_2^2$,其中ϕ表示從深度網路中提取的特徵,$I_{est}$是模型基於輸入數據所生成或預測出來的圖像,$I_{HR}$是高解析度圖像。 * Why:使用感知損失是為了使生成圖像在視覺上更接近高解析度的圖像,不僅是在像素上接近,在結構上也接近於高解析度圖像,例如紋理。 3. CycleGAN中的循環一致性損失(Cycle Consistency Loss) * 概念:在圖像到圖像的轉換任務中,循環一致性損失用於確保原始圖像通過一系列轉換後能夠恢復回去,從而避免學到的轉換太過極端或不可逆。 * 公式:$E_{xtoP_{data}}(x)[||F(G(x))-x||_1] + E_{ytoP_{data}}(y)[||G(F(y))-y||_1]$,其目的是確保在圖像轉換過程中的前向和反向轉換能夠形成一個循環,即圖像經過一系列變換之後能夠回到接近它的原始狀態。 * why:引入Cycle consistency loss是為了讓模型學會在不同圖像域之間進行有效的轉換,而不僅僅是記住Training data。 ----- ## Proposed Method ![image](https://hackmd.io/_uploads/rJ-aI-wTa.png) 圖為模型架構,分為兩部分,霧化圖像到清晰圖像、清晰圖像到霧化圖像的轉換 ### 從霧化圖像到清晰圖像: - 霧化圖像首先通過生成器G處理,目的是生成去霧效果的圖像。 - 這個所謂的“去霧”圖像被鑑別器Dy評估,Dy試圖區分生成的圖像與真實的清晰圖像之間的差異。 - 接著,生成器F試圖再次從這個去霧圖像重構霧化圖像,這一步是循環一致性的關鍵部分,旨在確保從G到F的轉換能夠逆轉回原始的霧化圖像。 ### 從清晰圖像到霧化圖像: - 清晰圖像經過生成器F處理,目的是在清晰圖像上添加霧的效果。 - 鑑別器Dx評估這個合成的霧化圖像與真實霧化圖像之間的差異。 - 最後,生成器G會嘗試從合成的霧化圖像恢復原始的清晰圖像,這同樣是循環一致性檢查的一部分。 這個架構透過循環一致性確保了學習過程可以不需要成對的訓練數據,也能夠相互轉換。 #### 循環感知一致性損失: 前面提到的感知損失和循環一致性損失兩者的結合,CycleDehaze中所使用的循環感知一致性損失(Cyclic Perceptual-Consistency Loss)。 * 概念:CycleDehaze將CycleGAN的循環一致性損失和EnhanceNet的感知損失相結合,目的是產生視覺上令人滿意的去霧圖像,同時在循環轉換過程中保持圖像的一致性。 * 公式:$$L_{perceptual} = ||ϕ(x)-ϕ(F(G(x)))∣∣_2^2 + ||ϕ(y)-ϕ(G(F(y)))∣∣_2^2$$ * 第一部分:$||ϕ(x)−ϕ(F(G(x)))∣∣_2^2$ 衡量的是原始霧化圖像$x$經過生成器$G$轉換後再經過生成器$F$轉換回來的圖像之間的感知差異。 * $||ϕ(y)−ϕ(G(F(y)))∣∣_2^2$ 衡量的是無霧圖像$y$經過生成器$F$轉換後再經過生成器$G$轉換回來的圖像之間的感知差異。 * Why:作者這樣做主要是為了解決原始CycleGAN在圖像質量上的侷限性。CycleGAN雖能學習兩個空間域的映射關係,但主要是基於像素級別的循環一致性,有時候這會導致生成圖像在紋理和細節上不夠精細,特別是在需要重建圖像細節的任務中,如去霧或圖像超解析等。為了提高生成圖像的視覺質量,特別是在紋理和邊緣細節上,作者在循環一致性損失基礎上加入了感知損失。 <br> 以下兩個公式共同定義了CycleDehaze模型的訓練目標和優化過程。 $$ L(G,F,D_x,D_y) = L_{CycleGAN}(G,F,D_x,D_y)+γ*L_{Perceptual}(G,F) , (4) $$ $$ G^*, F^* = argmin max L(G,F,D_x,D_y). (5) $$ 具體來說,公式(4)代表CycleDehaze的總損失,包括了原始CycleGAN損失和循環感知一致性損失。 而公式(5)則展示如何透過最小化這個總損失來尋找模型中生成器和鑑別器的最佳參數。 #### Laplacian Upscaling Cycyle-Dehaze的架構由於GPU的限制而接受256x256的輸入圖像,並產生256x256像素的輸出,為了減少在downscaling 和 upscaling過程中圖像品質的惡化,採用了Laplacian pyramid。 在Cycle Dehaze中,Laplacian pyramid是用來從去霧後的低解析度圖像重建出高解析度的去霧圖像。 1. 首先,從低解析度的去霧圖像開始,逐層運用高斯模糊和下採樣,生成一系列越來越模糊和分辨率越來越低的圖像。這是在建立高斯金字塔。 3. 對高斯金字塔的每一層圖像進行上採樣,然後從同一層級的高斯圖像中減去上採樣後的圖像,得到每一層的拉普拉斯圖像,代表對應層次的圖像細節。 5. 從金字塔的最頂層開始,將拉普拉斯圖像層與上一層經過上採樣的圖像相加,逐層重建,最終得到接近原始解析度的高質量圖像。 ----- ## 實驗結果 #### Dataset * NYU-Depth: 包含1449對,同場景的清晰圖像與合成霧化圖像 * I-HAZE: 25張室內霧化圖像以及Ground Truth * O-HAZE: 35張室外霧化圖像以及Ground Truth 有針對I-HAZE以及O-HAZE兩個dataset做Data Augmentation,因為資料實在是太少了。 使用的是隨機裁減(Random Crop)。 #### NYU-Depth Dataset ![image](https://hackmd.io/_uploads/ryb9ehKaa.png) 判斷指標是PSNR和SSIM的平均值,是在每個霧化圖像及其真實圖像之間做計算的,紅色代表First best result,藍色代表Second best。 Cycle-Dehaze在兩個指標的結果都明顯優於CycleGAN,這表示說在CycleGAN上增加感知一致性損失是有用的。 <br> #### I-HAZE和O-HAZE Dataset 作者特別關注他們的方法在這兩個Dataset上的成果,原因是這兩個Dataset的解析度遠高於其他Dataset。 ![image](https://hackmd.io/_uploads/Sy6uMnYp6.png) 再一次的證明,Cycle-Dehaze方法的提出,有效的增強了CycleGAN的架構。 <br> ![image](https://hackmd.io/_uploads/rk3-XhKp6.png) 從上圖中可以看到,Cycle-Dehaze去霧後的圖像有較少的噪音和更銳利的邊緣細節。 #### Cross-Dataset Image Dehazing ![image](https://hackmd.io/_uploads/S1ABE2t6a.png) 這個實驗是為了測試Cycle-Dehaze模型的泛化能力,在NYU-Depth和I-HAZE這兩個Dataset之間交叉做訓練和測試,作者很有自信的說,他所提出的Cycle-Dehaze是真的學會了什麼是 "霧",而不僅僅是對Training Dataset收斂。 ----- ## 補充知識 #### PSNR (峰值信噪比) 基於原始圖像與失真圖像之間的MSE計算得出。 以除霧為例,對每一個像素位置計算原始圖像與失真圖像在該位置的像素值的差,將這個差的平方求和後再除以圖像的總像素數,得到MSE。接著透過以下公式計算: $$ PSNR = 10*log_10(\frac{MAX_I^2} {MSE}) \quad $$ PSNR的單位是分貝(dB),數值越高,表示去霧後的圖像與無霧的參考圖像在視覺上越相似,即去霧效果越好。然而,PSNR有其局限性,它可能無法完全反映人眼對圖像質量的主觀感知。 #### SSIM (結構相似性指數) 評估除霧後圖像與無霧參考圖像在結構、亮度和對比度方面的相似性。SSIM的值範圍從-1到1,1表示完全相同,-1則相反。 SSIM考慮了以下幾個主要因素: 1. **亮度比較**:評估兩幅圖像亮度的平均值,反映了亮度的一致性。 2. **對比度比較**:通過比較圖像的標準差(或方差)來評估對比度的相似性。 3. **結構比較**:評估圖像的結構信息,通常通過測量兩幅圖像的協方差來實現。 -----