給 AI 講故事,如何教它腦補畫面?

阿里技術發表於2019-11-20

給 AI 講故事,如何教它腦補畫面?

阿里妹導讀:視覺想象力是人與生俱來的, AI 能否擁有類似的能力呢?比如:給出一段故事情節,如何讓機器展開它的想象力,“腦補”出畫面呢?看看阿里AI Labs 感知實驗室的同學們如何解決這個問題。

1. 背景 —— 視覺想象力(Visual Imagination)

1.1 什麼是視覺想象力?

視覺想象力是人腦擁有的一個重要功能,可以將一些抽象的概念具象化,進而憑藉這些視覺想象進行思考。如圖1最左列,當我們想到:A yellow bird with brown and white wings and a pointed bill時,腦海裡可能已經想象出了一幅黃色鳥的畫面。這就是視覺想象力。我們的目標就是讓AI逐步具備這種能力。

給 AI 講故事,如何教它腦補畫面?
圖1:由第一行中的文字描述,AI“想象”出的畫面 [1]。

1.2 AI擁有視覺想象力後的影響?

AI如果具備視覺想象力後,將會更懂人的需求,並能夠對一些傳統行業產生顛覆性影響。下面舉兩個例子。
圖2為一個在語義影像搜尋領域中的案例。我們在google中搜尋man holding fish and wearing hat on white boat,可能返回的結果質量為(a),引擎只是零星理解了我們的搜尋意圖。而當機器擁有一定視覺想象力後,它的搜尋結果可能是(b),這將極大提升我們的資訊檢索效率,而這些資訊是承載於影像中的。
給 AI 講故事,如何教它腦補畫面?
圖2:AI具備視覺想象力後將會對語義影像搜尋產生重要影響 [2]。

另一個例子在語義影像生成領域。試想:當我們用語言描述一個場景時,機器利用其龐大的經驗資料便自動生成了這個場景。如圖3,如果我們描述一個人擁有不同的外貌特徵,那機器便自動想象出了這個人的樣貌,這將對諸如刑偵等領域(如受害人描述犯罪分子樣貌)產生怎樣的顛覆。

給 AI 講故事,如何教它腦補畫面?
圖3:AI具備視覺想象力後將會對語義影像生成產生重要影響 [3]。

2. 選題 —— 站在巨人的肩膀上

2.1 領域的痛點在哪?

我們將焦點移至文字生成影像(text-to-image synthesis)領域。此領域中,針對簡單單一主體的影像生成,例如:鳥、花、人臉等,利用GAN的思想而來的一系列演算法已經取得了一些令人欣喜的結果,如圖1。然而,當文字中含有多個相互關聯的物體時,生成的效果就會大打折扣,如下左圖所示。這主要是由過於靈活、非結構化文字所造成的。

給 AI 講故事,如何教它腦補畫面?
圖4:當前的生成演算法很難對包含多個相互作用的物體進行生成,如左邊的StackGan演算法 [4]。右邊的sg2im演算法則一定程度上擁有潛力解決這個問題 [5]。

因此,Stanford大學CV組的Johnson等人在CVPR2018中提出了將文字到影像的生成拆分為若干個更加可控的子問題的想法 [5]。這用到了他們之前在CVPR2015中提出的一種新的場景表達方式 —— 場景圖(Scene Graph)和語義構圖(Semantic Layout) [2]。

給 AI 講故事,如何教它腦補畫面?
圖5:場景圖和語義構圖示意 [6]。

場景圖是一種有向圖,含有實體、屬性、關係三種要素,可以看做是一種語義模態下的結構化表達。
每個場景圖中的實體,在影像中會有一個與之對應的bbox。如果不看影像本身,單看圖中所有的bbox,就形成了一幅影像的語義構圖,因此可以將語義構圖看作是一種具有普遍含義的影像結構化表達。
給 AI 講故事,如何教它腦補畫面?
表1:結構名稱及所屬模態對照表。

