元宵节,春节后的小团圆,也是一年中第一个月圆之夜,雷锋网 AI科技评论在这儿祝大家贪吃不胖,美梦不空。
在往年的元宵节,我们会走出家门赏花灯、舞龙灯、猜灯谜,用火树银花的仪式迎接我们对未来的期望。2020年的元宵节,因为疫情,我们庆祝的方式或许要单薄一些,但做一桌美食和父母分享还是极好的。
厨艺精湛的小伙伴完全有能力施展才华,做出如上图般的美味佳肴。但做菜只知道放盐的“厨师”也不要着急,上微博搜索一下卖相比较棒的菜品,用AI软件识别一下,完全能估摸出个大概的配方。在这个不同寻常的“假期”借助AI的力量,磨练一下你的厨艺吧!
下面雷锋网 AI科技评论为大家介绍两款菜谱识别软件,分别是:MIT的Pic2Recipe 的AI系统、Facebook的菜谱识别AI系统。在最后会介绍相关技术原理,在家尚未返工返学的读者也可以试着编程实现。
MIT先行,Facebook垫后
雷锋网(公众号:雷锋网)
MIT的这一款名为Pic2Recipe识别软件,开发于2017年,是卡塔尔计算研究所(QCRI,MIT最大的实验室)和加泰罗尼亚理工大学的联合研究的产品,基于一个名为Food-101的数据集,并在2014年瑞士科学家工作的基础上进行了改进。另外,他们还采用的了他们自己收集的Recipe1M的数据库,其内容包含超过一百万张的食物图片、以及它们对应的菜谱。
具操作步骤是:用户提交的照片被收藏到在线食谱中,并训练机器通过分析配料清单、烹饪说明和食品图像,来自动了解食物的制作方法。其中食谱从二十多个流行的烹饪网站上搜集而来,并通过一条流水线进行处理,从原始HTML中提取相关文本,下载图像的链接,并将数据组合成一个紧凑的JSON模式,其中每个被标记的数据具有唯一性。
Pic2Recipe动画展示,来源:https://www.sohu.com/a/159754992_99905315
经AI科技评论测试,目前这个软件的网页版已经下线,不过在当年,此项研究成果入选CVPR 2017,并且相关论文和代码已经开源。
paper:http://t.cn/R9vmeww ;Github:http://t.cn/RK1bLkv ;数据集:http://t.cn/R9vmBDN
相对于MIT的人工智能系统,Facebook在2019年推出开源AI则比较“先进”。相比之前的检索办法,Facebook换了一种新思路,将图像到配方问题公式化为条件生成问题。即:使用预先训练图像编码器和成分解码器,以图像及其相应的成分列表为条件生成指令序列,以此生产可能的菜谱。此系统是由安德里安·罗梅罗(Adrianna Romero)和其他几名在FAIR蒙特利尔实验室的研究人员一起开发的。并在大规模菜谱数据集上进行了评估,提高了与以前的成分预测方法基线相比的性能。总的来说能够通过输入食物图像来提供准备一顿饭的途径。
另外,该研究成果发表于 CVPR 2019 大会上,并把代码开源在了 GitHub 上。
https://github.com/ facebookresearch / inversecooking
数据集介绍对于机器学习模型训练,首要考虑的是数据集,拥有好的数据集,训练出来的模型往往有着好的表现。在上面提到的两个AI模型中,Pic2Recipe系统采用的是Recipe1M的数据集 + Food-101数据集。而Facebook的AI模型则是在Recipe1M的数据集上进行评估。
其中,Food-101 数据集是包含 101 种食品类别的图像数据集,主要用于图像分类,它共有 101,000 张图像,平均每个类别拥有 250 张测试图像和 750 张训练图像。训练图像未经过数据清洗。所有图像都已经重新进行了尺寸缩放,最大边长达到了 512 像素。该数据集于 2014 年由斯坦福大学发布。
数据集下载地址:http://www.vision.ee.ethz.ch/datasets_extra/food-101/
Recipe1M数据集体量庞大,内含100万烹饪食谱和1300万张食物图像,其中中国菜也包含在内。值得一提的是,这个数据库的最主要来源是大家在社交网络上晒出的食物图片。也就是说,你在微博、朋友圈的“放毒”推动了人工智能的发展;另外,对食谱数据的收集参考了多个食谱网站,包括 All Recipes、Food.com,这一全球最大的食谱和食物网站之一。
数据集下载地址:http://t.cn/R9vmBDN
图像到食谱背后的AI技术对于 AI 来说,从图片中推导出菜谱主要需要两方面的知识:一方面识别图片中的食物,具体包括食材和配料;另一方面则是推断出食材和配料的加工过程,是切块还是切丝,是凉拌还是水煮等等。传统方法倾向于将这一过程简化为匹配任务,MIT 之前的 Pic2Recipe 模型就是这样做的。具体过程是:首先判断图片中食物和菜品,然后在数据库中搜索和匹配相应的菜谱。
如果没有准确的对应菜谱,就会匹配一个最相似的。这样的方法依赖大量的菜谱数据,而且缺乏灵活性和多样性。一旦出现数据库中不存在或长相不同的食物,其准确率就会大幅下降,难当大任。所以这次我们介绍一下Facebook的那篇论文所采用的深度学习模型。具体而言Facebook 研究人员采用了一种新的思路,把从图片到菜谱的过程视为一个条件生成系统,输入食物图片,输出食物名称、食材配料表和烹饪步骤三种信息。图片和食谱之间更多的是推导、分析关系,而不是匹配关系。
菜谱生成模型的工作流程
从论文中得知,这个菜谱生成模型由四个主要部分构成,分别是提取图像特征的图像编码器,分析食材列表的食材解码器,预测食材加工过程的食材编码器和许多个生成烹饪步骤的解码器,其中用到了注意力机制和 ResNet-50 卷积神经网络模型等。
为了提高 AI 的表现,研究人员还对图像编码器和食材解码器进行了预训练。具体而言:给定具有相关成分的输入图像,通过指令Transformer产生指令序列R 。
其中,标题被预测为第一条指令,解码器依赖于图像和食材的输入;然后通过ResNet-50提取图像表示,并通过解码器架构获得食材嵌入以预测食材,然后将单个嵌入层映射到固定大小的矢量中。其中指令解码器由Transformer块组成,每个Transformer块包含两个注意力层,后面跟着一个线性层。第一个注意力层对先前生成的输出应用自注意力,而第二层关注模型调节以改进自注意力输出。另外,Transformer模型由多个模块组成后跟线性层和softmax非线性。
Transformer模型
在成分解码中,论文中采用将食材作为列表和集合的方法,提出了一种新的食材预测架构,并利用食材之间的共同依赖性进行预测。
食谱逆推真的准确么?上述两个AI系统准确率都有待商榷,根据之前的报道Pic2Recipe准确率只有65%,而且一旦涉及中国菜就宕机。而Facebook的更加秀,可以接受和分析任何图片,但是能把月亮图片识别成“家常煎饼”,能把iPhone手机识别成“家常冰凝胶”,至于皮卡丘,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/
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/137687.html