讓機器“察言作畫”:從語言到視覺|VALSE2018之二

深度學習大講堂發表於2018-05-04

編者按:唐代詩人王維在《畫》一詩中,曾寫道:

“遠看山有色,近看水無聲。

  春去花還在,人來鳥不驚。”

這首他在賞畫時所作的詩,是人類從視覺到語言最高水平對映的表現。然而,如果我們來讀這首詩,是否能浮現出他所欣賞的畫作呢?顯然還不能。

因此,對於人類而言,相較於視覺到語言的對映,語言到視覺的對映似乎是一個更大的挑戰。而對機器而言,深度學習構建了語言與視覺之間的聯絡,也讓機器在吟詩作畫方面取得了超過普通人的成績。

1958年,滑鼠的發明者Douglas Engelbart,在麻省理工學院見到了人工智慧先驅Marvin Minsky,據說他們之間曾發生過這樣一段對話,Minsky說我們要讓機器變得更加智慧,我們要讓它們擁有意識,而Engelbart則這樣回應:你要為機器做這些事,那你又打算為人類做些什麼呢?

今天,我們通過回答“機器能為人類做些什麼”這個問題,來間接回答後者的問題。來自京東AI平臺與研究部的張煒博士,將為大家介紹,從語言到視覺,機器能為人類做些什麼。

文末提供文中提到參考文獻的下載連結。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
首先看一下CV的前世今生。前世的CV跟語言息息相關。在1966年Marvin Minsky定義CV是把一個攝像頭放在機器上,讓機器描述看到了什麼。注意定義中的關鍵詞“describe”跟語言非常相關:CV主要做的任務就是描述,而描述最直接的媒介就是用語言。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二

經過 50多年的發展,今生的CV已經成了比較大的領域,我做了一張表格來概括CV領域的多個任務。現在CV任務大都是從輸入域(視覺:影像/視訊)往輸出域(描述)的對映。輸入大部分都是影像和視訊,而輸出比較多樣,比如標籤,區域,還有句子,甚至是影像。每一種輸出的大小是不一樣的,十年前側重於用標籤描述影像,CV領域多是一些影像分類任務,比如物體、場景、動作分類。如果是二分類,輸出就只有一個位元,如果有10個位元,就能用二的十次方種標籤描述,區分出1000+類的場景或物體。如果把輸出變大一點,就有了物體、動作檢測問題,它的輸出是邊框座標。如果輸出更大一些,對應的任務就是影像或視訊描述(image/video captioning)。如果段落非常大,輸出有可能到1KB以上。現在還有一部分以圖片做為輸出的研究,比如說語義分割、影像轉換等,其實我們可以把這個問題看成一個從影像到影像的描述問題。

傳統做得比較多的方向是從左向右,最近幾年因為計算機視覺領域的發展和深度模型的盛行,也開始有了一些從傳統輸出到輸入域的反向對映。跟我們今天主題相關的,一個是標籤,一個是句子,都跟語言非常相關。今天我也會著重講講從標籤和句子生成影像和視訊。

先定義一下視覺和語言,視覺指的是影像和視訊,而語言的種類多一些,從傳統的標籤、標題、評論、詩歌,到對視訊的語言描述,同時還包括VQA、情感等新語言。這種對映不僅可以從左到右,從右向左也越來越多。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二

