人人都是畫家:朱儁彥&周博磊等人的GAN畫筆幫你開啟藝術生涯
既然 GAN 可以用來給黑白 ofollow,noindex">線稿上色 、 填充紋理 ,那能不能直接用來畫畫?來自 MIT、港中文、IBM 等機構的 David Bau、朱儁彥、Joshua B. Tenenbaum、周博磊等人在論文 GAN Dissection 上放出的示意工具一時驚豔了眾人:只要滑鼠劃過,GAN 就可以立即在你指定的地方畫出雲彩、草地、門和樹等景物,並直接改變構圖以保持影象的「合理性」。
這個名為 GANpaint 的工具一出,立即引來了眾人嘗試,有人驚呼:「這工具讓我這輩子第一次可以動手『畫出』點東西了!」
網友「畫作」之一:綠色屋頂的房子。
讓我們看看它是怎麼操作的:
-
工具連結:http://gandissect.res.ibm.com/ganpaint.html?project=churchoutdoor&layer=layer4
生成對抗網路(GAN)近期在很多現實世界任務中取得了巨大成就,很多 GAN 的變體都在樣本質量和訓練穩定性上獲得了很大的進展。然而,對 GAN 的視覺化和理解仍然是缺乏探究的課題。GAN 網路是如何表徵視覺世界的?導致 GAN 輸出結果失真的原因是什麼?架構選擇如何影響 GAN 學習?回答這些問題能夠幫助我們發展新的理論洞察和更好的模型。
在 MIT CSAIL 主導的這項工作中,研究者展示了在單元、物件和場景級別上視覺化和理解 GAN 的框架。研究者首先通過基於分割的網路剖析方法(network dissection method)識別出一組和物件概念很相關的可解釋單元。然後通過評估人類干預(控制輸出中的物件)的能力來量化可解釋單元的因果效應。最後,通過將發現的物件概念嵌入到新影象中來測試這些單元和周圍事物之間的語境關係。研究者展示了通過該框架實現的多種實際應用,從對比不同層、模型和資料集的內部表徵,到通過定位和移除導致失真的單元來改善 GAN,從而實現互動式地控制場景中的物件。
該 GAN 解釋工具已開源,以幫助同行研究者更好地理解他們的 GAN 模型。
-
專案地址:https://github.com/CSAILVision/GANDissect
研究者開發了一個網頁應用展示 GANpaint app,來幫助讀者更好理解其作用。如上圖所示,選中「draw」功能和特定的物件,如 tree,就能在圖中隨意用畫筆塗抹,GAN 會在塗抹區域自動生成樹木。選中「remove」功能和特定的物件,如 grass,GAN 會在塗抹區域自動刪除草地。讀者可以自己嘗試一下,探索更多有趣的現象。
目前小編髮現,刪除用「draw」新增到原始影象的目標是有效的,而想在原始影象上刪除目標也可以。如下圖所示,第一張是原圖,第二張是刪除樹木和草地之後的圖,效果還是可觀的。不過對 door 這個目標的生成和刪除似乎對環境背景的聯絡要求很高,失敗率很高。
如下圖所示,論如何快速綠化環境:
或者宜居一點的:
GAN paint app 的工作原理是直接啟用或者去啟用深度網路中的神經元組,這些神經元被訓練用來生成影象。左邊每個按鈕(如 door、brick 等)都對應 20 個神經元。該 app 表明,通過學習繪畫,GAN 網路還能學習樹、門還有屋頂等物件。通過直接切換神經元,你可以觀察該網路建模的視覺世界的結構。
-
GANpaint 試用地址:http://gandissect.res.ibm.com/ganpaint.html?project=churchoutdoor&layer=layer4
為什麼用 GAN 繪畫很有趣?
計算機可以用兩種方式繪畫:
1. 利用它知道的物件來構圖。
2. 記住一幅影象,然後重現。
近年來,創新的生成對抗網路(GANs, I. Goodfellow, et al, 2014)已經在生成逼真影象方面顯示出了超凡的能力。然而,尚不清楚這些網路是學習構圖,還是僅僅通過記憶畫素圖案來複現影象。
本文的 GAN Paint demo 和 GAN Dissection 方法證明 GAN 網路瞭解構圖的一些知識。
Unit 365 在 Progressive GAN (T. Karras, et al, 2018) 生成的教堂圖上畫樹。
Unit 43 畫圓屋頂。
Unit 14 畫草地。
Unit 276 畫塔。
論文:GAN Dissection: Visualizing and UnderstandingGenerative Adversarial Networks
論文地址:https://arxiv.org/pdf/1811.10597.pdf
圖 1:概覽:(a) Progressive GAN (Karras et al., 2018) 生成的若干室外教堂逼真影象。(b) 給定一個預訓練的 GAN 模型(如 Progressive GAN),首先識別一組可解釋單元,其特徵圖與不同影象中的物件類別區域高度相關。例如,layer4 中的一個單元可以定位視覺外觀不同的樹區域。(c) 通過強制啟用為零來消融這些單元,量化消融的平均偶然效果。在這裡,樹被成功地從教堂影象中移除掉。(d) 可以把這些樹單元插入到其它位置。同一組單元可以合成外觀與周圍環境相容的不同的樹。此外,該方法可以通過識別引起視覺假象的單元來診斷並改進 GAN。(e) 移除出現在 (f) 中的視覺假象,並通過消融「artifact」單元顯著改善結果。(g) 詳情請看 demo 視訊。
GAN Dissection 框架
論文介紹了一個視覺化和理解生成網路學得結構的框架。GAN dissection 可以回答以下問題:
1. 該網路是否學習匹配有意義概念的內部神經元?
2. 這些神經元組僅與物件相關,還是 GAN 使用這些神經元對物件進行推理?
3. 因果神經元(causal neuron)可以用來改善 GAN 的輸出結果嗎?
GAN dissection 使用分割網路 (T. Xiao, et al, 2018) 和剖析(dissection)方法 (D. Bau, et al, 2017),尋找匹配有意義物件類別(比如樹)的生成器單個單元。
GAN 學習的神經元依賴它學習繪製的場景的型別:當學習會議室時,會出現商務正裝神經元,當學習廚房時,會出現爐子神經元。
每個神經元控制什麼?
為了驗證神經元組能夠控制物件的繪製,而不只是簡單的相關,研究者干預網路內部,直接啟用和去活化神經元。
一個驚人的發現是同樣的神經元在不同的背景下控制特定的物件類別,即使該物件的最終外觀截然不同。例如,同樣的神經元可以控制「門」的概念,即使大石牆需要一扇朝左的沉重大門,而小木屋需要朝右的簾門。
該網路還能理解何時能夠繪製物件。例如,在建築物的合適位置啟用「門」的神經元就可以新增一扇門。而在天空或樹上執行同樣的動作通常是無效的。該結構可以量化。
上圖:黃色框表示可啟用以新增門的神經元位置。(d) 中繪製大門的方式是突出小門,但是在很多位置 GAN 拒絕繪製門。下圖:GAN Paint 與普通繪圖程式不同的原因。它不會總是按照你的意願去做,它會把物件放在合適的位置。
GAN 犯的錯誤可以除錯和修復嗎?
理解網路的內部概念之所以重要,是因為對 GAN 網路的理解可以幫助改善該網路的行為。
例如,GAN 有時會生成非常不真實的影象,導致這些錯誤的原因之前是未知的。而這項研究發現,這些錯誤可能是由引起視覺假象的特定神經元組導致的。
通過識別和停用這些引起錯誤的神經元,我們可以進一步提高 GAN 輸出結果的質量。如下圖所示,第一張圖展示的都是失真影象,後兩張分別展示了修復的第一個和第二個影象。
大家來找茬
即使研究者稱其目標生成可以很好地結合背景資訊,小編還是挖出了很多 bug。
一半的天空被換成了磚頭
在天空中新增「磚頭」畫出的「海市蜃樓」
飄在空中的樹~
原圖大片區域是乾淨的藍天,然而在藍天畫了樹之後……房子成了廢墟……