MIT披薩GAN登上了CVPR:加香腸、去橄欖、再烤熟,分層才是王道
算法其實并不是一只GAN,而是許多GAN層層疊疊而生。
吃栗子 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
有只會做披薩的GAN,登上了CVPR 2019。
它的工作,并不是生成一張披薩的照片那么簡單。
你看,AI可以給披薩鋪上帕帕羅尼腸:
服服帖帖,樸素的芝士披薩,也能變成帕帕羅尼披薩了。
如果有素食的小伙伴,AI可以把帕帕羅尼腸拿走,露出底下的芝士來:
仿佛肉被熊孩子挑光了一樣。
另外,在下不喜橄欖,也可以讓AI幫忙把橄欖揀出去:
既然是“做披薩”的AI,只會加料減料并不夠,還要把披薩烤熟:
完成。
這只AI就叫PizzaGAN。為它訓練廚藝的,是來自MIT和卡塔爾計算研究所的5位爸爸。
他們說,算法其實并不是一只GAN,而是許多GAN層層疊疊而生。
并且,修煉過程中PizzaGAN吃下了2.8G的真實披薩數據集,以及1.8G的合成披薩數據集。
兩個數據集現在已經開放下載了,團隊說算法也快要開源了。
在那之前,我們先來看看AI是怎樣做披薩的:
井然有序
AI按照食客的要求生產披薩,首先要認識各種配料。
分類、分割都只用了弱監督:通過AMT眾包獲得了標注數據,在圖像層面 (Image Level) 標出有哪些配料就可以。但為了準確,每張圖由5個人標注,最后采納多數人的看法。
數據有了,要怎么用呢?
一層疊一層
就像開頭提到的那樣,PizzaGAN不是一只GAN,而是模塊化的:
每種配料都有兩個算子?(Operator) ,一個用來加料,一個用來減料。每個算子都是一只GAN。
比如,這是加帕帕羅尼腸用的GAN:
它的生成器和普通GAN不同,不會生出一張全新圖像,而是在輸入圖像的基礎上,生成一層加帕帕羅尼腸的新外觀 (稱作A+) 。
還生成一個Mask (稱作M+) ,用來把新外觀疊加到原圖上,它會顯示出哪些像素和原圖不同。
有了A+和M+,就可以給芝士披薩,鋪上一層帕帕羅尼腸了。
去掉帕帕羅尼也是同理:
GAN要生成一層新的外觀 (A-) ,顯示出去掉食材的部分本來的樣子。
也生成一個Mask (M-) ,來指示原圖里的哪些像素,在新圖上會發生變化。
有了M-,就可以把A-這層新外觀疊加到帕帕羅尼披薩上,得到一張芝士披薩。
羅勒,蘑菇,菠蘿粒…..不想要的配料,全部可以去掉:
除此之外,注意一下,比起加料模塊,減料模塊擁有更重要的使命:
它們可以把輸入的一張披薩,拆解成很多層,每層一種料,然后就可以按需加減了。
那么問題來了,是不是只要知道有哪些料,按隨性的順序來拆解就行?
琵琶半遮面
不不不,AI可以從遮擋關系上,判斷出哪種料是先加的,哪種是后加的。
舉個栗子,這里有一紅一綠兩個圓,紅上綠下。
如果,先去掉紅色、再去掉綠色,那么去掉紅色的時候,綠色的圓會被AI補充完整。
反過來,先去掉綠色、再去掉紅色的話,綠色的圓就補不齊了。
這樣說來,先去掉紅色比較合適。那么AI是怎樣判斷的呢?
根據Mask來看,先去紅色再去綠色,兩個Mask之間會有交集,反過來就完全沒有交集了。
交集更多,就是更合理的順序,AI便是這樣推測減料的先后。
而最先去掉的料在最上層,也就是最后加的料。所以,把減料的順序翻過來,就是加料順序了。
撒好配料之后,放進烤箱:
一回熟二回生
最后一步,團隊手動標注了932個真披薩,一部分是烤熟的,一部分還沒烤。
這些數據用來訓練AI,把生餅變成熟餅:比如面餅變得金黃,下層的番茄醬在上層的配料之間透出更迷人的紅。
△?開頭出現過了,復習一下
只不過,芝士會融化這個知識點,對GAN來說可能還是有些困難了。
另外,由生到熟的過程,對人間的食物來說并不可逆。但AI能把已經烤熟的披薩,變回剛剛撒完配料的樣子:
神奇的是,芝士仿佛從融化的狀態,變回了一粒一粒的芝士碎。
這樣一來,把忘了加的配料撒上,還可以重烤一次。
真是一只隨和的AI。
得天獨厚
MIT的一位少年,把自家的成果發上了推特。
樓下便有觀眾,對研究人員的腦回路表示服氣:
看到論文題目,還以為只是提出分層?(Layering) 的概念,沒想到居然真在“做披薩”。
少年也開心地回復了觀眾:
沒錯,就是提了分層的概念,可披薩剛好是分層加料的,所以是完美的搭配喲。
那么問題來了,論文題目叫什么呢?
果然不是一篇正常的CVPR。
論文傳送門:
https://arxiv.org/abs/1906.02839
項目主頁,有Demo:
http://pizzagan.csail.mit.edu/
- 馬云正式卸任后,阿里巴巴開盤跌0.87%2019-09-10
- AI獨角獸云知聲,已完成一期科創板IPO輔導2019-10-17
- 亞馬遜在華拓展云計算團隊,挑戰阿里巴巴和騰訊2019-10-16
- IDC:今年上半年中國公有云服務市場規模達54.2億美元2019-11-07



