深度學習之圖像修復

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

深度學習之圖像修復

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

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

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

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

CNN網絡結構

深度學習之圖像修復

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

內容生成網絡需要使用自己的數據進行訓練,而紋理生成網絡則使用已經訓練好的VGG Net。這樣,生成圖像可以分為如下幾個步驟:

定義缺失了某個部分的圖像為x0

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

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

內容生成網絡

深度學習之圖像修復

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

深度學習之圖像修復

深度學習之圖像修復

深度學習之圖像修復

在該生成網絡中,為了是訓練穩定,做了兩個改變:

  • 將所有的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,而沒有用到整個數據集中的數據。
深度學習之圖像修復


分享到:


相關文章: