當前位置:
首頁 > 知識 > 還在腦補畫面?這款GAN能把故事畫出來

還在腦補畫面?這款GAN能把故事畫出來

選自arXiv

作者:Yitong Li等

機器之心編譯

參與:一鳴、路

當我們閱讀的時候,我們的頭腦可以想像書中發生的事情,似乎文本可以轉換為腦海中栩栩如生的畫面。這種能力似乎是人類的「專利」。現在,機器也可以做到這一點了。來自杜克大學和微軟等機構的研究人員開發了一種新的GAN網路——StoryGAN,它可以根據文本生成對應的故事插圖。

閱讀小說是一件很有趣的事情,但是沒有插圖的故事往往索然無味。特別是兒童書籍,缺乏插圖可能會讓故事變得無聊。

如下是大段的兒童故事文本,即使內容很精彩,讀者也不一定有興趣閱讀下去。如果配以圖片,內容會有趣很多。

近來,一些研究人員就基於以上文本生成了對應的故事圖片!

雖然不是很精緻,但是已經有了故事的大概樣貌。

具體來說,他們是根據如下故事內容生成圖片的:

以下還有更多例子,左邊五張圖為生成結果,右邊五張圖則是實際的插圖。

這種神奇的操作是怎麼來的呢?我們來看這項有趣的研究《StoryGAN: A Sequential Conditional GAN for Story Visualization》。

論文鏈接:https://arxiv.org/pdf/1812.02784v2.pdf

這項研究的作者提出了一個新的任務類型——故事可視化,即基於給定句子生成一系列對應的圖像,每張圖像對應一個句子。和視頻生成不同的是,故事圖像化較少關注生成圖像的連續性,而是更多地強調多個動態場景和角色之間的連貫性。此類問題目前無法被任何單個圖像或視頻生成方法解決。因此,論文作者提出了一個新的故事-圖像序列生成模型——StoryGAN,它基於條件序列生成對抗網路。這一模型的特別之處在於,它有一個深度語境編碼器可以動態跟蹤故事流,以及兩個判別器用於判別故事和圖像,以便提升圖像質量和生成序列的連貫性。為了評價模型的效果,研究人員修改了已有的數據集 CLEVR-SV 和 Pororo-SV。實驗結果表明,StoryGAN 在圖像質量、語境連貫性和人類評分上都超過了當前最佳模型。

圖 1:輸入的故事是「Pororo 和 Crong 在一起釣魚。Crong 看了一下水桶。Pororo 的魚竿上有一條魚。」每個句子都需要生成一幅對應的圖片。

基於故事文本生成圖像,難點是什麼?

讓模型基於自然語言學習生成有意義且連貫的圖像序列是一個有挑戰的任務,它需要對自然語言和圖像都能夠理解和推理。

該任務主要面臨兩項挑戰。第一,圖像序列必須連貫且完整地描述整個故事。這項任務和文本-圖像生成任務緊密相關,因為圖像需要基於很短的描述語句生成。

第二項挑戰是如何有邏輯地呈現故事線。具體來說,圖像中目標的外觀和背景布局必須根據故事情節推進以恰當的方式呈現。

StoryGAN 如何解決這個難題

下圖展示了 StoryGAN 的模型架構:

圖 2:StoryGAN 架構圖示。灰色實心圈中的變數分別代表輸入故事 S 和單個句子 s_1,...,s_T,以及隨機雜訊生成器網路包括故事編碼器、語境編碼器和圖像生成器。頂部有兩個判別器,分別判斷每個圖像-句子對和圖像-序列-故事對是真實數據還是生成數據。

給定一個多句子段落(故事),StoryGAN 使用循環神經網路(RNN),將之前生成的圖像信息加入到根據當前句生成圖像的過程中。語境信息從語境編碼器中獲得,包括堆疊的GRU單元和新提出的 Text2Gist 單元。語境編碼器將當前句子和故事向量轉換為高維特徵向量(Gist),用於之後的圖像生成任務。

當故事推進時,Gist 動態更新,以反映故事流中的目標變化和場景變化。在 Text2Gist 組件中,句子被轉換為一個隱藏向量,並與經過濾波器的輸入做卷積,從而調整以適應整個故事,所以我們可以通過修改濾波器的方式優化混合過程。類似的方法還有動態濾波(dynamic filtering)、注意力模型和元學習(meta-learning)。

為了保證生成圖像序列的連貫性,研究人員採用了一個雙層GAN網路。他們使用了一個圖像級別判別器來衡量句子和生成圖像之間的相關性,以及一個故事判別器來衡量生成圖像序列和整個故事的整體匹配度。

故事編碼器

如圖 2 粉色區域所示,故事編碼器 E(·) 對故事 S 進行隨機映射,得到低維嵌入向量 h_0。h_0 編碼了整個故事,並作為隱藏層的初始狀態輸入到語境編碼器中。

語境編碼器

在序列圖像生成任務中,角色、動作、背景等信息經常變化,每張圖像可能都不相同。這裡需要解決兩個問題:

如何在背景改變時有效地更新語境信息。

如何在生成每張圖像時將新的輸入和隨機雜訊結合,從而可視化角色的變化(變化可能非常大)。

為了解決這兩個問題,研究人員使用了一種基於深度 RNN 的語境編碼器結構,用於在序列圖像生成過程中捕捉語境信息。

這個深度循環神經網路包括兩個隱藏層。底層使用標準 GRU 單元,而頂層使用論文提出的 Text2Gist 單元,它是 GRU 的一種變體。

在時間步 t,GRU 層接受句子 s_t 和等距高斯雜訊ε_t 作為輸入,並輸出向量 i_t。Text2Gist 單元將 GRU 的輸出 i_t 和故事語境向量 h_t 結合(h_t 來自故事編碼器),生成 o_t。o_t 編碼了在時間步 t 需要生成圖像的所有必要信息。h_t 由 Text2Gist 更新,以反映潛在的語境信息變化。

如下為以上過程的公式:

o_t 是 Gist 向量,因為它分別結合了來自 h_t-1 的全局語境和 i_t 在時間步 t 的局部語境信息。故事編碼器則初始化了 h_0,而 g_0 則是從等距高斯雜訊分布中隨機採樣得到。根據以上信息,在時間步 t,Text2Gist 的內部運算過程如下:

在公式中,z_t 和 r_t 分別是更新門(update gate)和重置門(reset gate)的輸出。更新門決定上一個時間步的信息要保留多少,而重置門決定從 h_t-1 中遺忘多少信息。σ_z 、σ_r 和 σ_h 是非線性 sigmoid 函數。和標準的 GRU 不同,輸出 o_t 實際上是 Filter(i_t) 和 h_t 的卷積結果。

學習 i_t 學習的目的是適應 h_t。具體來說,Filter(·) 將向量 i_t 轉換為多通道過濾器,其大小是 C_out × 1 × 1 × len(h_t ),C_out 表示輸出通道數量。這一過程使用神經網路。由於 h_t 是向量,這個濾波器作為 1D 標準卷積層使用。

Text2Gist 中的這種卷積操作混合了來自 h_t 的全局語境信息,以及來自 i_t 的局部語境信息。由於 i_t 編碼了 S 中 s_t 和 h_t 的信息,即它編碼了整個故事的信息。而卷積操作可以被視為幫助 s_t 從生成過程中挑選重要的信息。實驗結果表明,Text2Gist 比傳統的循環神經網路在故事可視化上更加高效。

判別器

StoryGAN 使用兩個判別器,分別對應圖像和故事。這兩個判別器分別確保局部和全局的故事可視化連貫性。

圖 3:故事判別器的結構。圖像和故事文本特徵的內積作為輸入饋送到全連接層,並使用 sigmoid 非線性函數預測是生成的還是真實的故事對。

演算法

StoryGAN 的偽代碼如演算法 1 所示:

StoryGAN 的演算法偽代碼

在訓練中,研究人員使用 Adam 優化器進行參數更新。他們發現,不同的 mini-batch 大小可以加快訓練收斂的速度。在每輪訓練中,在不同的時間步更新生成器和判別器也有很多好處。具體的網路和訓練細節可以在附錄 A 中找到。

實驗

數據集

由於沒有現有的數據集進行訓練,研究人員根據現有的 CLEVR [19] 和 Pororo [21] 數據集進行了修改,製作了 CLEVR-SV 和 Pororo-SV 兩個數據集。

1. CLEVR-SV 數據集

原版的 CLEVR 數據集用於視覺問答任務。研究人員使用如下方法將其改造為 CLEVR-SV:

將一個故事中最多的目標數量限制在 4 個。

目標為金屬或橡膠制的物體,有八種顏色和兩種尺寸。

目標的形狀可以是圓柱體、立方體或球體。

目標每次增加一個,直到形成一個由四幅圖像序列構成的故事。

研究人員生成了 10000 個圖像序列用於訓練,以及 3000 個圖像序列用於測試。

2. Pororo-SV 數據集

Pororo 數據集原本用來進行視頻問答,每個一秒的視頻片段都有超過一個手寫描述,40 個視頻片段構成一個完整的故事。每個故事有一些問題和答案對。整個數據集有 16K 個時長一秒的視頻片段,以及 13 個不同角色,而手寫描述平均有 13.6 個詞,包括發生了什麼,以及視頻中是哪個角色。這些視頻片段總共組成了 408 個故事。

圖 10:Pororo 數據集中出現的角色。

研究人員將 Pororo 數據集進行了改造。他們將每個視頻片段的描述作為故事的文本輸入。對於每個視頻片段,隨機提取一幀畫面(採樣率為 30Hz)作為真實的圖像樣本用於訓練。五個連續的圖像組成一個完整故事。最後,研究人員製作了 15,336 個描述-故事對,其中 13000 個用於訓練,剩餘的 2336 個用於測試。該數據集被稱為 Pororo-SV。

研究人員對比了 StoryGAN 和其他模型的表現,並通過計算分類準確率、人類評分等方式評估結果。

CLEVR-SV 結果

圖 5:不同模型在 CLEVR-SV 上生成結果的對比。

表 1:不同模型的生成結果和真實結果的結構相似性(SSIM)分數。

Pororo-SV 結果

圖 6:兩個故事中,不同模型的生成結果對比。

表 2:角色分類準確率。上界為分類器在真實圖像中的分類準確率。

表 3:人類在評價生成圖像時在不同指標上的打分。指標包括:圖像質量、故事連貫性、相關性。±表示標準差。

表 4:基於排序的人類評估結果。±表示標準差。StoryGAN 獲得了最高的平均排序,而 ImageGAN 表現最差。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

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

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


請您繼續閱讀更多來自 機器之心 的精彩文章:

死亡啟示錄:AI在Dota 2中預測玩家5秒後死亡
推理速度提升5.1倍,參數減少88%:谷歌提出新型卷積網路EfficientNet

TAG:機器之心 |