2.2 如何解決?—— 我們眼中的大框架

站在大牛們的肩膀上,我們眼中從文字到影像的生成大致分為下面幾個子任務:
給 AI 講故事,如何教它腦補畫面?
表2:由文字生成影像任務拆分而來的子任務列表。

為了達到可控生成,資訊逐步升維的目的,整個過程大致可拆分為上述子任務。每個子任務都有相應的一些工作,在此不一一具體展開。

2.3 論文的關注點


論文專注於解決子任務3:如何由場景圖生成場景構圖?

這個任務之所以重要,是因為由這個任務而始,結構化語義態的資訊得以“想象”為影像的結構化表達,是賦予機器以視覺想象力的關鍵所在。

3. 論文的動機及貢獻

3.1 當前的問題

★ 3.1.1 最接近的工作與組合爆炸問題

給 AI 講故事,如何教它腦補畫面?
圖6:sg2im利用圖卷積網路,以場景圖整體作為輸入,生成語義構圖整體 [5]。

最接近的工作來自Stanford Johnson等人在CVPR2018中發表的sg2im演算法 [5](如圖6)。他們首先利用一個圖卷積網路將每個實體進行特徵嵌入,繼而用這些特徵通過一個object layout網路去生成語義構圖。他們採用的生成方式是由場景圖整體到語義構圖整體。場景圖整體中會包含若干個實體和關係,這些實體和關係的組合所形成的場景圖變化極多,使得模型難以有效表達如此多的變化,最終導致了語義構圖學習效果的不理想。我們稱之為組合爆炸問題。

★ 3.1.2 語義構圖評價指標的缺失


另一大挑戰是:如何直接自動化評價語義構圖生成的好壞?

過去絕大部分工作採用間接自動化評價的方式進行,對由語義構圖生成後的影像給予打分,利用Inception score或Image captioning score。這樣做根本無法評價語義構圖的生成好壞,很大程度上只評估了最終的GAN網路是否有效。很多工作還加入了人工評分,雖給出了評分結果,但其幾乎不可能被完全復現,這極大地阻礙了本領域的發展。

3.2 Seq-SG2SL的動機

Seq-SG2SL是我們針對組合爆炸問題提出的一個由場景圖生成語義構圖的框架。本節不談框架本身,先講個故事。

故事背景:老師需要教學生學習如何通過看建築圖紙去建樓。如圖7。

給 AI 講故事,如何教它腦補畫面?
給 AI 講故事,如何教它腦補畫面?
圖7:上圖是建築圖紙示意,下圖是建成的房間示意(圖片來源於網路)。

A老師教快班。他指著一摞厚厚的圖紙對學生們說:“看,這是之前的圖紙,上面有按圖紙建好的大樓地址,你們拿這些圖紙去看看那些大樓,應該就能悟出來大樓是怎麼建的了。以後我給你一張新圖紙,你們就能建出大樓了。”學生們按照A老師的方法,紛紛去學了。當A老師測驗時發現,幾乎沒有學生可以照圖紙蓋出大樓,A老師生氣地說:“還快班呢,這群學生也太沒有悟性了,舉一反三都不會。”

B老師教慢班。他對學生們說:“我給大家一些圖紙,今天我先教大家怎麼建客廳,明天教怎麼建廚房。我們的目標是先把每個房間的建造套路學到,再教大家怎麼串起來建一整間房。最後再教你們怎麼建棟樓。看看這些圖紙,不必著急,我會告訴你們每一部分都和實際建築裡的哪一部分相對應,雖然整棟建築看起來都不一樣,但這些區域性是很有套路的,掌握以後保管你們都會蓋大樓。”果然,在B老師的悉心教導下,所有同學都很快通過了測驗,連小笨笨源方都學會了怎麼看圖紙建大樓。

