給 AI 講故事,如何教它腦補(bǔ)畫(huà)面?
視覺(jué)想象力是人與生俱來(lái)的, AI 能否擁有類似的能力呢?比如:給出一段故事情節(jié),如何讓機(jī)器展開(kāi)它的想象力,“腦補(bǔ)”出畫(huà)面呢?看看阿里AI Labs 感知實(shí)驗(yàn)室的同學(xué)們?nèi)绾谓鉀Q這個(gè)問(wèn)題。
1. 背景 —— 視覺(jué)想象力(Visual Imagination)
1.1 什么是視覺(jué)想象力?
視覺(jué)想象力是人腦擁有的一個(gè)重要功能,可以將一些抽象的概念具象化,進(jìn)而憑借這些視覺(jué)想象進(jìn)行思考。如圖1最左列,當(dāng)我們想到:A yellow bird with brown and white wings and a pointed bill時(shí),腦海里可能已經(jīng)想象出了一幅黃色鳥(niǎo)的畫(huà)面。這就是視覺(jué)想象力。我們的目標(biāo)就是讓AI逐步具備這種能力。
圖1:由第一行中的文本描述,AI“想象”出的畫(huà)面 [1]。
1.2 AI擁有視覺(jué)想象力后的影響?
AI如果具備視覺(jué)想象力后,將會(huì)更懂人的需求,并能夠?qū)σ恍﹤鹘y(tǒng)行業(yè)產(chǎn)生顛覆性影響。下面舉兩個(gè)例子。
圖2為一個(gè)在語(yǔ)義圖像搜索領(lǐng)域中的案例。我們?cè)趃oogle中搜索man holding fish and wearing hat on white boat,可能返回的結(jié)果質(zhì)量為(a),引擎只是零星理解了我們的搜索意圖。而當(dāng)機(jī)器擁有一定視覺(jué)想象力后,它的搜索結(jié)果可能是(b),這將極大提升我們的信息檢索效率,而這些信息是承載于圖像中的。
圖2:AI具備視覺(jué)想象力后將會(huì)對(duì)語(yǔ)義圖像搜索產(chǎn)生重要影響 [2]。
另一個(gè)例子在語(yǔ)義圖像生成領(lǐng)域。試想:當(dāng)我們用語(yǔ)言描述一個(gè)場(chǎng)景時(shí),機(jī)器利用其龐大的經(jīng)驗(yàn)數(shù)據(jù)便自動(dòng)生成了這個(gè)場(chǎng)景。如圖3,如果我們描述一個(gè)人擁有不同的外貌特征,那機(jī)器便自動(dòng)想象出了這個(gè)人的樣貌,這將對(duì)諸如刑偵等領(lǐng)域(如受害人描述犯罪分子樣貌)產(chǎn)生怎樣的顛覆。
圖3:AI具備視覺(jué)想象力后將會(huì)對(duì)語(yǔ)義圖像生成產(chǎn)生重要影響 [3]。
2. 選題 —— 站在巨人的肩膀上
2.1 領(lǐng)域的痛點(diǎn)在哪?
我們將焦點(diǎn)移至文本生成圖像(text-to-image synthesis)領(lǐng)域。此領(lǐng)域中,針對(duì)簡(jiǎn)單單一主體的圖像生成,例如:鳥(niǎo)、花、人臉等,利用GAN的思想而來(lái)的一系列算法已經(jīng)取得了一些令人欣喜的結(jié)果,如圖1。然而,當(dāng)文本中含有多個(gè)相互關(guān)聯(lián)的物體時(shí),生成的效果就會(huì)大打折扣,如下左圖所示。這主要是由過(guò)于靈活、非結(jié)構(gòu)化文本所造成的。
圖4:當(dāng)前的生成算法很難對(duì)包含多個(gè)相互作用的物體進(jìn)行生成,如左邊的StackGan算法 [4]。右邊的sg2im算法則一定程度上擁有潛力解決這個(gè)問(wèn)題 [5]。
因此,Stanford大學(xué)CV組的Johnson等人在CVPR2018中提出了將文本到圖像的生成拆分為若干個(gè)更加可控的子問(wèn)題的想法 [5]。這用到了他們之前在CVPR2015中提出的一種新的場(chǎng)景表達(dá)方式 —— 場(chǎng)景圖(Scene Graph)和語(yǔ)義構(gòu)圖(Semantic Layout) [2]。
圖5:場(chǎng)景圖和語(yǔ)義構(gòu)圖示意 [6]。
場(chǎng)景圖是一種有向圖,含有實(shí)體、屬性、關(guān)系三種要素,可以看做是一種語(yǔ)義模態(tài)下的結(jié)構(gòu)化表達(dá)。
每個(gè)場(chǎng)景圖中的實(shí)體,在圖像中會(huì)有一個(gè)與之對(duì)應(yīng)的bbox。如果不看圖像本身,單看圖中所有的bbox,就形成了一幅圖像的語(yǔ)義構(gòu)圖,因此可以將語(yǔ)義構(gòu)圖看作是一種具有普遍含義的圖像結(jié)構(gòu)化表達(dá)。
表1:結(jié)構(gòu)名稱及所屬模態(tài)對(duì)照表。
2.2 如何解決?—— 我們眼中的大框架
站在大牛們的肩膀上,我們眼中從文本到圖像的生成大致分為下面幾個(gè)子任務(wù):
表2:由文本生成圖像任務(wù)拆分而來(lái)的子任務(wù)列表。
為了達(dá)到可控生成,信息逐步升維的目的,整個(gè)過(guò)程大致可拆分為上述子任務(wù)。每個(gè)子任務(wù)都有相應(yīng)的一些工作,在此不一一具體展開(kāi)。
2.3 論文的關(guān)注點(diǎn)
論文專注于解決子任務(wù)3:如何由場(chǎng)景圖生成場(chǎng)景構(gòu)圖?
這個(gè)任務(wù)之所以重要,是因?yàn)橛蛇@個(gè)任務(wù)而始,結(jié)構(gòu)化語(yǔ)義態(tài)的信息得以“想象”為圖像的結(jié)構(gòu)化表達(dá),是賦予機(jī)器以視覺(jué)想象力的關(guān)鍵所在。
3. 論文的動(dòng)機(jī)及貢獻(xiàn)
3.1 當(dāng)前的問(wèn)題
★ 3.1.1 最接近的工作與組合爆炸問(wèn)題
圖6:sg2im利用圖卷積網(wǎng)絡(luò),以場(chǎng)景圖整體作為輸入,生成語(yǔ)義構(gòu)圖整體 [5]。
最接近的工作來(lái)自Stanford Johnson等人在CVPR2018中發(fā)表的sg2im算法 [5](如圖6)。他們首先利用一個(gè)圖卷積網(wǎng)絡(luò)將每個(gè)實(shí)體進(jìn)行特征嵌入,繼而用這些特征通過(guò)一個(gè)object layout網(wǎng)絡(luò)去生成語(yǔ)義構(gòu)圖。他們采用的生成方式是由場(chǎng)景圖整體到語(yǔ)義構(gòu)圖整體。場(chǎng)景圖整體中會(huì)包含若干個(gè)實(shí)體和關(guān)系,這些實(shí)體和關(guān)系的組合所形成的場(chǎng)景圖變化極多,使得模型難以有效表達(dá)如此多的變化,最終導(dǎo)致了語(yǔ)義構(gòu)圖學(xué)習(xí)效果的不理想。我們稱之為組合爆炸問(wèn)題。
★ 3.1.2 語(yǔ)義構(gòu)圖評(píng)價(jià)指標(biāo)的缺失
另一大挑戰(zhàn)是:如何直接自動(dòng)化評(píng)價(jià)語(yǔ)義構(gòu)圖生成的好壞?
過(guò)去絕大部分工作采用間接自動(dòng)化評(píng)價(jià)的方式進(jìn)行,對(duì)由語(yǔ)義構(gòu)圖生成后的圖像給予打分,利用Inception score或Image captioning score。這樣做根本無(wú)法評(píng)價(jià)語(yǔ)義構(gòu)圖的生成好壞,很大程度上只評(píng)估了最終的GAN網(wǎng)絡(luò)是否有效。很多工作還加入了人工評(píng)分,雖給出了評(píng)分結(jié)果,但其幾乎不可能被完全復(fù)現(xiàn),這極大地阻礙了本領(lǐng)域的發(fā)展。
3.2 Seq-SG2SL的動(dòng)機(jī)
Seq-SG2SL是我們針對(duì)組合爆炸問(wèn)題提出的一個(gè)由場(chǎng)景圖生成語(yǔ)義構(gòu)圖的框架。本節(jié)不談框架本身,先講個(gè)故事。
故事背景:老師需要教學(xué)生學(xué)習(xí)如何通過(guò)看建筑圖紙去建樓。如圖7。
圖7:上圖是建筑圖紙示意,下圖是建成的房間示意(圖片來(lái)源于網(wǎng)絡(luò))。
A老師教快班。他指著一摞厚厚的圖紙對(duì)學(xué)生們說(shuō):“看,這是之前的圖紙,上面有按圖紙建好的大樓地址,你們拿這些圖紙去看看那些大樓,應(yīng)該就能悟出來(lái)大樓是怎么建的了。以后我給你一張新圖紙,你們就能建出大樓了。”學(xué)生們按照A老師的方法,紛紛去學(xué)了。當(dāng)A老師測(cè)驗(yàn)時(shí)發(fā)現(xiàn),幾乎沒(méi)有學(xué)生可以照?qǐng)D紙蓋出大樓,A老師生氣地說(shuō):“還快班呢,這群學(xué)生也太沒(méi)有悟性了,舉一反三都不會(huì)。”
B老師教慢班。他對(duì)學(xué)生們說(shuō):“我給大家一些圖紙,今天我先教大家怎么建客廳,明天教怎么建廚房。我們的目標(biāo)是先把每個(gè)房間的建造套路學(xué)到,再教大家怎么串起來(lái)建一整間房。最后再教你們?cè)趺唇潣?。看看這些圖紙,不必著急,我會(huì)告訴你們每一部分都和實(shí)際建筑里的哪一部分相對(duì)應(yīng),雖然整棟建筑看起來(lái)都不一樣,但這些局部是很有套路的,掌握以后保管你們都會(huì)蓋大樓。”果然,在B老師的悉心教導(dǎo)下,所有同學(xué)都很快通過(guò)了測(cè)驗(yàn),連小笨笨源方都學(xué)會(huì)了怎么看圖紙建大樓。
故事中,A老師的學(xué)生雖然是快班的,都很聰明,但是大樓千變?nèi)f化,學(xué)生們通過(guò)這些圖紙很難學(xué)到其中的共性。而B(niǎo)老師的學(xué)生,雖然整體學(xué)習(xí)比較慢,記性也不好,但B老師通過(guò)教授建大樓所需要的一些基礎(chǔ)知識(shí),將這些具有共性的要點(diǎn)教給學(xué)生,結(jié)果笨鳥(niǎo)得以先飛。
場(chǎng)景圖就好比建筑圖紙,語(yǔ)義構(gòu)圖就好比大樓。A老師的教學(xué)方法其實(shí)就遇到了組合爆炸的問(wèn)題,B老師通過(guò)教授最基礎(chǔ)的建樓操作避免了組合爆炸的問(wèn)題。
由此啟發(fā),我們提出了一種全新的視角,去看待由場(chǎng)景圖生成語(yǔ)義構(gòu)圖的問(wèn)題。語(yǔ)義構(gòu)圖是一個(gè)結(jié)果,我們要學(xué)習(xí)的不應(yīng)該是直接這個(gè)結(jié)果,而是產(chǎn)生這個(gè)結(jié)果的過(guò)程。通過(guò)對(duì)更基礎(chǔ)單元的學(xué)習(xí),解決組合爆炸問(wèn)題。
3.3 SLEU的動(dòng)機(jī)
為了解決缺乏直接自動(dòng)化評(píng)估指標(biāo)的問(wèn)題,我們提出了一個(gè)新指標(biāo):semantic layout evaluation understudy,簡(jiǎn)稱SLEU。這個(gè)指標(biāo)是受到著名的機(jī)器翻譯指標(biāo)BLEU啟發(fā)而來(lái)。
背后的邏輯是這樣的:
- 1)要想完成自動(dòng)化評(píng)估,必須需要真值。
- 2)SLEU的設(shè)計(jì)目的就是要度量一個(gè)生成的語(yǔ)義構(gòu)圖與真值之間的差異。
因此,遵循上述邏輯,我們類比了機(jī)器翻譯指標(biāo)BLEU的設(shè)計(jì),將BLEU的基本概念由1D擴(kuò)展到2D,提出了SLEU。
3.4 論文的貢獻(xiàn)
1)提出了一個(gè)新的框架Seq-SG2SL,將語(yǔ)義構(gòu)圖看作是一系列過(guò)程疊加的結(jié)果。和以往方法不同,AI學(xué)的是生成過(guò)程而不是結(jié)果。這種序列到序列的學(xué)習(xí)方式可以解決組合爆炸問(wèn)題。
2)提出了一個(gè)直接自動(dòng)化評(píng)價(jià)語(yǔ)義構(gòu)圖生成好壞的指標(biāo)SLEU,將會(huì)解決本領(lǐng)域存在的結(jié)果復(fù)現(xiàn)問(wèn)題,為不同構(gòu)圖生成方法的直接比較提供基礎(chǔ)。
4. 方法要點(diǎn)簡(jiǎn)述
4.1 Seq-SG2SL框架
圖8:Seq-SG2SL框架。
什么決定了一張語(yǔ)義構(gòu)圖呢?是關(guān)系。因此,一個(gè)場(chǎng)景圖中的關(guān)系三元組(主 - 謂 - 賓),決定了組成一張語(yǔ)義構(gòu)圖中的主語(yǔ)和賓語(yǔ)所對(duì)應(yīng)的兩個(gè)bbox。其中主語(yǔ)和賓語(yǔ)所對(duì)應(yīng)的bbox,分別稱為視覺(jué)主語(yǔ)(visual subject)和視覺(jué)賓語(yǔ)(visual object)。
由此,產(chǎn)生語(yǔ)義構(gòu)圖的過(guò)程可拆解為一系列基礎(chǔ)動(dòng)作片段,每一個(gè)基礎(chǔ)動(dòng)作片段稱為一個(gè)brick-action code segments (BACS)。每一個(gè)BACS執(zhí)行的操作就是將一個(gè)視覺(jué)主語(yǔ)和一個(gè)視覺(jué)賓語(yǔ)擺放到語(yǔ)義構(gòu)圖中,分別調(diào)整他們的類別,位置以及大小。而每一BACS恰恰由其在場(chǎng)景圖中所對(duì)應(yīng)的關(guān)系三元組所決定。一個(gè)關(guān)系三元組主-謂-賓順序相接,三個(gè)詞組成了一個(gè)基礎(chǔ)語(yǔ)義片段,我們叫做一個(gè)semantic fragments(SF)。如圖8,tree by sidewalk就是一個(gè)SF,它對(duì)應(yīng)的圖中BACS Sequence所示的那10個(gè)code(c0002 … h14)就是一個(gè)BACS,而這10個(gè)code執(zhí)行的結(jié)果就是最右側(cè)layout圖中tree和sidewalk兩個(gè)bbox。
將一系列SF進(jìn)行串聯(lián),形成了SF序列(SF sequence)。這個(gè)SF序列所對(duì)應(yīng)的是一個(gè)由每一個(gè)對(duì)應(yīng)BACS所串聯(lián)形成的序列(BACS sequence)。這兩個(gè)序列,就像兩種語(yǔ)言,我們需要做的只是讓機(jī)器學(xué)習(xí)從SF語(yǔ)言“翻譯”到BACS語(yǔ)言就好啦。當(dāng)然,為了保有scene graph中的有向圖信息,我們額外維護(hù)了一個(gè)節(jié)點(diǎn)序列(Node sequence),主要為了確定sequence中的哪些實(shí)體屬于同一個(gè)實(shí)體,并且能夠通過(guò)節(jié)點(diǎn)序列直接將場(chǎng)景圖中的實(shí)體屬性傳遞到語(yǔ)義構(gòu)圖中的bbox上。這樣,整個(gè)Seq-SG2SL框架做到了靈活且通用。
回想一下,這個(gè)過(guò)程是不是像我們之前講過(guò)的那個(gè)老師教學(xué)生從設(shè)計(jì)圖紙建樓的故事。我們看到了設(shè)計(jì)圖紙(scene graph)中的一個(gè)局部(一個(gè)SF),然后我們?nèi)W(xué)習(xí)大樓(semantic layout)中的這個(gè)對(duì)應(yīng)局部是怎么建的(學(xué)習(xí)一個(gè)BACS),最后再綜合,教學(xué)生去建整幢建筑。這樣做是不是很直觀,也符合客觀規(guī)律,我們不要求我們的學(xué)生(模型)都是天才般的存在,但是需要我們這個(gè)老師教授方式得法,才能最終達(dá)到好的效果。
框架的主要思想就講完了,細(xì)節(jié)的話感興趣的讀者可以去看論文。
4.2 SLEU指標(biāo)
在介紹SLEU之前,我們希望讀者已經(jīng)熟悉什么是機(jī)器翻譯中的BLEU指標(biāo)。
BLEU的基礎(chǔ)是n-gram。n-gram是指文本中連續(xù)出現(xiàn)的n個(gè)詞語(yǔ)(word),是基于(n-1)階馬爾科夫鏈的一種概率語(yǔ)言模型。簡(jiǎn)單地說(shuō),其假設(shè)當(dāng)前第n個(gè)詞出現(xiàn)的概率,僅取決于其前(n-1)個(gè)詞,而跟更前的詞無(wú)關(guān)。在機(jī)器翻譯中,BLEU評(píng)估的基本單位是word,一個(gè)unigram代表一個(gè)word,評(píng)估翻譯的充分性,而較長(zhǎng)的n-gram代表一個(gè)word序列,評(píng)估翻譯的流暢性。BLEU的思想是將句子拆分為n-grams,評(píng)估局部相似度,進(jìn)而對(duì)整體翻譯效果進(jìn)行打分。
對(duì)于機(jī)器翻譯而言,最小可拆分單元是一個(gè)word,那對(duì)于語(yǔ)義構(gòu)圖生成問(wèn)題而言,最小可拆分單元又是什么?是一個(gè)關(guān)系。因此,對(duì)于語(yǔ)義構(gòu)圖生成來(lái)說(shuō),我們的unigram變?yōu)榱艘粋€(gè)關(guān)系。評(píng)估充分性就是評(píng)估單個(gè)關(guān)系是否匹配;評(píng)估流暢性就是評(píng)估n個(gè)關(guān)系是否會(huì)同時(shí)匹配。我們同樣做了n階馬爾科夫鏈的假設(shè),即:一個(gè)關(guān)系的出現(xiàn),只取決于不超過(guò)(n-1)個(gè)其他關(guān)系,而和更多的關(guān)系無(wú)關(guān)。由于場(chǎng)景圖和語(yǔ)義構(gòu)圖中的物體是一一對(duì)應(yīng)的,因此沒(méi)有precision和recall的概念,我們稱對(duì)單個(gè)關(guān)系的評(píng)估,叫做unigram accuracy,而對(duì)多個(gè)關(guān)系的評(píng)估叫做n-gram accuracy。
具體設(shè)計(jì)我就不在這里細(xì)講了,將關(guān)系看做unigram是我們的核心思想。我們的工作只是將這個(gè)概念設(shè)計(jì)出來(lái),將BLEU的概念由1D推廣到2D罷了。感興趣的讀者可以參考論文,指標(biāo)的實(shí)現(xiàn)也將會(huì)開(kāi)源。
5. 實(shí)驗(yàn)結(jié)果預(yù)覽
圖9:由Seq-SG2SL框架在測(cè)試集上的一些結(jié)果展示。
上圖是一些利用Seq-SG2SL在測(cè)試集上的生成的結(jié)果,其中第一行為輸入,第二行為生成的語(yǔ)義構(gòu)圖,第三行是一個(gè)參考的語(yǔ)義構(gòu)圖及其對(duì)應(yīng)圖像。可以看出,我們的結(jié)果可以對(duì)含有多個(gè)關(guān)系的復(fù)雜場(chǎng)景進(jìn)行構(gòu)圖生成。
這里只做個(gè)引子,更多定量的分析在論文中詳細(xì)闡述,主要包括與baseline算法的比較,以及一些關(guān)于具體設(shè)計(jì)的必要性實(shí)驗(yàn)等。由于只是導(dǎo)讀,結(jié)論及未來(lái)工作等在此也概不贅述啦,感興趣的讀者可以直接看論文。
本文是ICCV 2019錄用論文《Seq-SG2SL:基于序列到序列學(xué)習(xí)的由場(chǎng)景圖生成語(yǔ)義構(gòu)圖的算法》的導(dǎo)讀,并不涉及論文中的全部?jī)?nèi)容,只重點(diǎn)闡述我們對(duì)一些問(wèn)題的思考。雖以論文為背景,但行文上試圖以更科普的形式逐步展示給讀者,期望對(duì)后續(xù)研究及應(yīng)用場(chǎng)景有所啟發(fā)。
本文由@源方執(zhí)筆,成果是幾位小伙伴共同的結(jié)晶@帆月@坎特@銘楊,我們來(lái)自阿里AI Labs感知實(shí)驗(yàn)室。如果您對(duì)研究感興趣,或者對(duì)業(yè)務(wù)方向有靈感,歡迎您致信:[boren.lbr@alibaba-inc.com],我們會(huì)很高興和您討論。
論文下載鏈接:
https://arxiv.org/abs/1908.06592
參考文獻(xiàn):
[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