深度學習之圖像修復

圖像修復問題就是還原圖像中缺失的部分。基於圖像中已有信息,去還原圖像中的缺失部分。web

從直觀上看,這個問題可否解決是看狀況的,還原的關鍵在於剩餘信息的使用,剩餘信息中若是存在有缺失部分信息的patch,那麼剩下的問題就是從剩餘信息中判斷缺失部分與哪一部分類似。而這,就是如今比較流行的PatchMatch的基本思想。算法

CNN出現以來,有若干比較重要的進展:網絡

  • 被證實有能力在CNN的高層捕捉到圖像的抽象信息。
  • Perceptual Loss的出現證實了一個訓練好的CNN網絡的feature map能夠很好的做爲圖像生成中的損失函數的輔助工具。
  • GAN能夠利用監督學習來強化生成網絡的效果。其效果的緣由雖然還不具可解釋性,可是能夠理解爲能夠以一種不直接的方式使生成網絡學習到規律。

基於上述三個進展,參考文獻[1]提出了一種基於CNN的圖像復原方法。svg

CNN網絡結構

該算法須要使用兩個網絡,一個是內容生成網絡,另外一個是紋理生成網絡。內容生成網絡直接用於生成圖像,推斷缺失部分可能的內容。紋理生成網絡用於加強內容網絡的產出的紋理,具體則爲將生成的補全圖像和原始完好失圖像輸入進紋理生成網絡,在某一層feature_map上計算損失,記爲Loss NN。函數

內容生成網絡須要使用本身的數據進行訓練,而紋理生成網絡則使用已經訓練好的VGG Net。這樣,生成圖像能夠分爲以下幾個步驟:工具

定義缺失了某個部分的圖像爲x0性能

  • x0輸入進內容生成網絡獲得生成圖片x
  • x做爲最後生成圖像的初始值
  • 保持紋理生成網絡的參數不變,使用Loss NN對x進行梯度降低,獲得最後的結果。

關於內容生成網絡的訓練和Loss NN的定義,下面會一一解釋學習

內容生成網絡

生成網絡結構如上,其損失函數使用了L2損失和對抗損失的組合。所謂的對抗損失是來源於對抗神經網絡..net

在該生成網絡中,爲了是訓練穩定,作了兩個改變:code

  • 將全部的ReLU/leaky-ReLU都替換爲ELU層
  • 使用fully-connected layer替代chnnel-wise的全鏈接網絡。

紋理生成網絡

紋理生成網絡的Loss NN以下:

它分爲三個部分,即Pixel-wise的歐式距離,基於已訓練好紋理網絡的feature layer的perceptual loss,和用於平滑的TV Loss。

α和β都是5e-6

Pixel-wise的歐氏距離以下:

TV Loss以下:

Perceptual Loss的計算比較複雜,這裏利用了PatchMatch的信息,即爲缺失部分找到最近似的Patch,爲了達到這一點,將缺失部分分爲不少個固定大小的patch做爲query,也將已有的部分分爲一樣固定大小的patch,生成dataset PATCHES,在匹配query和PATCHES中最近patch的時候,須要在紋理生成網絡中的某個layer的激活值上計算距離而不是計算像素距離。

可是,尋找最近鄰Patch這個操做彷佛是不可計算導數的,如何破解這一點呢?同MRF+CNN相似,在這裏,先將PATCHES中的各個patch的的feature_map抽取出來,將其組合成爲一個新的卷積層,而後獲得query的feature map後輸入到這個卷積層中,最類似的patch將得到最大的激活值,因此將其再輸入到一個max-pooling層中,獲得這個最大值。這樣,就能夠反向傳播了。

高清圖像上的應用

本算法直接應用到高清圖像上時效果並很差,因此,爲了更好的初始化,使用了Stack迭代算法。即先將高清圖像down-scale到若干級別[1,2,3,…,S],其中S級別爲原圖自己,而後在級別1上使用圖像均值初始化缺失部分,獲得修復後的結果,再用這個結果,初始化下一級別的輸入。以此類推。

效果

上圖從上往下一次爲,有缺失的原圖,PatchMatch算法,Context Decoder算法(GAN+L2)和本算法。

內容生成網絡的做用

起到了內容限制的做用,上圖比較了有內容生成網絡和沒有內容生成網絡的區別,有的能夠在內容上更加符合原圖。

應用

圖像的語義編輯,從左到右依次爲原圖,扣掉某部分的原圖,PatchMatch結果,和本算法結果。

可知,該方法雖然不能夠復原真實的圖像,但卻能夠補全成一張完整的圖像。這樣,當拍照中有不想幹的物體或人進入到攝像頭中時,依然能夠將照片修復成一張完整的照片。

總結

CNN的大發展,圖像愈來愈可以變得語義化了。有了以上的圖像復原的基礎,盡能夠進行發揮本身的想象,譬如:在圖像上加一個東西,可是光照和顏色等缺明顯不搭,能夠用紋理網絡進行修復。

該方法的缺點也是很明顯:

  • 性能和內存問題
  • 只用了圖片內的patch,而沒有用到整個數據集中的數據。

參考文獻

[1]. Yang C, Lu X, Lin Z, et al. High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis[J]. arXiv preprint arXiv:1611.09969, 2016.