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

2021-09-11 09:32:22 字數 3926 閱讀 7798

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

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

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

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

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

圖 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 重構的影象。

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

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

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

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

重要的是,僅執行推斷過程修復影象並不需要 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 格式,並儲存到 de******_input 資料夾中。

a. 使用二進位制編譯檔案(windows)

雙擊 de****** 檔案來修復影象。

b. 從頭開始執行

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

$ python de******.py

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

2. 修復馬賽克空缺部分

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

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

a. 使用 binary

雙擊 de******_mosaic 檔案修復影象。

b. 從頭開始執行

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

$ python de******.py --is_mosaic=true

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

疑難解答

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

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

**:image inpainting for irregular holes using partial convolutions

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

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

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

這是乙個開始

準備正式的應對職業之路,是從劉未鵬的部落格開始 在此之前,從事的工作比較漫不經心,因為不熱愛的緣故,也只是工作而已 經朋友推薦,瀏覽了劉的部落格,一下仿似給自己找到了乙個出口。長期以來自己不成條理,漫無目標的思考,找到了乙個可以依附的體系 在新下來的日子裡,我認真的做事,努力學習周邊,在漂亮完成兩個...

這是乙個Scanner

最近,老師讓寫乙個ftp掃瞄器並匿名登陸。要求掃瞄到所有的檔案。預備知識 ftplib的使用 python異常處理知識 字串處理技巧 牽扯到拼接路徑 遞迴程式設計技巧 需要用遞迴來遍歷所有檔案 思路通過思考問題,我設計的遞迴引數是將父目錄當作引數。這個是肯定存在的。所以不需要進行異常處理 有以下幾種...