當前位置:
首頁 > 知識 > 英偉達教你用深度學習做圖像修復,確定不試一下?

英偉達教你用深度學習做圖像修復,確定不試一下?

本文為雷鋒字幕組編譯的技術博客,原標題 Image Inpainting for Irregular Holes Using Partial Convolutions,作者 NeuroHive 。

翻譯 | 段小傑 塵央 整理 | 吳璇

為了克服先前方法的局限性,英偉達公司的研究利用部分卷積去解決圖像著色問題。部分卷積層由一個掩模更新運算再加一個被掩模和再標準化的卷積運算構成。

深度學習是人工智慧中發展最快的領域之一,被廣泛的應用在很多領域,尤其是實時目標檢測、圖像識別和視頻分類。深度學習通常採用卷積神經網路、深度信念網路、循環神經網路等方式實現。

圖像修補就是深度學習的一個應用。它通過建立一個圖像修補模型,自動填充圖像不規則的空隙內容,這些填補是基於圖像語義上的預測,使其與原有圖像可以完美融合,而不必藉助任何後期操作。圖像修補可以應用在很多場合,例如擦除圖像不需要的內容並填補圖像合理的內容。

圖像修補中使用了許多不同的方法,但是沒有一種方法使用深度學習方法,並且這些方法有一些限制。其中一種方式叫做塊匹配(patchmatch),是在自身圖像中找到與之最匹配的塊來填補圖像。儘管這種方式能夠產生比較光滑的結果,但是受到可用圖像塊數量的限制以及此種方式不能很好地理解圖片的視覺語義。許多方法的另一個局限是聚焦矩形孔洞,這些孔洞常被看做圖像的中心,這些限制導致了矩形空隙的過擬合,最終限制了這些模型的應用。


它是怎樣工作的

為了克服先前方法的局限性,英偉達公司的研究利用部分卷積去解決圖像著色問題。部分卷積層由一個掩模更新運算再加一個被掩模和再標準化的卷積運算構成。最主要的延伸是掩模自更新步驟,它去掉了所有掩模,這樣部分卷積就可以再非掩模值上運算。以下是本文的主要創新點:

1. 用帶有自動掩模更新的部分卷積運算來進行圖像修補,達到目前以來的最好效果。

2. 用部分卷積和掩模自動更新代替卷積運算可以得到目前最具藝術性的圖像修補結果。

3. 證明了部分卷積在建立圖像修補模型時,對不規則孔洞填充的有效性。


部分卷積層

該模型運用多次部分卷積運算和掩模更新步驟來進行圖像修補。部分卷積運算和掩模更新函數共同構成了部分卷積層。

W 作為卷積濾波器的權值,b 作為卷積濾波器相關的偏置,x 是現有卷積窗口的特徵值(像素值),M 是對應的二進位掩模。不同層的部分卷積運算被表示為:

⊙表示元素點乘。可以看到,輸出值只取決於非掩模輸入。縮放因子 1/sum(M) 應用合適的縮放係數去自適應不同的有效輸入。在每個部分卷積運算之後,掩模被更新了。去掩模規則很簡單,如果卷積運算可以使輸出至少反應一個有效輸入值,去掩模就是將那個位置的掩模去掉。這種運算表示為:

並且可以很容易地在任何深度學習框架中作為前進的一部分實現。


網路體系結構

通過擴展現有的標準 PyTorch 來實現部分卷積層。通過定義大小為 C×H×W 的二進位掩碼來簡單實現與其一樣大小的相關圖像或功能,然後使用一個固定的卷積來實現掩碼更新,大小相同的內核作為部分卷積操作,權重相同的設置為 1 和不同則設置為 0。無論孔的大小,512×512 圖像的整個網路推斷在單一 NVIDIA V100 GPU 中需要花費 0.23 秒。

所使用的架構是類似於 UNet 的架構,將所有的卷積層替換為部分的卷積層,並在解碼階段使用最近的鄰居向上採樣。

圖 1:在圖像修復中使用的架構,所有的卷積層都被部分的卷積層取代

ReLU 被用於編碼階段,角度為 0.2 的 LeakyReLU 則被用於所有解碼層之間。編碼器包括 8 個步幅為 2 的部分卷積層。內核大小為 7、5、5、3、3、3、3 和 3。通道大小為 64、128、256、512、512、512、512 和 512。最後部分卷積層的輸入將包含原始輸入圖像、孔和原始掩碼的連接。


損失函數

損失函數的目標是每個像素精度和構成的重建,即預測的孔值如何平滑地過渡到周圍的環境中。給出輸入圖像的孔射程和掩碼 M,網路預測的 Iout 以及基於真實圖像的 Igt,於是將像素損失定義為:

感知損失(感知損失函數測量圖像之間的高層次感知和語義差異。他們利用一個預先訓練好的圖像分類的損耗網路,這意味著這些感知損失函數本身就是深度卷積神經網路)被定義為:

感知損失計算出 Iout 和 Icompand 之間的距離 L1。為了執行自相關,在每個特徵圖譜中引入了類型損失項。

全部損失是上述損失的總合:


結果

利用部分卷積層與一個自動掩模更新機制,實現了最先進的圖像繪製結果。該模型可以很好地處理任何形狀、大小位置或距離圖像邊界的孔。此外,如圖 2 所示,隨著孔尺寸的增加,性能不會發生災難性的惡化。

圖 2:第一行:輸入;下面一行:對應繪製結果

圖 3:基於結果的典型卷積層和基於結果的部分卷積層之間的比較

部分卷積方法的更多結果:

從Python入門-如何成為AI工程師

BAT資深演算法工程師獨家研發課程

最貼近生活與工作的好玩實操項目

班級管理助學搭配專業的助教答疑

學以致用拿offer,學完即推薦就業

新人福利

關注 AI 研習社(okweiwu),回復1領取

【超過 1000G 神經網路 / AI / 大數據資料】

英偉達發布新演算法,可以重建缺失像素

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

TensorFlow 的模型分析工具——TFMA
比 TensorFlow 雲快 46 倍!IBM用Snap ML和Tesla V100 秀肌肉

TAG:AI研習社 |