論文閱讀:Attentive Generative Adversarial Network for Raindrop Removal from A Single Image

順手把這兩篇比較相像的GAN網絡整理一下。

心有猛虎,細嗅薔薇。

2018CVPR:Attentive GAN

本篇文章是2018年一篇CVPR,主要是針對雨滴Raindrop的去除提出了一種方法,在GAN網絡中引入注意力機制,將生成的注意力圖和原始有雨圖像一起輸入,完成去雨。是北大Jiaying Liu老師課題組的一篇文章,同組比較知名的去雨方面研究還有楊文瀚。

在這裏插入圖片描述
作者源代碼:戳我
python3.5復現代碼:戳我

作者指出,對於雨滴去除問題,首先是被雨滴遮擋的區域沒有給出,其次大部分被遮擋區域的背景信息完全丟失,因此存在一定的挑戰性。本文則是使用了一種基於對抗訓練的注意力生成網絡,在生成網絡和判別網絡中引入視覺注意力信息。並且在訓練中視覺注意力學習雨滴區域和其周圍信息,引入視覺注意力機制後,生成網絡就會更加關注雨滴區域和周圍結構,判別網絡則能評估恢復區域的局部一致性。
關鍵詞: 雨滴 + GAN + 視覺注意力

前人的工作及缺陷:

雨滴檢測和去除問題已提出了一些解決方法。
有一些方法致力於探測雨滴,但沒有移除它們。
其他方法利用立體視覺、視頻流或特殊設計的光學快門來檢測和去除雨滴,因此不適用於普通單幀圖像。
Eigen等人提出了一種方法(一個三層的CNN網絡),試圖通過深度學習的方法,基於單幅圖像去除雨滴或污垢。然而,它只能去除圖像中的小雨滴,而且輸出圖像比較模糊,並且該方法無法處理相對較大和稠密的雨滴。

主要創新之處:

1、提出了一種注意力循環網絡。在傳統的生成網絡前嘗試生成注意力分佈圖,使得生成網絡聚焦在有雨滴的區域。具體實現由一個結合深度殘差網絡(ResNets)和記憶神經網絡(LSTM)的循環神經網絡和一部分標準的卷積層實現。(5ResNet + LSTM + conv)
2、在生成器的後半部分是一個U-Net形狀的自動編解碼器,輸入是輸入圖像和注意力分佈圖。損失函數則是使用了獲取廣泛上下文信息的多尺度損失及使更加真實的感知損失。
3、判別器網絡中則是在全局和局部驗證圖像的真實性,並且利用注意力分佈圖來指導判別網絡指向局部的雨滴區域。

前人工作:

Kurihata等人採用PCA學習了雨滴的形狀,並嘗試使用已學習的雨滴形狀與測試圖像進行匹配。然而,由於雨滴是透明的且形狀各異,也存在無法確定需要學習雨滴的數量,如何保證PCA能夠模擬各種雨滴的形狀,以及如何防止一些與雨滴類似的區域被誤檢爲雨滴的這些問題。

Roser和Geiger提出了一種方法,可以將人工合成的雨滴和可能帶有雨滴的補丁相比較。合成雨滴被假定爲球面部分,且補丁也假定爲傾斜球面部分。這些假設可能在某些情況下起作用,由於雨滴存在各種形狀和大小,故不能完全用於處理所有雨滴。

Yamashita等人使用立體視覺系統來檢測和移除雨滴。它通過比較立體視覺所測量照片的差異和立體相機和玻璃表面之間的距離來檢測雨滴。然後,使用未受雨滴影響的像素替換其他圖像的雨滴區域像素進行去除雨滴,這種方法的前提是其他圖像的對應區域沒有遮擋背景場景的雨滴。

Yamashita等人還提出了另一種使用視頻幀而不是立體視覺的類似方法。

You等人引入了一種基於運動的雨滴檢測方法,以及視頻修復技術消除探測到的雨滴。雖然這些方法在一定程度上可以去除雨滴,但是它們不能直接應用到單一圖像的場合。

Eigen 等人解決了單幅圖像中的雨滴去除,據瞭解,是文獻中唯一專門解決這個問題的方法。這個方法的基本思想是用一對有雨滴圖像和對應無雨滴圖像來訓練一個卷積神經網絡。此 CNN結構由3層組成,每層有512個神經元。雖然這種方法有效,特別是對於相對稀疏和小面積的雨滴或灰塵,但對於較大和稠密的雨滴它不能產生清晰的結果。此外,輸出圖像是模糊不清的。可能是因爲網絡的能力有限,以及損失函數無法提供足夠的限制因素缺陷而造成。

網絡結構:

在這裏插入圖片描述

由網絡結構圖可以看出,
首先是向生成器網絡輸入有雨圖,然後通過5ResNet + LSTM + convs網絡得到當前階段的2D注意力圖,並將當前階段的注意力圖和原始圖像一起輸入到下一階段。
然後將生成的2D注意力圖和原始圖像一起輸入到一個U-Net得到去雨之後的圖像。
判別器網絡輸入的則是生成器網絡生成的去雨圖片。

具體實現:

1、雨滴的成像原理
在這裏插入圖片描述
其中,I是輸入彩色圖像;M是二進制掩碼。在掩碼中,M (x)=1表示像素 x 是雨滴區域的一部分,否則認爲是背景區域的一部分;B是背景圖像,R是雨滴所帶來的影響,表示背景信息的複雜混合物以及透過透鏡或擋風玻璃的反射光線。算子⊙代表元素相乘。