故事中,A老師的學生雖然是快班的,都很聰明,但是大樓千變萬化,學生們通過這些圖紙很難學到其中的共性。而B老師的學生,雖然整體學習比較慢,記性也不好,但B老師通過教授建大樓所需要的一些基礎知識,將這些具有共性的要點教給學生,結果笨鳥得以先飛。

場景圖就好比建築圖紙,語義構圖就好比大樓。A老師的教學方法其實就遇到了組合爆炸的問題,B老師通過教授最基礎的建樓操作避免了組合爆炸的問題。

由此啟發,我們提出了一種全新的視角,去看待由場景圖生成語義構圖的問題。語義構圖是一個結果,我們要學習的不應該是直接這個結果,而是產生這個結果的過程。通過對更基礎單元的學習,解決組合爆炸問題。

3.3 SLEU的動機


為了解決缺乏直接自動化評估指標的問題,我們提出了一個新指標:semantic layout evaluation understudy,簡稱SLEU。這個指標是受到著名的機器翻譯指標BLEU啟發而來。

背後的邏輯是這樣的:

  • 1)要想完成自動化評估,必須需要真值。
  • 2)SLEU的設計目的就是要度量一個生成的語義構圖與真值之間的差異。

因此,遵循上述邏輯,我們類比了機器翻譯指標BLEU的設計,將BLEU的基本概念由1D擴充套件到2D,提出了SLEU。

3.4 論文的貢獻


1)提出了一個新的框架Seq-SG2SL,將語義構圖看作是一系列過程疊加的結果。和以往方法不同,AI學的是生成過程而不是結果。這種序列到序列的學習方式可以解決組合爆炸問題。

2)提出了一個直接自動化評價語義構圖生成好壞的指標SLEU,將會解決本領域存在的結果復現問題,為不同構圖生成方法的直接比較提供基礎。

4. 方法要點簡述

4.1 Seq-SG2SL框架


給 AI 講故事,如何教它腦補畫面?
圖8:Seq-SG2SL框架。
什麼決定了一張語義構圖呢?是關係。因此,一個場景圖中的關係三元組(主 - 謂 - 賓),決定了組成一張語義構圖中的主語和賓語所對應的兩個bbox。其中主語和賓語所對應的bbox,分別稱為視覺主語(visual subject)和視覺賓語(visual object)。

由此,產生語義構圖的過程可拆解為一系列基礎動作片段,每一個基礎動作片段稱為一個brick-action code segments (BACS)。每一個BACS執行的操作就是將一個視覺主語和一個視覺賓語擺放到語義構圖中,分別調整他們的類別,位置以及大小。而每一BACS恰恰由其在場景圖中所對應的關係三元組所決定。一個關係三元組主-謂-賓順序相接,三個片語成了一個基礎語義片段,我們叫做一個semantic fragments(SF)。如圖8,tree by sidewalk就是一個SF,它對應的圖中BACS Sequence所示的那10個code(c0002 … h14)就是一個BACS,而這10個code執行的結果就是最右側layout圖中tree和sidewalk兩個bbox。

將一系列SF進行串聯,形成了SF序列(SF sequence)。這個SF序列所對應的是一個由每一個對應BACS所串聯形成的序列(BACS sequence)。這兩個序列,就像兩種語言,我們需要做的只是讓機器學習從SF語言“翻譯”到BACS語言就好啦。當然,為了保有scene graph中的有向圖資訊,我們額外維護了一個節點序列(Node sequence),主要為了確定sequence中的哪些實體屬於同一個實體,並且能夠通過節點序列直接將場景圖中的實體屬性傳遞到語義構圖中的bbox上。這樣,整個Seq-SG2SL框架做到了靈活且通用。

回想一下,這個過程是不是像我們之前講過的那個老師教學生從設計圖紙建樓的故事。我們看到了設計圖紙(scene graph)中的一個區域性(一個SF),然後我們去學習大樓(semantic layout)中的這個對應區域性是怎麼建的(學習一個BACS),最後再綜合,教學生去建整幢建築。這樣做是不是很直觀,也符合客觀規律,我們不要求我們的學生(模型)都是天才般的存在,但是需要我們這個老師教授方式得法,才能最終達到好的效果。

