深度圖像修復的一個突破
今天,我們將深入探討深度圖像修復的一個突破,上下文注意力。通過使用上下文注意力,我們可以有效地從遙遠的空間位置借用信息來重建局部缺失的像素。這個想法實際上或多或少和上一篇的複製 - 粘貼是一樣的。讓我們看看是如何做到的。
回顧
在之前的文章中,我介紹了使用 shift 連接層將未缺失區域生成的特徵作爲參考來恢復缺失區域,可以讓我們得到更好的修復結果。在這裏,我們假設生成的特徵是對 ground truth 的合理估計,並根據已知區域的特徵與缺失區域內生成的特徵之間的相似性來確定合適的參考。
動機
在圖像修復任務中,CNN 的結構不能有效地模擬缺失區域與遙遠空間位置給出的信息之間的長距離相關性。熟悉 CNN 的人應該知道,在卷積層,核的大小和膨脹率控制着感受野,網絡需要越深入,才能看到整個輸入圖像。這意味着,如果我們想捕捉圖像的上下文,我們必須依賴於更深的層次,但我們丟失了空間信息,因爲更深層次的特徵的空間大小總是更小。因此,我們必須找到一種方法,在不用太加深網絡的情況下,從遙遠的空間位置借用信息 (即理解圖像的上下文)。
如果你還記得什麼是膨脹卷積,你就會知道膨脹卷積是一種在早期的層中增加感受野而不添加額外參數的方法。然而,膨脹卷積有其侷限性。它跳過連續的空間位置,以擴大感受野。請注意,跳過的連續空間位置對於填充缺失的區域也很關鍵。
介紹
這項工作與我們以前討論過的網絡架構、損失函數和相關技術類似。對於該體系結構,所提出的框架由兩個生成器網絡和兩個判別器網絡組成。這兩個生成器在全卷積網絡的基礎上使用了膨脹卷積。一個生成器用於粗重建,另一個用於細化。這被稱爲標準的從粗到細的網絡結構。這兩個判別器同時在全局和局部看完整的圖像。全局判別器以整個圖像作爲輸入,而局部判別器以填充區域作爲輸入。
對於損失函數,簡單地說,他們還使用了對抗損失 (GAN 損失) 和 L1 損失(爲了像素級重建精度)。對於 L1 損失,他們使用一個 spatially discounted L1 loss,其中爲每個像素差分配一個權值,權值基於像素到其最近的已知像素的距離。對於 GAN 損失,他們使用 WGAN-GP 損失,而不是我們所介紹的標準的對抗損失。他們聲稱,這種 WGAN 對抗性損失也是基於 L1 距離度量,因此網絡更容易訓練,訓練過程也更穩定。
在這篇文章中,我將專注於提出的上下文注意力機制。因此,我簡要地介紹了從粗到細的網絡架構、WGAN 對抗損失和上面的加權 L1 損失。
方案
本文提出了上下文注意力機制,有效地從遙遠的空間位置借用上下文信息來重建缺失的像素。將上下文注意力應用到二次精細化網絡中。第一個粗重建網絡負責對缺失區域進行粗估計。與前面一樣,使用全局和局部判別器來鼓勵生成的像素獲得更好的局部紋理細節。
貢獻
圖 1,該模型在自然場景、人臉和紋理圖像上的修復效果實例。
本文最重要的思想是上下文注意力,它允許我們利用來自遙遠空間位置的信息來重建局部缺失的像素。其次,使用對抗性損失和加權 L1 損失提高了訓練的穩定性。此外,本文提出的修復框架在自然場景、人臉、紋理等各種數據集上都獲得了高質量的修復結果,如圖 1 所示。
方法
圖 2,所提出修復方法的網絡架構
圖 2 顯示了所提出修復框架的網絡架構,如前所述,它由兩個生成器和兩個鑑別器組成。
上下文注意力
以下是這篇文章的主要關注點。讓我們來看看上下文注意力層是如何設計來借用遙遠空間位置已知區域給出的特徵信息來生成缺失區域內的特徵的。
圖 3,上下文注意力層的圖形說明
圖 3 顯示了上下文注意層的圖形說明。運算是可微且全卷積的。
圖 4,更多關於注意力注意力層的具體例子
圖 4 是上下文注意層的一個更詳細的示例。如圖 3 所示,前景是指在缺失區域內生成的特徵,背景是指從已知區域中提取的特徵。與複製粘貼方法類似,我們首先要對缺失區域內生成的特徵與缺失區域外的特徵進行匹配。
以圖 4 爲例,生成的缺失區域內的特徵大小爲 64×64×64,假設缺失區域外的特徵分爲 128 個小特徵 patch,大小爲 64×3×3。注意,本例中特徵的通道大小是 64。然後,我們將 128 個小的 feature patch 與缺失區域內生成的 feature 進行卷積,得到大小爲 128×64×64 的 feature map。在本文中,該操作描述爲:
其中 {fx,y} 爲前景 patches 的特徵, {bx'y'}爲背景 patches 的特徵。sx,y,x',y'是缺失區域特徵和已知區域特徵之間的相似性。實際上,這是一個標準的餘弦相似度計算過程。
當我們沿着通道維數看時,128 個元素代表了所有已知 patches 和缺失區域內特定位置之間的相似性。這反映了 128 個已知 patches 對該位置的貢獻。然後,我們沿着通道維度對特徵映射執行 Softmax 歸一化,如圖 4 中的藍色區域所示。在 Softmax 歸一化後,沿通道尺寸的每個位置之和應爲 1。
與上一篇文章中提到的 Shift-Net 相比,你可以看到,這一次我們給每個已知特徵的 patch 分配了權重,來表示重建的時候每個特徵位置對於缺失區域的重要性(軟分配),而不是對於缺失區域的每個位置找一個最相似的(硬分配)。這也是爲什麼提出的上下文注意力是可微的。
最後,以注意力特徵圖爲輸入特徵,以已知的 patches 爲核,通過反捲積的方法重建缺失區域內生成的特徵。
注意力傳播
注意力傳播可以看作是注意特徵圖的微調。這裏的關鍵思想是,鄰近的像素通常有更接近的像素值。這意味着他們會考慮周圍環境的注意力值來調整每個注意力分數。
例如,如果我們考慮左鄰居和右鄰居的注意力值,我們可以使用上面列出的公式更新當前的注意力值。注意,k 控制要考慮的鄰居的數量。
作者聲稱,這可以進一步提高修復結果,這也可以通過與單位矩陣卷積作爲核來實現。
關於注意力機制的另一點是,採用了兩種技術來控制提取的已知特徵塊的數量。
i) 以較大的步長提取已知的特徵 patch,以減少 kernel 數量。
ii) 操作前先對特徵圖大小進行向下採樣,獲取注意力圖後再進行上採樣。
網絡中的注意力
圖 5,在第二個細化網絡中嵌入上下文注意力層的圖解
圖 5 顯示了作者如何將建議的上下文注意層整合到第二個細化網絡中。你可以看到,又引入了一個分支來應用上下文注意力,然後將兩個分支連接起來以獲得最終的修復結果。注意力圖的顏色編碼是注意力圖的可視化方法。例如,白色意味着像素集中在自己身上,粉色是左下角區域,綠色是右上角區域,等等。你可以看到,這個例子有一個充滿粉紅色的注意力圖。這意味着填充區域從左下角區域借用了很多信息。
實驗
作者首先比較了我們之前介紹的先前最先進的技術。
圖 6,比較提出的基線模型和 GLCIC,從左到右,輸入圖像,GLCIC 結果,基線結果
圖 6 顯示了使用建議的基線模型和以前最先進的 GLCIC[2] 進行修復的結果。提出的基線模型如圖 2 所示,上下文注意力分支。很明顯,基線模型在局部紋理細節方面優於 GLCIC 模型。請放大看清楚些。
圖 7,對比基線和完整模型的修復結果。從左到右,ground truth,輸入圖像,基線結果,全模型結果,全模型注意圖
圖 7 顯示了在 Places2 數據集上使用基線模型和完整模型 (帶有上下文注意) 的定性結果。可見,完整模型具有較好的局部紋理細節,提供了較好的修復效果。這反映了上下文注意力層可以有效地從遙遠的空間位置借用信息來幫助重建缺失的像素。請放大以便更好地觀看,特別是注意力圖。
表 1,不同方法在 Places2 數據集上的定量比較
表 1 列出了一些客觀的評價指標,供參考。如前所述,這些指標不能完全反映修復結果的質量,因爲有許多可能的解決方案來填補缺失的區域。你可以看到,建議的完整模型提供最好的 L1, L2 損耗和 PSNR。對於電視丟失,PatchMatch 提供更低的電視丟失,因爲它直接複製原始圖像 patch 來填補漏洞。
供參考的全模型參數爲 2.9M。對於大小爲 512×512 的圖像,GPU 上每張圖像需要 0.2 秒,CPU 上每張圖像需要 1.5 秒。
消融研究
注意力機制並不是一個新概念,文獻中有幾個注意力模塊。作者們用不同的注意力模塊做了實驗。
圖 8,通過使用不同的注意力模塊進行修復。從左到右:輸入,使用空間變換網絡的結果,使用外觀流的結果,以及使用提出的上下文注意力的結果
比較了文獻中兩個著名的注意力模塊,即空間變換網絡和外觀流。簡單來說,對於外觀流,使用卷積層代替上下文注意力層,直接預測二維像素偏移量作爲注意力。這意味着我們添加一個卷積層來預測已知像素到缺失像素的移動。在圖 8 中,你可以看到使用外觀流 (中間) 爲不同的測試圖像提供類似的注意力圖的結果。這就意味着注意力圖對於給予我們想要的 “注意力” 是沒有用的。你也可以觀察到空間變換網絡 (左) 不能爲圖像修復任務提供有意義的注意力圖。一個可能的原因是空間變換網絡預測全局仿射變換的參數,這並不足以幫助填補缺失的區域,也需要局部信息。這裏我沒有深入講解不同的注意力模塊。
圖像修復中 GAN 損失的選擇。作者實驗了不同的 GAN 損失,如 WGAN 損失,典型的對抗性損失,和最小平方 GAN。他們通過經驗發現 WGAN 損失提供了最好的修復效果。
重要的重建損失。在不使用 L1 損失的情況下訓練了細化網絡。他們發現 L1 損失對於確保像素級重建精度是必要的,L1 損失也會使修復結果變得模糊。因此,L1 損失對於保證完整圖像更好的內容結構至關重要。
感知損失,風格損失,TV 損失。我們將很快說到感知損失和風格損失。一個簡單的結論是,這三種損失並沒有給修復效果帶來明顯的改善。因此,他們的模型只使用加權 L1 損失和 WGAN 損失進行訓練。
總結
顯然,本文的核心思想是上下文注意力機制。上下文注意力層嵌入到第二個細化網絡中。注意,第一個粗重建網絡的作用是對缺失區域進行粗略估計。這種估計用於上下文注意力層。通過匹配缺失區域內生成的特徵和缺失區域外生成的特徵,我們可以知道缺失區域外所有特徵對缺失區域內每個位置的貢獻。注意,上下文注意力層是可微的和完全卷積的。
要點
你可能會發現,我們正越來越深入到深度圖像修復領域。我在上一篇文章中介紹了 Shift 連接層,它以硬分配的形式在 CNN 中嵌入了複製 - 粘貼的概念。本文以軟分配的形式構造了一個上下文注意力層,該層是可微的,並且可以端到端學習,無需修改梯度的計算。
希望大家能夠掌握本文提出的上下文注意力層的核心思想,特別是圖 3 和圖 4 所示的上下文注意力層公式。
英文原文:https://towardsdatascience.com/a-breakthrough-in-deep-image-inpainting-review-generative-image-inpainting-with-contextual-1099c195f3f0
本文經授權轉自微信公衆號 “AI 公園”。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/q9b39f2B4RM_NTAUJu5whg