元宵節(jié),春節(jié)后的小團(tuán)圓,也是一年中第一個月圓之夜,在這兒祝大家貪吃不胖,美夢不空。
在往年的元宵節(jié),我們會走出家門賞花燈、舞龍燈、猜燈謎,用火樹銀花的儀式迎接我們對未來的期望。2020年的元宵節(jié),因?yàn)橐咔?,我們慶祝的方式或許要單薄一些,但做一桌美食和父母分享還是極好的。
廚藝精湛的小伙伴完全有能力施展才華,做出如上圖般的美味佳肴。但做菜只知道放鹽的“廚師”也不要著急,上微博搜索一下賣相比較棒的菜品,用AI軟件識別一下,完全能估摸出個大概的配方。在這個不同尋常的“假期”借助AI的力量,磨練一下你的廚藝吧!
下面為大家介紹兩款菜譜識別軟件,分別是:MIT的Pic2Recipe 的AI系統(tǒng)、Facebook的菜譜識別AI系統(tǒng)。在最后會介紹相關(guān)技術(shù)原理,在家尚未返工返學(xué)的讀者也可以試著編程實(shí)現(xiàn)。
MIT先行,F(xiàn)acebook墊后
MIT的這一款名為Pic2Recipe識別軟件,開發(fā)于2017年,是卡塔爾計算研究所(QCRI,MIT最大的實(shí)驗(yàn)室)和加泰羅尼亞理工大學(xué)的聯(lián)合研究的產(chǎn)品,基于一個名為Food-101的數(shù)據(jù)集,并在2014年瑞士科學(xué)家工作的基礎(chǔ)上進(jìn)行了改進(jìn)。另外,他們還采用的了他們自己收集的Recipe1M的數(shù)據(jù)庫,其內(nèi)容包含超過一百萬張的食物圖片、以及它們對應(yīng)的菜譜。
具操作步驟是:用戶提交的照片被收藏到在線食譜中,并訓(xùn)練機(jī)器通過分析配料清單、烹飪說明和食品圖像,來自動了解食物的制作方法。其中食譜從二十多個流行的烹飪網(wǎng)站上搜集而來,并通過一條流水線進(jìn)行處理,從原始HTML中提取相關(guān)文本,下載圖像的鏈接,并將數(shù)據(jù)組合成一個緊湊的JSON模式,其中每個被標(biāo)記的數(shù)據(jù)具有唯一性。
Pic2Recipe動畫展示,來源:https://www.sohu.com/a/159754992_99905315
經(jīng)AI科技評論測試,目前這個軟件的網(wǎng)頁版已經(jīng)下線,不過在當(dāng)年,此項(xiàng)研究成果入選CVPR 2017,并且相關(guān)論文和代碼已經(jīng)開源。
paper:http://t.cn/R9vmeww ;Github:http://t.cn/RK1bLkv ;數(shù)據(jù)集:http://t.cn/R9vmBDN
相對于MIT的人工智能系統(tǒng),F(xiàn)acebook在2019年推出開源AI則比較“先進(jìn)”。相比之前的檢索辦法,F(xiàn)acebook換了一種新思路,將圖像到配方問題公式化為條件生成問題。即:使用預(yù)先訓(xùn)練圖像編碼器和成分解碼器,以圖像及其相應(yīng)的成分列表為條件生成指令序列,以此生產(chǎn)可能的菜譜。此系統(tǒng)是由安德里安·羅梅羅(Adrianna Romero)和其他幾名在FAIR蒙特利爾實(shí)驗(yàn)室的研究人員一起開發(fā)的。并在大規(guī)模菜譜數(shù)據(jù)集上進(jìn)行了評估,提高了與以前的成分預(yù)測方法基線相比的性能??偟膩碚f能夠通過輸入食物圖像來提供準(zhǔn)備一頓飯的途徑。
另外,該研究成果發(fā)表于 CVPR 2019 大會上,并把代碼開源在了 GitHub 上。
https://github.com/ facebookresearch / inversecooking
數(shù)據(jù)集介紹對于機(jī)器學(xué)習(xí)模型訓(xùn)練,首要考慮的是數(shù)據(jù)集,擁有好的數(shù)據(jù)集,訓(xùn)練出來的模型往往有著好的表現(xiàn)。在上面提到的兩個AI模型中,Pic2Recipe系統(tǒng)采用的是Recipe1M的數(shù)據(jù)集 + Food-101數(shù)據(jù)集。而Facebook的AI模型則是在Recipe1M的數(shù)據(jù)集上進(jìn)行評估。
其中,F(xiàn)ood-101 數(shù)據(jù)集是包含 101 種食品類別的圖像數(shù)據(jù)集,主要用于圖像分類,它共有 101,000 張圖像,平均每個類別擁有 250 張測試圖像和 750 張訓(xùn)練圖像。訓(xùn)練圖像未經(jīng)過數(shù)據(jù)清洗。所有圖像都已經(jīng)重新進(jìn)行了尺寸縮放,最大邊長達(dá)到了 512 像素。該數(shù)據(jù)集于 2014 年由斯坦福大學(xué)發(fā)布。
數(shù)據(jù)集下載地址:http://www.vision.ee.ethz.ch/datasets_extra/food-101/
Recipe1M數(shù)據(jù)集體量龐大,內(nèi)含100萬烹飪食譜和1300萬張食物圖像,其中中國菜也包含在內(nèi)。值得一提的是,這個數(shù)據(jù)庫的最主要來源是大家在社交網(wǎng)絡(luò)上曬出的食物圖片。也就是說,你在微博、朋友圈的“放毒”推動了人工智能的發(fā)展;另外,對食譜數(shù)據(jù)的收集參考了多個食譜網(wǎng)站,包括 All Recipes、Food.com,這一全球最大的食譜和食物網(wǎng)站之一。
數(shù)據(jù)集下載地址:http://t.cn/R9vmBDN
圖像到食譜背后的AI技術(shù)對于 AI 來說,從圖片中推導(dǎo)出菜譜主要需要兩方面的知識:一方面識別圖片中的食物,具體包括食材和配料;另一方面則是推斷出食材和配料的加工過程,是切塊還是切絲,是涼拌還是水煮等等。傳統(tǒng)方法傾向于將這一過程簡化為匹配任務(wù),MIT 之前的 Pic2Recipe 模型就是這樣做的。具體過程是:首先判斷圖片中食物和菜品,然后在數(shù)據(jù)庫中搜索和匹配相應(yīng)的菜譜。
如果沒有準(zhǔn)確的對應(yīng)菜譜,就會匹配一個最相似的。這樣的方法依賴大量的菜譜數(shù)據(jù),而且缺乏靈活性和多樣性。一旦出現(xiàn)數(shù)據(jù)庫中不存在或長相不同的食物,其準(zhǔn)確率就會大幅下降,難當(dāng)大任。所以這次我們介紹一下Facebook的那篇論文所采用的深度學(xué)習(xí)模型。具體而言Facebook 研究人員采用了一種新的思路,把從圖片到菜譜的過程視為一個條件生成系統(tǒng),輸入食物圖片,輸出食物名稱、食材配料表和烹飪步驟三種信息。圖片和食譜之間更多的是推導(dǎo)、分析關(guān)系,而不是匹配關(guān)系。
菜譜生成模型的工作流程
從論文中得知,這個菜譜生成模型由四個主要部分構(gòu)成,分別是提取圖像特征的圖像編碼器,分析食材列表的食材解碼器,預(yù)測食材加工過程的食材編碼器和許多個生成烹飪步驟的解碼器,其中用到了注意力機(jī)制和 ResNet-50 卷積神經(jīng)網(wǎng)絡(luò)模型等。
為了提高 AI 的表現(xiàn),研究人員還對圖像編碼器和食材解碼器進(jìn)行了預(yù)訓(xùn)練。具體而言:給定具有相關(guān)成分的輸入圖像,通過指令Transformer產(chǎn)生指令序列R 。
其中,標(biāo)題被預(yù)測為第一條指令,解碼器依賴于圖像和食材的輸入;然后通過ResNet-50提取圖像表示,并通過解碼器架構(gòu)獲得食材嵌入以預(yù)測食材,然后將單個嵌入層映射到固定大小的矢量中。其中指令解碼器由Transformer塊組成,每個Transformer塊包含兩個注意力層,后面跟著一個線性層。第一個注意力層對先前生成的輸出應(yīng)用自注意力,而第二層關(guān)注模型調(diào)節(jié)以改進(jìn)自注意力輸出。另外,Transformer模型由多個模塊組成后跟線性層和softmax非線性。
Transformer模型
在成分解碼中,論文中采用將食材作為列表和集合的方法,提出了一種新的食材預(yù)測架構(gòu),并利用食材之間的共同依賴性進(jìn)行預(yù)測。
食譜逆推真的準(zhǔn)確么?上述兩個AI系統(tǒng)準(zhǔn)確率都有待商榷,根據(jù)之前的報道Pic2Recipe準(zhǔn)確率只有65%,而且一旦涉及中國菜就宕機(jī)。而Facebook的更加秀,可以接受和分析任何圖片,但是能把月亮圖片識別成“家常煎餅”,能把iPhone手機(jī)識別成“家常冰凝膠”,至于皮卡丘,AI認(rèn)為應(yīng)該改名叫“煎蛋”。。。
據(jù)相關(guān)研究者稱,AI菜譜系統(tǒng)當(dāng)前遇到的最大瓶頸其實(shí)還在于圖片本身。因?yàn)樵谂臄z食物圖像時,食物的呈現(xiàn)往往會受到拍攝狀態(tài)的影響,比如角度、遠(yuǎn)近、擺放和燈光等因素,都有可能造成識別結(jié)果的不同。
而在模型方面,如果算力能夠支持,集成準(zhǔn)確率更高的系統(tǒng)完全不是問題,畢竟當(dāng)前人臉識別系統(tǒng)已經(jīng)能夠達(dá)到95%的準(zhǔn)確率。所以通過圖像逆推菜譜在未來還有很大的進(jìn)步空間,主要是數(shù)據(jù)集質(zhì)量的改善。好了,了解數(shù)據(jù)集以及背后的技術(shù)原理,感興趣的小伙伴自己動手實(shí)現(xiàn)一個識菜AI吧~
參考文獻(xiàn):
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/