心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

機器之心發表於2018-10-30

選自Github,機器之心編譯,參與:思源、路雪。

影象修復在應用上非常吸引人,通常設計師需要使用 Photoshop 根據影象周圍修復空缺部分。這一過程非常耗時和細緻,因此很早就有研究嘗試使用機器學習模型自動化這一過程。這篇文章介紹了 DeepCreamPy 專案,它可以自動修復漫畫影象中的空缺部分和馬賽克。該專案主要基於幾個月前 Nvidia 提出使用部分卷積修復影象不規則空缺的研究。

本文將簡要介紹這項研究與 DeepCreamPy 實現專案,讀者可下載專案程式碼或預構建的二進位制檔案,並嘗試修復漫畫影象或馬賽克。這一個專案可以直接使用 CPU 進行推斷,Windows 使用者甚至都不需要安裝環境都可以直接執行預構建的檔案修復影象。

專案地址:github.com/deeppomf/De…

影象修復任務可用於多種應用。比如用於影象編輯:移除不需要的影象內容,用合理的影象內容填補移除後的空缺。之前的深度學習方法都聚焦在影象中心的矩形區域,往往依賴昂貴的後處理。而 DeepCreamPy 專案基於的方法提出一種影象修復的新模型,可在不規則的空缺模式上魯棒地生成有意義的預測(圖 1),預測結果與影象其餘部分完美契合,無需進行額外的後處理或混合操作(blending operation)。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

圖 1:原始影象和使用本研究提出的基於部分卷積的網路進行修復的對應修復結果。

近期不使用深度學習技術的影象修復方法均使用影象剩餘部分的統計資訊來填補空缺。當前最優方法之一 PatchMatch [3] 迭代地搜尋最適合的影象塊來填補空缺。儘管該方法生成的結果通常較為流暢,但它受限於可用的影象統計資訊,且不具備視覺語義學的概念。例如,在圖 2(b)中,PatchMatch 能夠使用來自周圍陰影和牆體的影象快流暢地填補畫作的空缺部分,但是語義感知方法利用的是來自畫作本身的影象塊。

深度神經網路以端到端的方式學習語義優先(semantic prior)和有意義的隱藏表徵,這已經用於近期的影象修復工作。這些網路對影象採用卷積濾波器,用固定值替代缺失的內容。結果,這些方法依賴於初始空缺的值,初始空缺的值通常表現為空缺區域缺乏紋理和明顯的顏色對比或空缺周圍的人工邊緣響應。圖 2(e)和 2(f)展示了使用具備不同空缺值初始化的典型卷積層的 U-Net 架構的例子(兩者的訓練和測試使用同樣的初始化方案)。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

圖 2:不同影象修復方法的效果。

很多近期方法的另一個曲線是隻關注矩形空缺部分,通常位於影象中心。本文介紹的研究發現這些缺陷可能導致對矩形空缺部分的過擬合,最終限制這些模型的應用可用性。Pathak 和 Yang 等人假設一個 128×128 影象的中心處有一個 64 × 64 的正方形空缺部分,而 Iizuka 等人進一步移除了這一中心空缺假設,能夠處理不規則形狀的空缺部分,但是無法在大量具備不規則 mask 的影象([8] 中有 51 個測試影象)上執行定量分析。為了解決實踐中更常見的不規則 mask 問題,DeepCreamPy 專案使用的方法收集了具備不同大小的不規則 mask 的大量影象,並分析了 mask 大小的影響,以及 mask 與影象邊界的關聯。

為了恰當處理不規則 mask,Nvidia 的這項研究提出了部分卷積層(Partial Convolutional Layer),包括 mask 和重新標準化卷積操作以及後續的 mask 更新(mask-update)。mask 和重新標準化卷積操作的概念在 [9] 中指影象分割任務的分割感知卷積(segmentation-aware convolution),但它們不對輸入 mask 進行修改。該研究使用部分卷積,即給出一個二元 mask,卷積結果僅依賴於每一層的非空缺區域。該研究的主要擴充套件是自動 mask 更新步,其移除任意 mask,部分卷積能夠在 unmasked 值上執行。給出足夠多層的連續更新,即使最大的 mask 空缺也能最終被消除,只在特徵圖中留下有效響應(valid response)。部分卷積層最終使得該模型不用理會佔位符空缺值。

DeepCreamPy 影象修復專案

最近 deeppomf 開源了 Image Inpainting for Irregular Holes Using Partial Convolutions 的修復實現,它主要使用深度全卷積網路修復漫畫影象。DeepCreamPy 能將遮擋的漫畫影象重構為可信的畫像,並且與通常的影象修復不一樣,它使用的是不規則的 Mask。