以前的任務可能更加側重從資料中學習知識,對應人類小孩的3~5歲。下一步CV領域應該是要往七歲的級別去演進了,可能會多一些內容生成。比如小孩子看過一些東西,學著做一些分類,慢慢的他會自己去設計一些東西,這是未來的趨勢。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二
我的報告分為兩個部分,一個是從語言到影像的對映,另外一個是從語言到視訊的對映。先說說影像:這裡面會涉及兩種,一個是用標籤生成影像,一個是用句子生成影像。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
說起這個問題,不得不說2014年的文章,Conditional GAN。普通對抗網路的生成器是輸入隨機噪聲產生一個影像。如果要把語言加進去,必須要有條件(conditioning)地輸入額外資訊。這時需用到Conditional GAN,其主要不同在於生成器除了隨機噪聲,還需要另外的資訊y。如果y是標籤,就是從標籤到影像的轉換,如果y是一個句子,那就成了標題到圖片。這篇文章在當時是比較有開創性的,右面一些結果,從上到下每一行都是加上一個有條件標籤的結果樣例。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
後來2016年有一篇ICML也是具有比較大的開創性,因為這是第一篇做語言到影像的轉換。這篇文章在模型上跟Conditional GAN類似,唯一不同是把輸入y換成了ψ(t)。其中t是文字序列,通過CNN-RNN網路對t進行了編碼形成ψ(t),然後與隨機噪聲拼起來輸入到生成網路,同時在判別網路的輸入上也加了ψ(t),約束產生的圖片要跟句子相關。這篇文章另外一個貢獻點是除了分真假,還分了對錯,即考慮了ψ(t)和生成對抗網路產生的結果的相關性。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
2016年當時的結果還非常有限,只能在非常有限的領域,比如花和鳥,生成比較粗糙的結果,可以看到影像上有非常多的人造痕跡,而且解析度也會比較小。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
後來有一個比較著名的改進,Stack GAN,是語言到影像比較明顯的改進。它產生的圖片細節非常不錯,在當時效果應該是最好的。主要思路是把生成過程分成兩個階段,像一個七歲的小孩畫一隻鳥的時候,肯定先從簡筆畫開始,不可能一開始畫栩栩如生的眼睛、羽毛。第一階段只畫64×64的樣本,只有大概的形狀和顏色;第二階段填充一些細節,對第一階段產生的圖片進行上取樣,產生更大、更高清,並且具有更多細節的影像。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
Stack GAN產生的影像,跟ICML2016的文章相比,一是細節更豐富,更像鳥更像花,另外它產生的影像解析度更大。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二

現在StackGAN也出了V2版本,這篇文章裡面有一個新的擴充套件叫StackGAN++,引入了多個生成器和分類器,產生多個尺度的影像中間結果,效果進一步提升。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二

另外一篇比較有代表性的文章,Deep Attention GAN (DA-GAN),主要的貢獻在於引入了注意力機制到GAN網路裡。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二
由於引入了注意力機制,可以在S和T上找到對齊的注意力元素:頭對頭,腳對腳,背對背,尾巴對尾巴。有了這種例項級的對齊資訊,生成過程能更加關注關鍵位置。這篇看似跟語言沒什麼關係,但是如果把源S的域換成文字,就成了從標題到影像的應用。文字也可以在其中找到比較重要的一些word,比如某些部位、形狀、顏色,以此畫出更加生動的鳥。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
剛才講了很多都是基於語言到影像。接下來講講由語言到視訊。這個領域可能比較新,文章非常少。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二

這篇文章發表在 NIPS’16,雖然和語言到視訊沒有什麼關係,但還是值得提一下,因為這個是開創性的一個工作。它是從一個隨機噪聲生成視訊:從噪聲z開始分了兩條線,一個產生前景,另一個生成背景。背景通道只有3,就是一張靜止的圖片,而前景是一個具有時間動態的視訊。通過mask把這兩條線做融合,最終產生一個視訊。雖然當時結果不是特別好,但是非常有代表性。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二

接下來講一講真正的由語言轉視訊:給一段話,產生一個視訊。現在有的方法,比如GAN、VAE,只有一些初步的探索,還沒有比較完整的資料集和工作。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二

