你可能不会做披萨饼,但现在你的深度学习模型已经学会了。麻省理工学院最新发布的深度学习模型PizzaGAN通过基于组合层的GAN模型来学习如何训练GAN模型以识别制作披萨饼。 该模型分为两部分:
披萨饼配料表
在尝试训练深度神经网络制作披萨之前,我们首先需要弄清楚制作披萨的步骤和材料。虽然没有亲自做过或者见过披萨饼的制作过程,但总是缺不了面团,酱汁和奶酪的,然后添加其他的调料、香肠等等。
一旦我们明确目标流程,我们就可以开始训练一个模拟这些步骤的实际模型。例如,假设我们要做一个意大利辣香肠披萨,那么我们可以通过一系列步骤来模拟从我们的原始披萨到新的披萨的过程:
(1)明确我们要做的东西 - 意大利辣香肠披萨
(2)设定预期目标 - 在披萨上添加橄榄
添加橄榄后,另一位朋友可能会说:“我不喜欢意大利辣香肠,让我们用火腿!”这次我们有3个步骤:
(1)明确当前状态 - 意大利辣香肠和橄榄披萨
(2)第一个步骤 - 去掉意大利辣香肠
(3)第二个步骤 - 添加火腿
用于训练PizzaGAN的比萨饼数据集由9213张图片组成,每张图片中都有一个披萨。 每个图像都有一组相应的标签,用于描述披萨上的配料,不包括面团,酱汁和基础奶酪。 例如如果披萨图像上有火腿和蘑菇,则该图像的标签为[火腿,香菇]。执行训练时,输出分类是单热编码的。 因此,使用火腿和蘑菇披萨,输出矢量的火腿和蘑菇元素设置为1.0,而其余元素设置为0.0。
回想一下构建披萨饼模型的一组连续步骤。 如果我们想要将香肠披萨改为火腿披萨,我们需要移除香肠,在后再添加火腿,所以我们需要一个网络来完成这部分功能。
因此训练发生器网络以模拟配料的添加或移除时, 给定披萨的输入图像,发生器预测披萨的输出图像,由于每个网络只能执行一个操作,所以我们需要训练两个网络,一个用于移除一个用于添加。一对PizzaGAN发生器的例子 如下图所示, 一个用于添加意大利辣香肠,另一个用于去除它。
由于PizzaGAN生成器的输入和输出图像之间的差异只是配料不同,因此输入和输出标签向量的分类向量元素的差异为1。
PizzaGAN发生器模型用于添加和删除披萨上的配料,那么我们需要训练识别器来识别当前披萨上的配料。给定比萨饼的输入图像,识别器网络进行一组多标签分类。 输出向量的每个元素对应于披萨饼上的配料元素。
例如在下图中,PizzaGAN识别器预测比萨饼上有意大利辣香肠,蘑菇和橄榄。 对应的这些配料的输出向量的元素被预测为1.0(或者高于用户设置阈值的某个值)。
PizzaGAN识别结果
基于识别器预测比萨饼上的配料和发生器能够添加和移除配料,PizzaGAN能够以非常高的准确度构建和分解比萨饼的图像。
参考
https://towardsdatascience.com/how-to-make-a-pizza-with-deep-learning-f3548e249dc9
深度学习与Python,专注于深度学习、机器学习前沿知识与资讯