1. 背景 —— 視覺想象力(Visual Imagination)
1.1 什麼是視覺想象力?
視覺想象力是人腦擁有的一個重要功能,可以将一些抽象的概念具象化,進而憑借這些視覺想象進行思考。如圖1最左列,當我們想到:A yellow bird with brown and white wings and a pointed bill時,腦海裡可能已經想象出了一幅黃色鳥的畫面。這就是視覺想象力。我們的目标就是讓AI逐漸具備這種能力。

圖1:由第一行中的文本描述,AI“想象”出的畫面 [1]。
1.2 AI擁有視覺想象力後的影響?
AI如果具備視覺想象力後,将會更懂人的需求,并能夠對一些傳統行業産生颠覆性影響。下面舉兩個例子。
圖2為一個在語義圖像搜尋領域中的案例。我們在google中搜尋man holding fish and wearing hat on white boat,可能傳回的結果品質為(a),引擎隻是零星了解了我們的搜尋意圖。而當機器擁有一定視覺想象力後,它的搜尋結果可能是(b),這将極大提升我們的資訊檢索效率,而這些資訊是承載于圖像中的。
圖2:AI具備視覺想象力後将會對語義圖像搜尋産生重要影響 [2]。
另一個例子在語義圖像生成領域。試想:當我們用語言描述一個場景時,機器利用其龐大的經驗資料便自動生成了這個場景。如圖3,如果我們描述一個人擁有不同的外貌特征,那機器便自動想象出了這個人的樣貌,這将對諸如刑偵等領域(如受害人描述犯罪分子樣貌)産生怎樣的颠覆。
圖3:AI具備視覺想象力後将會對語義圖像生成産生重要影響 [3]。
2. 選題 —— 站在巨人的肩膀上
2.1 領域的痛點在哪?
我們将焦點移至文本生成圖像(text-to-image synthesis)領域。此領域中,針對簡單單一主體的圖像生成,例如:鳥、花、人臉等,利用GAN的思想而來的一系列算法已經取得了一些令人欣喜的結果,如圖1。然而,當文本中含有多個互相關聯的物體時,生成的效果就會大打折扣,如下左圖所示。這主要是由過于靈活、非結構化文本所造成的。
圖4:目前的生成算法很難對包含多個互相作用的物體進行生成,如左邊的StackGan算法 [4]。右邊的sg2im算法則一定程度上擁有潛力解決這個問題 [5]。
是以,Stanford大學CV組的Johnson等人在CVPR2018中提出了将文本到圖像的生成拆分為若幹個更加可控的子問題的想法 [5]。這用到了他們之前在CVPR2015中提出的一種新的場景表達方式 —— 場景圖(Scene Graph)和語義構圖(Semantic Layout) [2]。
圖5:場景圖和語義構圖示意 [6]。
場景圖是一種有向圖,含有實體、屬性、關系三種要素,可以看做是一種語義模态下的結構化表達。
每個場景圖中的實體,在圖像中會有一個與之對應的bbox。如果不看圖像本身,單看圖中所有的bbox,就形成了一幅圖像的語義構圖,是以可以将語義構圖看作是一種具有普遍含義的圖像結構化表達。
表1:結構名稱及所屬模态對照表。
2.2 如何解決?—— 我們眼中的大架構
站在大牛們的肩膀上,我們眼中從文本到圖像的生成大緻分為下面幾個子任務:
表2:由文本生成圖像任務拆分而來的子任務清單。
為了達到可控生成,資訊逐漸升維的目的,整個過程大緻可拆分為上述子任務。每個子任務都有相應的一些工作,在此不一一具體展開。
2.3 論文的關注點
論文專注于解決子任務3:如何由場景圖生成場景構圖?
這個任務之是以重要,是因為由這個任務而始,結構化語義态的資訊得以“想象”為圖像的結構化表達,是賦予機器以視覺想象力的關鍵所在。
3. 論文的動機及貢獻
3.1 目前的問題
★ 3.1.1 最接近的工作與組合爆炸問題
圖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。
圖7:上圖是建築圖紙示意,下圖是建成的房間示意(圖檔來源于網絡)。
A老師教快班。他指着一摞厚厚的圖紙對學生們說:“看,這是之前的圖紙,上面有按圖紙建好的大樓位址,你們拿這些圖紙去看看那些大樓,應該就能悟出來大樓是怎麼建的了。以後我給你一張新圖紙,你們就能建出大樓了。”學生們按照A老師的方法,紛紛去學了。當A老師測驗時發現,幾乎沒有學生可以照圖紙蓋出大樓,A老師生氣地說:“還快班呢,這群學生也太沒有悟性了,舉一反三都不會。”
B老師教慢班。他對學生們說:“我給大家一些圖紙,今天我先教大家怎麼建客廳,明天教怎麼建廚房。我們的目标是先把每個房間的建造套路學到,再教大家怎麼串起來建一整間房。最後再教你們怎麼建棟樓。看看這些圖紙,不必着急,我會告訴你們每一部分都和實際建築裡的哪一部分相對應,雖然整棟建築看起來都不一樣,但這些局部是很有套路的,掌握以後保管你們都會蓋大樓。”果然,在B老師的悉心教導下,所有同學都很快通過了測驗,連小笨笨源方都學會了怎麼看圖紙建大樓。
故事中,A老師的學生雖然是快班的,都很聰明,但是大樓千變萬化,學生們通過這些圖紙很難學到其中的共性。而B老師的學生,雖然整體學習比較慢,記性也不好,但B老師通過教授建大樓所需要的一些基礎知識,将這些具有共性的要點教給學生,結果笨鳥得以先飛。
場景圖就好比建築圖紙,語義構圖就好比大樓。A老師的教學方法其實就遇到了組合爆炸的問題,B老師通過教授最基礎的建樓操作避免了組合爆炸的問題。
由此啟發,我們提出了一種全新的視角,去看待由場景圖生成語義構圖的問題。語義構圖是一個結果,我們要學習的不應該是直接這個結果,而是産生這個結果的過程。通過對更基礎單元的學習,解決組合爆炸問題。
3.3 SLEU的動機
為了解決缺乏直接自動化評估名額的問題,我們提出了一個新名額:semantic layout evaluation understudy,簡稱SLEU。這個名額是受到著名的機器翻譯名額BLEU啟發而來。
背後的邏輯是這樣的:
- 要想完成自動化評估,必須需要真值。
- SLEU的設計目的就是要度量一個生成的語義構圖與真值之間的差異。
是以,遵循上述邏輯,我們類比了機器翻譯名額BLEU的設計,将BLEU的基本概念由1D擴充到2D,提出了SLEU。
3.4 論文的貢獻
1)提出了一個新的架構Seq-SG2SL,将語義構圖看作是一系列過程疊加的結果。和以往方法不同,AI學的是生成過程而不是結果。這種序列到序列的學習方式可以解決組合爆炸問題。
2)提出了一個直接自動化評價語義構圖生成好壞的名額SLEU,将會解決本領域存在的結果複現問題,為不同構圖生成方法的直接比較提供基礎。
4. 方法要點簡述
4.1 Seq-SG2SL架構
圖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. 實驗結果預覽
圖9:由Seq-SG2SL架構在測試集上的一些結果展示。
上圖是一些利用Seq-SG2SL在測試集上的生成的結果,其中第一行為輸入,第二行為生成的語義構圖,第三行是一個參考的語義構圖及其對應圖像。可以看出,我們的結果可以對含有多個關系的複雜場景進行構圖生成。
這裡隻做個引子,更多定量的分析在論文中詳細闡述,主要包括與baseline算法的比較,以及一些關于具體設計的必要性實驗等。由于隻是導讀,結論及未來工作等在此也概不贅述啦,感興趣的讀者可以直接看論文。
本文是ICCV 2019錄用論文《Seq-SG2SL:基于序列到序列學習的由場景圖生成語義構圖的算法》的導讀,并不涉及論文中的全部内容,隻重點闡述我們對一些問題的思考。雖以論文為背景,但行文上試圖以更科普的形式逐漸展示給讀者,期望對後續研究及應用場景有所啟發。
論文下載下傳連結:
https://arxiv.org/abs/1908.06592本文由@源方執筆,成果是幾位小夥伴共同的結晶@帆月@坎特@銘楊,我們來自阿裡AI Labs感覺實驗室。如果您對研究感興趣,或者對業務方向有靈感,歡迎您緻信:[[email protected]],我們會很高興和您讨論。
原文連結:
https://mp.weixin.qq.com/s/kkzSTLLwNAH5nJtuch6-tw