看美食图片就能知道食谱?这个AI比美食家还灵么?
喜欢研究吃的人经常会在看到美味食物甚至食物图片时垂涎不已,甚至千方百计想弄明白怎么才能做出这道美食。
最近,Facebook提出了一种AI方法,能够根据美食图片直接生成食谱!天啊,简直满足了天下爱吃且爱做饭的人的心愿啊~
这张图片中左侧为原图;右侧显示了食物名称、原料,甚至还有操作说明。有了这个AI,只需要有美食图,就可以准备做饭,不用再费力查找食谱啦~
目前,Facebook已经把这个项目开源了:
reddit用户JonathanFly将该项目做成了一个Colabdemo,参见:
还用非食物的图片进行了尝试,结果令人捧腹。
比如,如果你使用皮卡丘的图片,这个系统会告诉你「皮卡丘的食谱」:
「皮卡丘」竟然被认成了万圣节幽灵饼干!原来皮卡丘是烤制而成的~
从图像到食谱,如何实现?
从图片中生成食谱需要同时理解组成食材和制作的过程(如切片、和其他材料搅拌等)。传统方法将这个问题视为检索任务,基于输入图片和数据集图片的相似度计算,将食谱从一个固定的数据集中检索出来。很明显,传统方法在数据集缺少某种食物制作方法的情况下就会失败。
有一种方法可以克服这一数据局限,即将图片到菜谱的问题视为一个条件生成任务。研究人员认为,与其直接从图片中获取菜谱,不如首先预测食物的材料,然后基于图像和食材生成食物制作方法。这样可以利用图片和食材的中间过程获取一些额外信息。
模型
模型主要由两部分构成,首先研究人员预训练一个图片编码器和一个食材解码器(ingredientsdecoder),提取输入图像的视觉特征来预测食材。然后训练一个食材编码器(ingredientencoder)和烹饪流程解码器(instructiondecoder),根据输入图片的图像特征和已经预测到的食材,生成食物的名称和烹饪流程。
模型架构如下图所示:
图2:模型的结构。模型的输入是食物图片,输出的是烹饪方法序列,而中间一步是基于图像生成食材清单。
具体来讲,烹饪流程解码器使用了三种不同的注意力策略:
图3:烹饪流程解码器使用的注意力策略。Transformer模型(a)中的注意力模块被替换成了三种不同的注意力模块(b-d),用于多种条件下的烹饪说明。
效果如何?
研究人员使用Recipe1M[45]数据集来训练和评估模型。该数据集包括从烹饪网站上爬取的1,029,720个食谱。在实验中,研究者仅使用了包含图片的食谱,并移除了使用少于两种食材或两道流程的食物。最终,实验使用了252,547个训练样本、54,255个验证样本和54,506个测试样本。
研究人员对比了传统的检索方法和该研究提出的新方法,结果如下:
表3:基线方法和论文方法的对比。左图为IoU和F1分数,右图为食材在烹饪指南上的精确率和召回率。
研究人员还进行了用户测试。他们从测试集中随机选择了15张图片,让用户根据提供的图片选择20种食材,并写下可能图片对应的菜谱。为了减少人类任务的复杂度,研究人员提高食材使用频率的阈值,减少了食材的选择数量。
表4:用户测试。左图为基线方法、人类和论文方法判断食材的IoU和F1分数,右图为根据人类判断,这三种方法生成食谱的成功率。
实验结果说明,使用AI生成的食谱比检索方法生成的食谱效果更好。
这样的研究只是造福吃货吗?
这项研究通过对食物图片的研究,可以进一步猜测其食材和加工方式。这可以进一步方便人们学习新的食物制作、协助计算食物中每种成分的卡路里、创造新的菜谱。同时,该研究采用的方法可以进一步启发「根据图片预测长文本」的研究。
更何况,再也不用看着社交媒体上的美食流口水了。扫图出菜谱,人人都可以学着做~