一位藝術家眼中的GAN:它給予我更多靈感

來自專欄論智10 人贊了文章

作者:Helena Sarin

編譯:Bing

編者按:本文作者Helena Sarin是一名藝術家,同時也是一位神經網路開發者。在這篇文章中,她講述了自己在藝術創作過程中與生成對抗網路碰撞出的火花。

美國畫家Jackson Pollock曾說:「所有的一切都是建築遊戲,有些人會用筆刷,有人會用鏟子,還有人會選擇一支筆。」

而我自己選擇了神經網路。我是一名藝術家,但同時我也開發了很多商用軟體。但是此前,藝術和編程在我的生活中完全毫無關聯。除了偶爾用計算機作圖進行生成藝術的處理,我所有的作品都是進行模擬,直到我發現了生成對抗網路(GANs)。

自從2014年GANs發明生成之後,機器學習社區就出現了很多有關GAN的技術。在這篇文章中,我將大概講解為什麼GANs是如此優秀的藝術類工具,以及我是怎樣用它創造藝術作品的。

以下是我的一些藝術作品:

藝術家眼中的GAN

所以到底什麼是GAN?為什麼它對藝術家很有吸引力?

我們可以將藝術的創作過程看作一種遊戲。遊戲動作發生在藝術工作室中,其中有兩位玩家:評論者和藝術初學者。初學者的目標是創作大師級別的畫作,但不能抄襲。而評論者的目標是判斷他看到的畫作是大師的作品還是初學者的作品。一次次判斷之後,初學者和評論者會進行比賽,初學者會越來越熟練地進行模仿,風格越來越像大師。而評論者會更容易辨別出哪幅畫作來自初學者,二者互相督促,水平越來越高。

GAN就是模擬這一過程的神經網路,評論者的角色由判別網路D扮演,藝術初學者的角色由生成網路G扮演。一次次「遊戲」過後,生成網路模擬的大師畫作風格會更逼真:

那麼你的角色是什麼呢?輕微調整遊戲規則(網路的超參數),成為了美術館館長(curator)。作為館長你要從GAN的輸出中進行挑選,因為GAN會生成很多不同結構、顏色的組合,與其訓練的樣本圖片有各種不同的差異。所以作為館長也不容易,有時你會覺得很多圖像都很有趣,想把它們都留下來。

用上述GAN進行創作是很有趣的,可以探索各種新模型和數據集。和其他數字化工具不同,GAN總能給人驚喜,它可以創造出比濾鏡或普通的風格遷移更特別的效果。

CycleGAN

應用於藝術生成的深度學習技術種類很多,常見的有以下幾種:

  • GAN/DCGAN,也就是上文描述的經典生成對抗網路:

  • 神經網路遷移,將一張圖像的風格遷移到另一張圖像中:

  • 成對圖像轉換技術,例如Pix2Pix。這種技術需要含有源圖像和目標圖像的數據集進行訓練:

  • 非成對的圖像轉換技術則不用對應數據集(例如Cycle GAN):

計算機創作的很多畫作都是由以上技術生成的,但是為什麼最終我只選擇了CycleGAN呢?簡而言之,CycleGAN訓練出來的網路可以具有其中一個數據集的形式(輸入域)和另一個數據集的結構(目標域)。這一點非常重要。計算機視覺專家Alyosha Efros表示,我們「仍然非常注重結構」。

我第一次用CycleGAN完成一個項目後,覺得它在模擬結構上太強大了,所以想將其用在生成藝術上。CycleGAN能讓你處理高解析度、小尺寸的圖像數據集,並且訓練模型的速度非常快!

我第一項任務是將食物和飲料的照片轉換成靜物素描風格。每個數據集含有300到500張高解析度圖像。那一整個月,我幾乎每天做各種實驗,想把輸入數據尺寸變小。然後我花了好幾個小時對輸出圖像進行篩選,最終效果如圖:

帶有鮮花的圖片轉換成了類似零食的東西,飲料的照片也變得非常有趣。我把最終結果給我的藝術導師看,她說:「我不懂計算機,但是你這個很有前景啊!加油幹!」

接著我就繼續實驗,隨著我對自己的框架越來越熟悉,在實驗中我加入了不同數據集:

實驗建議