使用者需要事先使用綠色指定被遮住的區域,這一過程可以用簡單的圖畫工具或 Photoshop 等。如下展示了加上綠色 Mask 的「損壞影象」和通過 DeepCreamPy 重構的影象。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

其實以前也開源過很多優秀的影象修復專案,例如 JiahuiYu 等研究者完成的 DeepFillv1 和 DeepFillv2,不過 DeepFillv2 一直沒有放出程式碼來。機器之心也嘗試過 DeepFillv1,不過它的效果在給定的測試影象上非常好,而在我們提供的影象上效果一般。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

圖3:第一行為 deepfillV1 專案展示的效果,第二行為重構效果。

按照 DeepCreamPy 的專案所述,這個 GitHub 專案的重點是可以修復任意尺寸的漫畫影象和任意形狀的 mask,同樣也能修復漫畫中的馬賽克,不過這一部分還是不太穩定。此外,專案作者表示他正在做視覺化介面,說不定過一段時間就能使用視覺化介面試試漫畫影象修復的威力。

目前專案作者已經發布了預構建的二進位制檔案,Windows 系統只需要下載該檔案就可以直接執行。當然其它系統同樣可以根據該專案執行預訓練模型,或者直接重新訓練該模型。

如果讀者使用預訓練模型或者重新訓練,該專案要求我們的計算環境包含以下幾個工具:

  • Python 3.6

  • TensorFlow 1.10

  • Keras 2.2.4

  • Pillow

  • h5py

重要的是,僅執行推斷過程修復影象並不需要 GPU 的支援,而且也已經在 Ubuntu 16.04 和 Windows 64 位系統得到測試。這個專案使用的 TF 1.10 版是在 Python 3.6 中完成編譯的,因此它並不與 Python 2 或 3.7 相容。想要試一試的讀者可以執行以下程式碼安裝專案所需要的庫:

$ pip install -r requirements.txt

DeepCreamPy 使用方法

1. 修復條形空缺

對於你想修復的每個影象,使用影象編輯軟體(如 Photoshop 或 GIMP)將你想修復的區域的顏色塗成綠色 (0,255,0)。強烈推薦使用鉛筆工具,不要用刷子。如果你沒用鉛筆,那麼確保你所使用的工具關閉了抗鋸齒(ANTI-ALIASING)功能。

作者自己使用的是 wand selection 工具(關閉了抗鋸齒功能)來選擇空缺區域。然後稍微擴充套件選中區域,並在選中區域上使用綠色 (0,255,0) 的油漆桶工具。

要在 Photoshop 中擴充套件選中區域,可以執行該操作:Selection > Modify > Expand 或 Contract。要在 GIMP 中擴充套件選中區域,可執行該操作:Select > Grow。將這些影象儲存為 PNG 格式,並儲存到 decensor_input 資料夾中。

A. 使用二進位制編譯檔案(Windows)

雙擊 decensor 檔案來修復影象。

B. 從頭開始執行

執行以下行進行影象修復:

$ python decensor.py

修復後影象將儲存至 decensor_output 資料夾。每張影象的修復需要幾分鐘。

2. 修復馬賽克空缺部分

和修復條形空缺一樣,執行同樣的著色步驟,將著色後影象放入 decensor_input 資料夾。此外,將原始、未著色影象放入 decensor_input_original 資料夾,並確保每個原始影象和著色後版本名稱一樣。

例如,如果原始影象名是 mermaid.jpg,你將其放入 decensor_input_original 資料夾;著色後的影象命名為 mermaid.png,放入 decensor_input 資料夾。

A. 使用 binary

雙擊 decensor_mosaic 檔案修復影象。

B. 從頭開始執行

執行以下行進行影象修復:

$ python decensor.py --is_mosaic=True

修復後影象將儲存至 decensor_output 資料夾。每張影象的修復需要幾分鐘。

疑難解答

如果你的 decensor 輸出如下,則修復區域未能正確著色。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

以下是一些好的和壞的著色影象示例。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

論文:Image Inpainting for Irregular Holes Using Partial Convolutions


心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案

論文連結:arxiv.org/pdf/1804.07…

摘要:基於深度學習的現有影象修復方法利用標準卷積網路修復受損影象,使用以有效畫素以及 mask 區域中的替代值(通常為平均值)為條件的卷積核響應。這種做法通常會導致圖片出現色差和模糊等問題。後處理通常被用於減少此類問題,但價格昂貴且存在失敗的風險。我們提出使用部分卷積網路,其中卷積被掩蔽並重新歸一化為僅以有效畫素為條件。我們還包含了一種機制,可自動為下一層生成更新的 mask 作為前向傳遞的一部分。對於不規則 mask,我們的模型優於其它方法。我們通過與其它方法進行定性、定量對比對我們的方法進行了驗證。

心中無碼:這是一個能自動腦補漫畫空缺部分的AI專案



相關文章