圖像修復技術簡介

本文來自OPPO互聯網技術團隊,轉載請註名做者。同時歡迎關注咱們的公衆號:OPPO_tech,與你分享OPPO前沿互聯網技術及活動。算法

圖像修復又稱爲圖像補繪&圖像填充,指的是——重建圖像中丟失或損壞部分的過程,是介於圖像編輯和圖像生成之間的一種技術。網絡

  • 圖像補繪:Image Inpainting
  • 圖像填充:Region Filling

具體來講:圖像修復經過替換&填充圖像中指定區域的紋理/像素,使其與周圍紋理/像素融爲一體,達到天然和諧的修復效果。架構

圖像修復技術有許多目標和應用,如:函數

  1. 修復及填充老照片中的裂縫、劃痕和瑕疵區域;
  2. 消除照片上的日期、水印;
  3. 移除不須要的圖像內容,並用合理的圖像內容填補移除後的空缺。

1. 方法

圖像修復方法按技術發展脈絡可主要分爲三大類:學習

  1. 逐像素填充;
  2. 逐區塊填充;
  3. 基於深度學習的填充。

1.1 逐像素填充

該類修復方法的表明性算法爲基於Fast Marching Method的補繪算法,由Alexandru Telea於2004發表的論文
《An Image Inpainting Technique Based on the Fast Marching Method》中提出。編碼

其基本思想爲:從須要進行補繪區域的邊界開始,由邊界到中心逐漸填充待補繪區域中的全部像素,待填充像素由其鄰域中全部已知像素的加權和獲得。spa

其中權重的選擇很重要,對於靠近待填充點、靠近邊界法線及位於邊界輪廓上的那些像素給予較大的權重。code

當一個像素被填充後,算法使用fast marching method找到下一個最鄰近像素並對其進行填充。FMM是種啓發式的搜索算法,確保首先修復已知像素周圍的像素。blog

該類方法的特色是運算速度快,適合小區域修復,對複雜背景及大區域缺失修復存在模糊及填充紋理不天然的問題。圖片

1.2逐區塊填充

該類方法每次填充待補繪區域的一個patch,其核心思想就是利用圖像自己的冗餘性(redundancy),用圖像已知部分的信息來補全未知部分。

表明性論文是《Region Filling and Object Removal by Exemplar-Based Image Inpainting》。

其流程由計算優先級,搜索及複製三個部分組成,與逐像素填充的步驟相似。不過這裏是以patch爲單位進行處理的。

1.2.1 計算優先級

優先級決定了移除順序,保證圖像中的線性結構傳播,目標邊界連通。

具體操做爲:對待補全區域邊界的像素依次計算補繪順序的優先度(priority)。

這個優先度主要考慮兩個方面的因素:

  1. 周圍像素可信度高的位置要優先補;
  2. 位於圖像梯度變化劇烈的位置要優先補。

綜合兩者獲得優先度以後,挑選優先度最高的像素來補。

1.2.2 搜索

根據紋理類似度在已知區域中爲待填充patch在找到最佳匹配塊:對於上一步找到的待補全像素,考慮它周圍的一個小patch(好比3*3)。在圖像已知部分搜索全部的patch,找到最類似的patch。

1.2.3 複製

將最佳匹配塊複製到對應的目標區域位置,並更新目標區域的邊界與置信度值。

下圖爲該流程示意圖:

其效果以下所示:

該類方法相對逐像素的修復方法,能修復更大範圍的區域,填充效果也更加天然一些。但因需在整副圖像上搜索類似的patch,計算複雜度較高。

1.3基於深度學習的填充

圖像補繪能夠當作一種特殊的圖像生成問題,其生成的是圖像的局部(待填充區域),利用的是圖像已知部分的紋理。

得益於GAN在圖像生成領域的快速發展與優異表現,基本上基於深度學習的圖像修復技術都是用GAN來作的,下面介紹幾篇典型的論文。

CVPR 2016的Context-Encoders[1]是使用DL作inpainting的開山之做。主要思路是結合Encoder-Decoder 結構和GAN模型。

Encoder-Decoder 階段用於學習圖像特徵和生成圖像待修補區域對應的預測圖;