用了幾個月CycleGAN,我學到了以下幾個小技巧:

  • 正如CycleGAN最初的論文中說的:「在訓練數據上轉換比在測試數據上更吸引人。」所以在很多情況下,我用訓練數據的子集進行推理,我的目標並不是泛化,而是創造吸引人的藝術。
  • 通常,我在較大的數據集上開始對模型訓練,然後在較小的子集上進行微調。這裡就是一個例子:這些圖片是在一個風景模型上生成的,之後再日本詩集封面的模型上微調、

  • 在模型訓練的時候有必要查看儀錶板。CycleGAN的偏好設置中可以設置展示頻率,我設置的比較高。這一過程對我來說就像在冥想——盯著visdom的UI界面,隨著損失函數的變化而呼氣吐氣。

  • 隨著訓練,結果變得越來越有趣,增加了檢查點保存的頻率。
  • 將實驗中所有的參數保存下來,之後還能重新創造。
  • 在推理過程中,目標圖像不會影響生成圖像的樣子。這並不意味著你不需要關心目標集中有什麼圖像。記住,你有兩個生成器,不要忽略第二個。
  • 默認情況下,CycleGAN使用的實例規範化和batch尺寸都為1。但是一旦你學習了規則,就可以不受這個值的限制。如果你使用了批規範化,並且batch size大於1怎麼辦?
  • 另一項值得運用的技術是CycleGAN chaining:訓練一個模型,然後用其結果去訓練另一個。

下方的圖像是上述兩條tips的結果展示。我用了鮮花照片數據集和人像素描數據集。第一個模型用批規範化在兩數據集之間進行灰度遷移。第二個模型對第一個模型的結果上了色。

  • 要注意額外的結構,尤其當在補丁上訓練時。我最初在食物和靜物素描之間進行轉換的模型,大多數情況下都將靜物變成了粥,所以一定要花點時間處理訓練數據集。

另一方面,我的水彩老師曾經總說:「其他的事情交給媒介工具做就好。」素描只提供簡單的基礎架構,之後的工作就交給網路了,我只是對#brushGAN工具包進行調整。(該工具包含有保存過的訓練模型和用作輸入的數據集等等)

工具使用

目前為止,我們已經談到了收集數據和開始利用數據。現在我們要談談工具的使用。

無論你選擇哪種神經網路創造生成性藝術作品,深度學習的設置都差不多。我最初的設置是在AWS上進行的,雖然它在計算方面比較便宜,但是存儲問題比較令人頭疼。現在我有了自己的伺服器:一個GTX 1080 GPU、一個275GB的SSD和兩個1TB的HDD。

接著是超參數,其中最重要的就是圖像尺寸。CycleGAN通過設置可以對圖像進行切割,但是可能達到的最大解析度取決於你的硬體。在我的GTX 1080上,最大解析度可以達到400×400。

數據

不要忘記數據集!訓練深度學習網路,一定需要大量數據。很多AI藝術家用網路抓取的方法獲取數據,但是我決定用自己的數據集,比如自己的照片或繪畫作品。這樣做有幾種好處:

  • 這樣你的藝術作品會有一致性。
  • 無需擔心版權問題。
  • 不用過多處理就能得到高解析度圖像。
  • 只需一臺相機就能輕鬆創建有豐富色彩和結構的數據集。

另外,我使用的數據機構和處理過程如下:

  • 通用預處理:從手機上下載並調整照片
  • 數據集構成:根據圖片中的物體、內容、顏色和結構對它們進行區分
  • 三種存儲類型:
  • 遠程存儲(例如Flickr這種雲服務);
  • HDD:對未使用的數據集和權重進行長期存儲;
  • SSD:對數據集和權重進行中短期存儲。
  • 針對GAN的批處理:我使用的是Jupyter notebooks,可以進行圖像切割、canny邊緣檢測、圖像分類等等。

結語

目前,CycleGAN已經成為我藝術創作中的重要部分,即使選擇新的GAN類型進行實驗,CycleGAN也是生成圖像的重要工具。下面是我用CycleGAN提高SNGAN輸出效果的結果:

關於安裝CycleGAN,我是用的是這一教程:github.com/junyanz/pytorch-CycleGAN-and-pix2pix,它非常簡潔。

對我來說,這項實驗最棒的部分是它們讓我的視覺視野更開闊了,能欣賞到更多色彩和結構,給予我更多靈感。

推薦閱讀:

相關文章