MIT披萨GAN登上了CVPR:加香肠、去橄榄、再烤熟,分层才是王道

AI资讯1年前 (2023)发布 AI工具箱
267 0 0

量子位 报道 | 公众号 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/

© 版权声明

相关文章

暂无评论

暂无评论...