GAN部分用於判斷預測圖是模型生成的仍是來自真實的GroundTruth。當生成的預測圖與GroundTruth在圖像內容上達到一致,而且GAN的判別器沒法區分時,就認爲網絡模型參數達到了最優狀態。

網絡訓練的過程當中損失函數都由兩部分組成:

  1. Encoder-decoder 部分的圖像內容約束(Reconstruction Loss);
  2. GAN部分的對抗損失(Adversarial Loss)。

Context Encoders 採用最簡單的總體內容約束,也就是預測圖與原圖的L2 距離。

如下表格顯示了該方法相較於以前方法的優越性:

在Context-Encoders論文的基礎上,後續又出現了大批的基於DL來作圖像修復的論文。好比:

  1. CVPR 2017《High-resolution image inpainting using multi-scale neural patch synthesis》[2]:結合了風格遷移的思路;
  2. ECCV 2018《Image Inpainting for Irregular Holes Using Partial Convolutions》[3]:引入了局部卷積,可以修復任意非中心、不規則的區域。
  3. ICCV 2019《Coherent Semantic Attention for Image Inpainting》[4]提出了一個全新的Attention模塊,該模塊不只有效的利用了上下文信息,同時可以捕捉到生成patch之間的相關性。論文同時提出了一個新的損失函數配合Attention模塊的工做,最後利用一個新的特徵感知辨別器對細節效果進行增強。下圖爲該模型的架構圖:

下面分別介紹這篇論文中使用到的三個重要模塊:

連貫性語義注意力機制(Coherent semantic attention)

該模塊分紅兩個部分——第一部分稱爲搜索階段,第二部分稱爲生成階段。

其中藍色區域爲待填充區域,灰色爲上下文區域,須要針對藍色區域中每個點找到最相關的上下文區域而且替換進來,這樣全部的馬賽克區域就都被上下文區域填滿,而後進行第二步生成階段。生成階段採用光標掃描的方式從上至下從左至右進行生成,詳細的生成步驟可參考論文。

Consistency loss

要保證編碼器和解碼器對應層須要語義一致性,而且要讓Coherent semantic attention層可以更好的工做,文章利用VGG提取原圖的特徵空間,並將這個特徵空間做爲CSA(Coherent semantic attention)層和其對應的解碼器層的標籤並計算L2距離,這樣就可以保證編碼器和解碼器對應層須要語義一致性而且提高CSA的效果。

Feature patch discriminator

使用VGG提取圖片的特徵空間,並在這個特徵空間上利用patch discriminator進行對抗損失計算,這樣可以更加好的幫助生成器理解圖像信息,同時穩定辨別器訓練。

如下爲該論文的效果圖(第4列爲論文提出的方法,第5列爲GroundTruth):

2. 總結

傳統的圖像修復方法,通常來講都使用圖像剩餘部分的統計信息來填補空缺,但這種方法受限於可用的圖像統計信息,且不具有視覺語義學的概念,所以修復效果不夠天然,其優勢是速度快。

而使用深度學習技術的方法結合圖像生成模型GAN,有更好的修復效果,但較爲耗時,可結合網絡模型壓縮技術進行提速。具體使用場景中可根據實際須要選擇相應的方法進行使用。

參考文獻

[1] Pathak D, Krahenbuhl P, Donahue J, et al. Context encoders: Feature learning by inpainting[C]//Proceedings of the IEEE conference

[2] Yang C, Lu X, Lin Z, et al. High-resolution image inpainting using multi-scale neural patch synthesis[C]//Proceedings of the IEEE Conference

[3] Liu G, Reda F A, Shih K J, et al. Image inpainting for irregular holes using partial convolutions[C]//Proceedings of the European Conference

[4] Liu H, Jiang B, Xiao Y, et al. Coherent Semantic Attention for Image Inpainting[J]. arXiv preprint arXiv:1905.12384, 2019.

[5]知乎-結合深度學習的圖像修復:https://www.zhihu.com/questio...

[6]圖像修復論文筆記- Context Encoders: Feature Learning by Inpainting:https://www.jianshu.com/p/e1b...

[7] 知乎專欄-圖像修復:https://zhuanlan.zhihu.com/p/...

相關文章
相關標籤/搜索