這篇文章To Create What You Tell: Generating Videos from Captions做得比較前沿。中間有三個例子,分別是三句話對應三個視訊,一個比較簡單,一個數字8從左到右移動。中間這個稍微難了一點,兩個數字一個從上往下,一個從左往右,中間有重合。第三個更難,因為更貼近現實生活中的cooking視訊。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
VAE產生的不是那麼好,方法比較老。14年的GAN大家也都比較瞭解。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二這個問題難點主要是要產生的資訊量更大。2D到3D不僅有空間變化還有時間變化。產生的時候怎麼去處理更大量的資訊是一個難點。首先2D卷積肯定要換成3D的,直接產生3D volume,不能只產生一張影像。另外產生的視訊要和輸入的句子一致,不能產生的視訊跟句子沒有什麼關係。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二這個工作TGANs-C用的是聯合對抗學習,T代表時間性(temporal),C代表標題(caption)。跟生成影像不同的是直接用3D卷積產生整個視訊張量
讓機器“察言作畫”:從語言到視覺|VALSE2018之二不僅要考慮幀級別上的真實性,也要考慮視訊層次上的真實性。首先輸出要像一個視訊,另外要考慮運動連貫性。通過限制連續幀之間的差異可以讓視訊看起來更加真實。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
讓機器“察言作畫”:從語言到視覺|VALSE2018之二
這個框架可能比較複雜,左下角的框做語言編碼,通過一個多層LSTM把語言編碼成一個向量,代表一個句子。把句子和隨機噪聲拼在一起,送進一個3D卷積網路,逐漸產生視訊,上面這個框是3D生成網路。右面是D網路,普通的GAN只有一個判別器,而這有三個比較重要的D。D0判斷產生的內容像不像視訊,並且視訊內容是否與輸入文字S相關。D1保證每一幀像一個真實影像,並且裡面的內容還是要跟輸入文字有一定的相關性。最後要加入D2判別器,保證產生的視訊運動有比較好的平滑性,讓視訊看起來真實。D2的輸出是下面的張量判斷器,指的是兩幀之間的區別。這個約束包含兩種方法,第一個是讓運動儘可能的小,非常簡單粗暴,如果小到一定程度這個視訊就不動了。第二個手段是引入一個對抗損失,讓產生的運動跟真實視訊的運動要相似而不可區分。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二目前使用的資料集有三個,對應我一開始展示的三個例子:一個數字在螢幕上移動;兩個數字進行移動;還有一個比較真實的資料集,MSVD,是從真實的視訊選出來的做飯視訊。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二

如果把中間輸出都畫出來,可以看到隨著訓練過程從1000輪到10000輪,網路產生的每一幀更像真實的影像,而且幀和幀之間的運動也更流暢。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二
如果只加視訊的判別器D0,效果還不太好;如果加入視訊判別器和每一幀的判別器,效果略微好了一點;加了運動約束,這個視訊就感覺更加的平滑,更像真實視訊。如果我們不用這種簡單粗暴的損失,而加對抗性損失的話,效果應該是最好的。
讓機器“察言作畫”:從語言到視覺|VALSE2018之二

還有一些真實視訊的例子,可以看到如果跟以前的方法比,TGAN-Cs目前是做得最好的。

GAN評價一直是比較頭疼的問題,我們也做了一些用人評測的工作,判斷要評測視訊是不是真實,跟輸入的文字是不是一致,同時還要看一下時間連續性,運動是不是比較流暢。實驗發現結果還是非常好的。

讓機器“察言作畫”:從語言到視覺|VALSE2018之二
讓機器“察言作畫”:從語言到視覺|VALSE2018之二接下來請允許我插一個廣告,京東AI的CV Lab主要做視覺和多媒體相關的研究與應用,歡迎大家投遞簡歷加入我們。另外,京東AI組織了一個AI時尚挑戰賽,歡迎大家報名參加,目前我們開放了兩個任務,一個是時尚風格識別,另外一個是時尚單品搜尋,優勝者不僅有錢有獎,還有優先實習、訪問機會。歡迎大家投遞簡歷,歡迎大家參賽!

比賽連結為:

https://fashion-challenge.github.io/

文中提到參考文獻的下載連結為:

連結:https://pan.baidu.com/s/1CWtw8XAqiwpvvymn8Icnjg 

密碼:2ood

相關文章