深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

作者:Chu-Tak Li

編譯:ronghuaiyang

導讀

相比於之前,在影象修復網路結構中增加了殘差塊,並對每個區域性區域都進行了真假的判別。

今天,我想給我們到目前為止討論過的深度影象修復做一個回顧。另外,我想再複習一篇影象修復的論文,鞏固深度影象修復的知識。

回顧

在這裡,讓我們首先簡要回顧一下我們從以前的帖子中學到了什麼。

Context Encoder (CE)是第一個基於GAN的修復演算法

。它強調了在修復任務中理解整個影象的上下文的重要性,並使用(channel-wise)全連線層來實現這一功能。文章連結:用生成模型來做影象恢復的介紹和回顧:上下文編碼器

Multi-scale Neural Patch Synthesis (MNPS)

可以看作是CE的改進版本。它由兩個網路組成,即內容網路和紋理網路。內容網路是CE,紋理網路是預先訓練好的用於分類任務的VGG-19。使用紋理網路的想法來自於最近成功的神經風格遷移。簡單地說,對於高階視覺任務(如物件分類),預訓練網路的神經響應包含有關影象模式的資訊。透過鼓勵在缺失區域內外產生相似的神經響應,我們可以進一步增強生成畫素的紋理細節,因此完成的影象將更真實。文章連結:使用多尺度patch合成來做高解析度的影象復原

Globally and Locally Consistent Image Completion (GLCIC)

是深度影象修復任務中的一個里程碑。作者採用完全卷積網路(FCN)與擴張卷積(DilatedConv)作為他們提出的模型的框架。FCN允許不同的輸入大小和帶膨脹的conv來替換通道全連線層,用於理解整個影象上下文。在此基礎上,採用兩種鑑別器對兩種尺度下的完整影象和真實影象進行區分。一個全域性判別器著眼於整個影象,而一個區域性判別器著眼於區域性填充後的影象patch。文章連結:影象修復中的一個里程碑:全域性和區域性一致性的影象補全

今天,我們將回顧這篇論文,

Patch-Based Image Inpainting with Generative Adversarial Networks

。這可以看作是GLCIC的一種變體,因此我們可以對這種典型的網路結構做了一些修改。

動機

本文作者希望利用殘差連結和PatchGAN鑑別器的優勢,進一步提高其修復效果。影象識別的深度殘差學習(Deep Residual Learning for Image Recognition,ResNet)在深度學習方面取得了顯著的成就。

透過使用殘差塊(殘差連線),我們能夠訓練非常深的網路,許多論文表明殘差學習對於獲得更好的結果是有用的。

PatchGAN在影象對影象的轉換方面也取得了巨大的成功。與典型GAN中的鑑別器相比,PatchGAN鑑別器(參見下面的圖1)輸出的是一個矩陣(2d-array),而不是單個值。簡單來說,典型GAN鑑別器的輸出是0 ~ 1的單個值。這意味著鑑別器會看整個影象,判斷這幅影象是真的還是假的。如果影象是真實的,它應該等於1。如果影象是假的(即生成的影象),它應該給出0。該式子關注的是整個影象,因此可能忽略影象的區域性紋理細節。另一方面,PatchGAN判別器的輸出是一個矩陣,這個矩陣中的每個元素都在0到1之間。注意,每個元素代表輸入影象中的一個區域性區域,如圖1所示。因此,這一次,判別器需要檢視多個區域性影象patch,並判斷每個patch的真偽。透過這樣做,生成的影象的區域性紋理細節可以得到增強。這就是為什麼PatchGAN被廣泛應用於影象生成任務。

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖1,PatchGAN 判別器,輸出是一個矩陣,矩陣中的每個元素表示輸入影象的一個區域性區域,如果區域性區域是真實的,我們會得到1,否則是0

介紹

影象修復可以看作是一種影象生成任務。我們希望填充影象中缺失的區域(即生成缺失的畫素),這樣影象就完整了,看起來更真實。

為了生成逼真的影象,GAN通常用於不同的影象生成任務,包括影象修復。典型的GAN鑑別器只通過一個單一的值[0,1]來判斷輸入是否為實數。本文將這種GAN鑑別器稱為全域性GAN (G-GAN)。

另一方面,如前一節所述,PatchGAN會在輸入中檢視多個區域性區域,並獨立決定每個區域性區域的真實性。研究人員已經表明,使用PatchGAN可以透過關注更多的區域性紋理細節,進一步提高生成影象的視覺質量。

方案

生成器採用了具有膨脹卷積的殘差塊(

膨脹殘差塊

)。(作者希望透過使用殘差學習來提高修復效果)

Mixture of PatchGAN and G-GAN discriminators (PGGAN)

被提出,以鼓勵輸出完成的影象應該具有全域性和區域性真實的外觀。(與GLCIC的意圖相同,GLCIC使用兩個鑑別器,一個全域性和一個區域性)