並且雨滴本身是透明的。但由於它們的形狀和折射率,雨滴區域中的一個像素不僅受到現實世界中某一點的影響,而且還受到整個環境的影響,使得大部分雨滴看起來都不同於環境背景的圖像。此外,由於我們的相機被假定爲關注背景,雨滴區域內的成像大多是模糊的。雨滴的某些部分,特別是在邊緣和透明區域,包含了一些關於背景環境的信息。這些信息能夠被我們的網絡使用。

2、Attentive-GAN

在這裏插入圖片描述

其中G、D分別代表生成和判別網絡;
I是包含雨滴的雨圖,是生成器網絡的輸入;
R是自然界的無雨的清晰圖片。

3、生成器

注意力循環網絡+上下文自動編碼器。
注意力循環網絡的目的是在輸入圖像中找到需要引起注意即包含雨滴的區域。
這些區域是上下文自動編碼器需要關注的雨滴區域及其周圍結構,這樣它就可以產生更好的局部圖像復原效果,並且判別網絡也可以更好地進行評估。

注意力循環網絡:
應用了一些視覺注意模型用於提取目標關注區域的特徵。視覺注意力是產生無雨滴背景圖像的重要因素,因爲它可以讓網絡知道移除和恢復作用應該集中在哪裏。
使用一個循環網絡來產生我們的視覺注意機制。
每一塊都包含5層ResNet它們幫助從前一塊的輸入圖像和掩碼中提取特徵-一個卷積的LSTM單元和用於生成2D注意分佈圖的卷積層。

在LSTM中學習到的注意力分佈圖,是一個從0到1的矩陣,其值越大,它所表示的注意力就越大。與二進制掩碼不同的是,注意圖是一個非二進制映射,它代表了從非雨滴區域到雨滴區域的逐漸增加的注意力。
卷積LSTM單元包括一個輸入門、一個遺忘門、一個輸出門和一個單元狀態。狀態與門之間在時間維度上的相互作用定義如下:
在這裏插入圖片描述

Xt 是由ResNet生成的特徵;
Ct 對將要轉遞到下一個LSTM的狀態進行編碼;
Ht 代表LSTM單元的輸出特徵;
運算符 * 表示卷積運算,W是權重係數。
然後將LSTM的輸出特性輸入到卷積層中生成一張2維注意力分佈圖。
在訓練過程中,我們將注意力分佈圖的值初始化爲0.5。
生成的2D注意力分佈圖:
在這裏插入圖片描述

上下文自動編碼器

在這裏插入圖片描述

上下文自動編碼器的目的是生成一個沒有雨滴的圖像。自動編碼器的輸入是輸入圖像和循環網絡生成的注意力分佈圖。我們的深度自動編碼器有16個conv-relu塊,並添加了跳躍連接,以防止模糊的輸出。
自動編碼器有兩個損失函數:多尺度損耗和感知損失。對於多尺度損耗,我們從不同的解碼器層中提取特徵,以形成不同尺寸的輸出。通過採用這種方法,我們打算從不同的尺度獲取更多的上下文信息。還應用了一個感知損失以測量去雨圖像和真實無雨圖像之間全局的特徵差異。

4、判別器

通常使用全局判別器和局部判別器來進行判別,全局判別器查看整個圖像,以檢查是否存在不一致性,而局部判別器則查看特定的小區域。

這裏還是利用注意力循環網絡生成的注意力分佈圖。具體來說,我們從判別器中間的某層提取特徵,然後輸入到一個CNN中去,其輸出一個注意力掩碼。我們根據CNN的輸出和注意力分佈圖來定義一個損失函數。更重要的是,對於CNN的輸出,在將它們輸入下一層之前,我們將其與判別網絡的原始特徵相乘。這樣做的基本思想是引導我們的判別器將注意力集中在注意力分佈圖所指定的區域上。最後一層使用一個全連接層來判別輸入圖像的真假。

判別器網絡包含7個3x3的卷積層,一個全連接層(1024個神經元)和一個sigmoid激活函數。倒數第3層(含全連接層)前爲掩碼後的圖像特徵。

損失函數:

1、訓練注意力循環網絡
在這裏插入圖片描述
各循環塊的損失函數爲在時間步長t輸出注意力分佈圖At和二進制掩碼M之間的均方誤差(MSE)。LSTM循環網絡重複N個時間步長。早期的注意力分佈輸了具有較小的權值,隨着步長的增加權值增大。

2、上下文自動編碼器

多尺度損失:
在這裏插入圖片描述
其中,Si表示從解碼層中提取的第i個輸出,Ti表示與Si相同尺度的groundtruth。

感知損失:
在這裏插入圖片描述
3、生成器總損失:

在這裏插入圖片描述

4、判別器損失:

在這裏插入圖片描述
其中,L map 是爲鑑別器內層提取的特徵與最終注意力圖之間的損失:

在這裏插入圖片描述

實驗

創建了自己的數據集。
拍攝了1119對圖片,各種背景場景和雨滴。我們使用索尼A6000和佳能EOS 60進行圖像採集。我們的玻璃板厚度爲3毫米,並附在相機鏡頭上。我們設置了玻璃和相機之間的距離,從2釐米到5釐米不等,以產生不同的雨滴圖像,並儘量減少玻璃的反射效果。

在這裏插入圖片描述
並採用 Google Vision API(https://cloud.google.com/vision/) 測試了使用我們的輸出是否可以提高識別性能。

分頁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章