疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

作者 | 蒋宝尚

编辑 | 贾伟

元宵节,春节后的小团圆,也是一年中第一个月圆之夜,AI 科技评论在这儿祝大家贪吃不胖,美梦不空。
在往年的元宵节,我们会走出家门赏花灯、舞龙灯、猜灯谜,用火树银花的仪式迎接我们对未来的期望。2020 年的元宵节,因为疫情,我们庆祝的方式或许要单薄一些,但做一桌美食和父母分享还是极好的。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

厨艺精湛的小伙伴完全有能力施展才华,做出如上图般的美味佳肴。但做菜只知道放盐的“厨师”也不要着急,上微博搜索一下卖相比较棒的菜品,用 AI 软件识别一下,完全能估摸出个大概的配方。在这个不同寻常的“假期”借助 AI 的力量,磨练一下你的厨艺吧!下面 AI 科技评论为大家介绍两款菜谱识别软件,分别是:MIT 的 Pic2Recipe 的 AI 系统、Facebook 的菜谱识别 AI 系统。在最后会介绍相关技术原理,在家尚未返工返学的读者也可以试着编程实现。
MIT 先行,Facebook 垫后

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

MIT 的这一款名为 Pic2Recipe 识别软件,开发于 2017 年,是卡塔尔计算研究所(QCRI,MIT 最大的实验室)和加泰罗尼亚理工大学的联合研究的产品,基于一个名为 Food-101 的数据集,并在 2014 年瑞士科学家工作的基础上进行了改进。另外,他们还采用的了他们自己收集的 Recipe1M 的数据库,其内容包含超过一百万张的食物图片、以及它们对应的菜谱。
具操作步骤是:用户提交的照片被收藏到在线食谱中,并训练机器通过分析配料清单、烹饪说明和食品图像,来自动了解食物的制作方法。其中食谱从二十多个流行的烹饪网站上搜集而来,并通过一条流水线进行处理,从原始 HTML 中提取相关文本,下载图像的链接,并将数据组合成一个紧凑的 JSON 模式,其中每个被标记的数据具有唯一性。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

Pic2Recipe 动画展示,来源:https://www.sohu.com/a/159754992_99905315

经 AI 科技评论测试,目前这个软件的网页版已经下线,不过在当年,此项研究成果入选 CVPR 2017,并且相关论文和代码已经开源。疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!
paper:http://t.cn/R9vmeww ;Github:http://t.cn/RK1bLkv ;数据集:http://t.cn/R9vmBDN 相对于 MIT 的人工智能系统,Facebook 在 2019 年推出开源 AI 则比较“先进”。相比之前的检索办法,Facebook 换了一种新思路,将图像到配方问题公式化为条件生成问题。即:使用预先训练图像编码器和成分解码器,以图像及其相应的成分列表为条件生成指令序列,以此生产可能的菜谱。此系统是由安德里安·罗梅罗 (Adrianna Romero) 和其他几名在 FAIR 蒙特利尔实验室的研究人员一起开发的。并在大规模菜谱数据集上进行了评估,提高了与以前的成分预测方法基线相比的性能。总的来说能够通过输入食物图像来提供准备一顿饭的途径。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

另外,该研究成果发表于 CVPR 2019 大会上,并把代码开源在了 GitHub 上。
https://github.com/ facebookresearch / inversecooking
数据集介绍对于机器学习模型训练,首要考虑的是数据集,拥有好的数据集,训练出来的模型往往有着好的表现。在上面提到的两个 AI 模型中,Pic2Recipe 系统采用的是 Recipe1M 的数据集 + Food-101 数据集。而 Facebook 的 AI 模型则是在 Recipe1M 的数据集上进行评估。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

其中,Food-101 数据集是包含 101 种食品类别的图像数据集,主要用于图像分类,它共有 101,000 张图像,平均每个类别拥有 250 张测试图像和 750 张训练图像。训练图像未经过数据清洗。所有图像都已经重新进行了尺寸缩放,最大边长达到了 512 像素。该数据集于 2014 年由斯坦福大学发布。
数据集下载地址:http://www.vision.ee.ethz.ch/datasets_extra/food-101/

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