貢獻

PatchGAN和G-GAN discriminator (PGGAN)的組合

其中早期的卷積層是共享的。實驗結果表明,該方法可以進一步增強生成畫素的區域性紋理細節。

生成網路中使用了

膨脹和插值卷積

。透過使用

膨脹殘差塊

,改善了修補效果。

方法

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖2,提出的ResNet結構的生成網路和PGGAN判別器

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖3,提出的GLCIC的結構

圖2和3分別給出本文和GLCIC所提出的網路結構。很明顯,他們是相似的。兩個主要區別是 i) 在生成器中使用了膨脹殘差塊,ii) 修改了GLCIC中的全域性和區域性判別器。

在GLCIC中,全域性判別器以整個影象作為輸入,而區域性識別器以填充區域周圍的一個子影象作為輸入。將兩個判別器的輸出連線起來,然後返回一個值來顯示輸入是真還是假(

一個對抗損失

)。從這個角度來看,區域性判別器會聚焦在區域性填充的影象patch上,從而增強填充的影象patch的區域性紋理細節。一個主要缺點是

區域性判別器的輸入依賴於缺失區域

,作者在訓練期間假設一個單一的矩形缺失區域。

對於PGGAN判別器,我們幾乎沒有

早期共享卷積層

,如圖2所示。然後,我們有

兩個分支

,一個給出一個輸出值(G-GAN),一個給出一個輸出矩陣(PatchGAN)。請注意1×256是16×16矩陣的reshape形式。如上所述,這也是一種讓判別器在區分完整影象和真實影象時同時關注全域性(整幅影象)和區域性(區域性影象patch)資訊的方法。請注意,在這種情況下,我們有兩個對抗損失,因為我們有兩個分支。

膨脹殘差塊

在之前的文章中,我已經介紹過CNN的膨脹卷積。簡單回憶一下,

膨脹卷積透過跳過連續的空間位置增加感受野,而不新增額外的引數

圖4,殘差塊型別,從上到下依次為:標準殘差塊、擴張卷積在前的殘差塊、擴張卷積在後的剩餘塊

簡單地說,殘差塊可以寫成Y = X + F(X),其中Y是輸出,X是輸入,F是幾個層次的序列。在圖4的基本殘差塊中,F為conv - norm - relu - conv。這意味著我們將X輸入一個卷積層,然後是一個歸一化層,一個ReLU啟用層,最後是另一個卷積層得到F(X)。一個要點是,輸入X是直接新增到輸出Y上的,這就是我們稱之為跳躍連線的原因。由於在這條路徑上沒有任何可訓練的引數,我們可以確保在反向傳播過程中必須有足夠的梯度傳遞到早期的層。因此,我們可以訓練一個非常深度的網路而不會遇到梯度消失的問題。

為什麼要用殘差塊?

你可能想知道使用殘差塊的好處。你們中的一些人可能已經知道答案了。以下是我的看法。讓我們比較一下Y = X + F(X)和Y = F(X),對於Y = X + F(X),我們學習的實際上是F(X) = Y - X, Y和X的差值。這就是所謂的殘差學習,X可以作為殘差學習的參考。另一方面,對於Y = F(X),我們直接學習在沒有參考的情況下將輸入X對映到輸出Y。所以,人們認為殘差學習是比較容易的。更重要的是,很多論文已經證明了殘差學習可以帶來更好的效果!

由於膨脹卷積有助於增加感受野,這對修復任務很重要,作者用膨脹卷積層替換了兩個標準卷積層中的一個,如圖4所示。膨脹殘差塊有兩種型別,i) 以膨脹卷積在前,ii) 膨脹卷積在後。在本文中,根據膨脹殘差塊的數量,膨脹率從1開始每次增加2倍,例如,如果有4膨脹殘差塊,膨脹率為1,2,4,8。

插值卷積

為了解決標準反捲積(即轉置卷積)造成的偽影,作者在這項工作中採用了插值卷積。對於插值卷積,首先使用典型的插值方法,如雙線性和雙三次插值,將輸入調整到所需的大小。然後,應用標準卷積。下面的圖5顯示了轉置卷積和插值卷積的區別。

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖5,使用轉置卷積核插值卷積的視覺化比較

在我看來,這兩種型別的卷積具有相似的效能。有時轉置卷積更好,有時插值插卷積更好。

判別網路

我們討論了本文使用的PGGAN鑑別器。回想一下,這裡的鑑別器有兩個分支,一個分支給出一個值,就像global-GAN (G-GAN)一樣,另一個分支給出256個值,其中每個值表示輸入中區域性區域的真實性。

關注輸入影象中多個區域性區域的真實性,有助於改進完成影象的區域性紋理細節。

目標函式

實際上,本文中使用的損失函式(即目標函式)與我們之前討論過的論文或多或少是相同的。