框架的主要思想就講完了,細節的話感興趣的讀者可以去看論文。

4.2 SLEU指標


在介紹SLEU之前,我們希望讀者已經熟悉什麼是機器翻譯中的BLEU指標。

BLEU的基礎是n-gram。n-gram是指文字中連續出現的n個詞語(word),是基於(n-1)階馬爾科夫鏈的一種概率語言模型。簡單地說,其假設當前第n個詞出現的概率,僅取決於其前(n-1)個詞,而跟更前的詞無關。在機器翻譯中,BLEU評估的基本單位是word,一個unigram代表一個word,評估翻譯的充分性,而較長的n-gram代表一個word序列,評估翻譯的流暢性。BLEU的思想是將句子拆分為n-grams,評估區域性相似度,進而對整體翻譯效果進行打分。

對於機器翻譯而言,最小可拆分單元是一個word,那對於語義構圖生成問題而言,最小可拆分單元又是什麼?是一個關係。因此,對於語義構圖生成來說,我們的unigram變為了一個關係。評估充分性就是評估單個關係是否匹配;評估流暢性就是評估n個關係是否會同時匹配。我們同樣做了n階馬爾科夫鏈的假設,即:一個關係的出現,只取決於不超過(n-1)個其他關係,而和更多的關係無關。由於場景圖和語義構圖中的物體是一一對應的,因此沒有precision和recall的概念,我們稱對單個關係的評估,叫做unigram accuracy,而對多個關係的評估叫做n-gram accuracy。

具體設計我就不在這裡細講了,將關係看做unigram是我們的核心思想。我們的工作只是將這個概念設計出來,將BLEU的概念由1D推廣到2D罷了。感興趣的讀者可以參考論文,指標的實現也將會開源。

5. 實驗結果預覽


給 AI 講故事,如何教它腦補畫面?
圖9:由Seq-SG2SL框架在測試集上的一些結果展示。


上圖是一些利用Seq-SG2SL在測試集上的生成的結果,其中第一行為輸入,第二行為生成的語義構圖,第三行是一個參考的語義構圖及其對應影像。可以看出,我們的結果可以對含有多個關係的複雜場景進行構圖生成

這裡只做個引子,更多定量的分析在論文中詳細闡述,主要包括與baseline演算法的比較,以及一些關於具體設計的必要性實驗等。由於只是導讀,結論及未來工作等在此也概不贅述啦,感興趣的讀者可以直接看論文。

本文是ICCV 2019錄用論文《Seq-SG2SL:基於序列到序列學習的由場景圖生成語義構圖的演算法》的導讀,並不涉及論文中的全部內容,只重點闡述我們對一些問題的思考。雖以論文為背景,但行文上試圖以更科普的形式逐步展示給讀者,期望對後續研究及應用場景有所啟發。

本文由@源方執筆,成果是幾位小夥伴共同的結晶@帆月@坎特@銘楊,我們來自阿里AI Labs感知實驗室。如果您對研究感興趣,或者對業務方向有靈感,歡迎您致信:[boren.lbr@alibaba-inc.com],我們會很高興和您討論。


論文下載連結:
https://arxiv.org/abs/1908.06592

參考文獻:

[1] Qiao et al., MirrorGAN: Learning Text-To-Image Generation by Redescription, CVPR 2019.

[2] Johnson et al., Image Retrieval Using Scene Graphs, CVPR 2015.
[3] https://github.com/SummitKwan/transparent_latent_gan
[4] Zhang et al., StackGan: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks, ICCV 2017.
[5] Johnson et al., Image Generation from Scene Graphs, CVPR 2018.
[6] Krishna et al., Visual Genome: Connecting Language and Vision Using Crowdsourced Dense Image Annotations, IJCV 2017.

相關文章