Recipe1M 数据集体量庞大,内含 100 万烹饪食谱和 1300 万张食物图像,其中中国菜也包含在内。值得一提的是,这个数据库的最主要来源是大家在社交网络上晒出的食物图片。也就是说,你在微博、朋友圈的“放毒”推动了人工智能的发展;另外,对食谱数据的收集参考了多个食谱网站,包括 All Recipes、Food.com,这一全球最大的食谱和食物网站之一。
数据集下载地址:http://t.cn/R9vmBDN
图像到食谱背后的 AI 技术对于 AI 来说,从图片中推导出菜谱主要需要两方面的知识:一方面识别图片中的食物,具体包括食材和配料;另一方面则是推断出食材和配料的加工过程,是切块还是切丝,是凉拌还是水煮等等。传统方法倾向于将这一过程简化为匹配任务,MIT 之前的 Pic2Recipe 模型就是这样做的。具体过程是:首先判断图片中食物和菜品,然后在数据库中搜索和匹配相应的菜谱。如果没有准确的对应菜谱,就会匹配一个最相似的。这样的方法依赖大量的菜谱数据,而且缺乏灵活性和多样性。一旦出现数据库中不存在或长相不同的食物,其准确率就会大幅下降,难当大任。所以这次我们介绍一下 Facebook 的那篇论文所采用的深度学习模型。具体而言 Facebook 研究人员采用了一种新的思路,把从图片到菜谱的过程视为一个条件生成系统,输入食物图片,输出食物名称、食材配料表和烹饪步骤三种信息。图片和食谱之间更多的是推导、分析关系,而不是匹配关系。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

菜谱生成模型的工作流程

从论文中得知,这个菜谱生成模型由四个主要部分构成,分别是提取图像特征的图像编码器,分析食材列表的食材解码器,预测食材加工过程的食材编码器和许多个生成烹饪步骤的解码器,其中用到了注意力机制和 ResNet-50 卷积神经网络模型等。为了提高 AI 的表现,研究人员还对图像编码器和食材解码器进行了预训练。具体而言:给定具有相关成分的输入图像,通过指令 Transformer 产生指令序列 R 。其中,标题被预测为第一条指令,解码器依赖于图像和食材的输入;然后通过 ResNet-50 提取图像表示,并通过解码器架构获得食材嵌入以预测食材,然后将单个嵌入层映射到固定大小的矢量中。其中指令解码器由 Transformer 块组成,每个 Transformer 块包含两个注意力层,后面跟着一个线性层。第一个注意力层对先前生成的输出应用自注意力,而第二层关注模型调节以改进自注意力输出。另外,Transformer 模型由多个模块组成后跟线性层和 softmax 非线性。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

Transformer 模型

在成分解码中,论文中采用将食材作为列表和集合的方法,提出了一种新的食材预测架构,并利用食材之间的共同依赖性进行预测。

食谱逆推真的准确么?上述两个 AI 系统准确率都有待商榷,根据之前的报道 Pic2Recipe 准确率只有 65%,而且一旦涉及中国菜就宕机。而 Facebook 的更加秀,可以接受和分析任何图片,但是能把月亮图片识别成“家常煎饼”,能把 iPhone 手机识别成“家常冰凝胶”,至于皮卡丘,AI 认为应该改名叫“煎蛋”。。。

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

据相关研究者称,AI 菜谱系统当前遇到的最大瓶颈其实还在于图片本身。因为在拍摄食物图像时,食物的呈现往往会受到拍摄状态的影响,比如角度、远近、摆放和灯光等因素,都有可能造成识别结果的不同。
而在模型方面,如果算力能够支持,集成准确率更高的系统完全不是问题,毕竟当前人脸识别系统已经能够达到 95% 的准确率。所以通过图像逆推菜谱在未来还有很大的进步空间,主要是数据集质量的改善。好了,了解数据集以及背后的技术原理,感兴趣的小伙伴自己动手实现一个识菜 AI 吧~
参考文献:

arxiv:https://arxiv.org/abs/1812.06164

https://ai.facebook.com/blog/inverse-cooking/__https://research.fb.com/publications/inverse-cooking-recipe-generation-from-food-images/


疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!

疫情下的元宵节怎么过?借助 AI 给家人做顿团圆饭!点击“阅读 原文” 前往 问卷填写页面