重構損失

:這種損失是為了保證逐畫素的重構精度。我們通常使用L1或L2(歐幾里得)距離來計算這個損失。本文采用

L1損失

作為它們的重構損耗。

N為訓練批中的影象數量。W、H、C分別是訓練影象的寬度、高度和通道。x和y分別為ground truth和模型給出的完整影象。

對抗損失

:我想你們大多數人現在都熟悉這種典型的對抗損失。

x是ground truth,所以我們希望D(x)返回1,否則返回0。注意,D只是鑑別器的函式形式。

聯合損失

式3為其聯合損失函式。Lambda 1, 2, 3用來平衡每個損失的重要性。g_adv表示全域性分支給出的輸出,而p_adv表示PatchGAN分支給出的輸出。需要注意的是,在他們的實驗中,λ 1,2,3分別設定為0。995,0。0025和0。0025。

實驗結果

在他們的實驗中使用了三個資料集。

i)

Paris StreetView

包含14900張訓練影象和100張測試影象。

ii)

谷歌StreetView

擁有62058張高解析度影象,分為10個部分。第一部分和第10部分用於測試,第9部分用於驗證,其餘部分用於訓練。總共有46200張訓練影象。

iii)

Places

包含超過800萬的訓練影象。該資料集僅用於測試,以顯示其通用性。

為了比較典型殘差塊和膨脹殘差塊的效能,訓練了

PGGAN-Res

PGGAN-DRes

兩個模型。對於PGGAN-Res,使用基本殘差塊和3個子取樣塊。這意味著輸入被向下取樣了2倍3次。對於PGGAN-DRes,使用膨脹殘餘塊和2個子取樣塊。這意味著輸入被下采樣2倍。

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖6,用不同的判別器訓練同一生成器網路的結果。

圖6顯示了用不同判別器訓練同一生成器網路的修復結果。從圖6的最後一列來看,如果只使用G-GAN鑑別器,則會觀察到視窗的區域性紋理細節很差。與G-GAN相比,PatchGAN提供了更好的視窗區域性紋理細節,但視窗的角落看起來與全域性結構不一致。總之,PGGAN可以提供最好的視覺效果。

表1,巴黎街景256x256影象的定量比較

表2,來自巴黎街景資料集中512x512影象的定量比較

表1和2給出了在256×256和512×512兩種解析度下,不同方法在Paris StreetView資料集上的定量比較。需要注意的是,CE是Context Encoder, NPS是Multi-scale Neural Patch Synthesis (MNPS) , GLGAN是global and local Consistent Image Completion (GLCIC)。我們已經在前面的文章中討論了所有這些方法。

從表1和表2可以明顯看出,PGGAN對所有這些措施都有改進。但是,請記住,視覺質量比這些客觀的評價指標更重要。

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖7,用不同的方法對完整影象進行感知比較。

作者對這些方法進行了感知評估,如圖7所示。12名投票者被要求對原始影象的自然程度和各種方法的修復結果進行評分。每個選民從巴黎街景資料集中隨機分配了500張影象。注意CE是在128×128影象上訓練的,因此它在256×256測試影象上的效能很差。其他方法在這種感知評價上也有類似的表現。

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖8,256x256巴黎街景資料集的量化比較

深度影象修復的回顧和改進:使用生成對抗網路基於Patch的影象修復

圖9,512x512巴黎街景資料集的量化比較

圖8和圖9分別顯示了大小為256×256和512×512的影象的修復結果。我建議讀者放大以更好地檢視結果。在我看來,PGGAN-DRes和PGGAN-Res通常會給出更好的區域性紋理細節,例如,圖8中的第4行和圖9中的第3行。

總結

首先,將殘差學習的概念以膨脹殘差塊的形式嵌入生成網路。從他們的實驗結果來看,殘差學習有助於提高修復效能。

其次,將PatchGAN判別的概念與傳統的GAN判別器 (G-GAN)相結合,以鼓勵更好的區域性紋理細節和全域性結構一致性。

要點

和以前一樣,我想在這一節中列出一些有用的要點。如果你看過我之前的文章,你會發現這篇文章相對簡單。

實際上,本文的大部分內容與GLCIC相似。在網路結構中嵌入了兩個新的概念,即殘差塊和PatchGAN判別器,進一步增強了修復結果。

希望你能認識到這種典型的影象修復網路架構。後來的影象修復的論文中提出的網路或多或少都是一樣的。

你還應該注意到重建損失和對抗損失是影象修復任務的兩個基本損失。本文提出的修復論文的方法必須包括L1損失和對抗性損失。

—END—

英文原文:https://towardsdatascience。com/revision-for-deep-image-inpainting-and-review-patch-based-image-inpainting-with-generative-4197d29c5468

喜歡的話,請給我個在看吧

TAG: 影象殘差卷積區域性GAN