閱讀573 返回首頁    go 阿裏雲 go 技術社區[雲棲]


無痛減肥黑科技:拍照識熱量


一直以來,橫亙在減肥塑身的誌士仁人麵前的除了堅定的意誌還有一道很難逾越的坎:每天的攝入熱量怎麼算?

對於統計每天步數和大致熱量消耗的設備,我們有手環、watch、手機;但每天的熱量攝入,怎麼計算呢? 每次就餐帶上紙、筆、記算器,不太現實。用熱量計算app,需要手動輸入每樣食品吃了多少克,沒有廚房稱的幫助下,對大多數人來說,要感知50g和75g的區別比較困難。

當AI作為一個形容詞,幾乎可以應用在任何領域的時候,減肥這個領域,似乎還沒有被充分開墾。


iDST數據實驗室的算法同學,正致力於做一個小小的改變:

幫助用戶,通過拍一張照片,識別照片裏包含的食材和對應的營養成份;通過選擇對應的份量,還可以算出大致熱量。

到目前為止,已實現對大部分常見的食物:中餐各式菜肴、麵點、水果、飲料的識別,覆蓋了幾千種南北食材。目前,該模型已經上線內測,我們也會努力嚐試成為減肥界的一股清流。

ps,如果正在減肥的同學想搶先上手嚐試,請直接拉到頁麵底部試用~

 

讓手機鏡頭,識別麵前的每一種食物,輸出它們的營養、熱量和做法,我們是怎麼做的?

一、數據收集和處理:

首先是大量的數據收集和知識庫的建設。
我們通過各類網站:搜索引擎、點評和外賣、淘寶商品和用戶評價、獲取了幾千萬張食物相關的圖片。
根據解析到的實體標簽以及映射到後台的知識庫,把所有的圖片分成對應為後台食材的3000個左右的葉子類。從實拍集和訓練效果的角度,保證每一個葉子類有至少2000張以上的訓練數據。

二、訓練框架和方法:

食材識別的難點在哪裏?

與通常的圖像分類算法相比,通過拍照識別食材並估算熱量是一個異常艱巨的任務。因為烹調食品是一個複雜且漫長的過程,期間各種食材會經曆多種物理和化學甚至生物變化。

例如,刀工會使得食材發生物理變化。即使是標準的刀工,也會將原先的食材加工為片、丁、絲、條、茸、段、麥穗型、梳子型、菊花形、米狀、末等完全不同的形狀。即便是同樣的片狀,還會細分為指甲片、柳葉片、月牙片、骨牌片、象眼片、馬牙片、秋葉片等不同的模樣。形狀的多變無疑增加了識別的難度。

烹飪中的化學反應進一步增加了識別的難度。例如,隨著烹飪過程中化學反應的發生,食材的顏色通常會發生變化,有些食材的顏色會與烹飪之前有很大的反差。

有些食材例如蛋白質會從液態變為固態,有些水溶性的食材會從固態變為液態。涉及到發酵等生物反應的烹飪過程時,食材會進一步變的麵目全非。

在實際的識別過程中,有些食材隻露出小小的一角,而有些菜,如水煮魚,看到的是上麵的魚片,用戶會希望模型還有對應的知識,即魚片的下麵,其實鋪滿了豆芽。

由此,食材的識別和通常的圖片識別和分類算法相比,有更多的困難。

我們的方法

針對食材識別的問題,我們的方法是:使用深度學習的方法,將黑盒的神經網絡與白盒的烹飪領域知識結合起來,同時確保訓練數據的數量和質量。

我們綜合評估了:GoogleNet, AlexNet, VGG, GoogleNet+BatchNorm 以及Caffe和TensorFlow,從Top5 ACC (輸出的前5個結果的準確率)的角度,上述框架沒有存在顯著的差異性。目前我們采用的是Caffe以及GoogleNet 和 ImageNet,更多的是從工程的可伸縮性,支持並發部署的角度來考慮的。


三、挑戰和業界評測:

在飲食領域的圖像識別和分類上麵,業內一直有關注和研究,比如下麵的paper:

Deep Learning Based Food Recognition 
DeepFood: Deep Learning-based Food Image Recognition for Computer-aided Dietary Assessment 
ChineseFoodNet: A large-scale Image Dataset for Chinese Food Recognition 
NutriNet: A Deep Learning Food and Drink Image Recognition System for Dietary Assessment
ChinFood1000: A Large Benchmark Dataset for Chinese Food Recognition
Learning Cross-modal Embeddings for Cooking Recipes and Food Images

對上述paper中的方法進行比較,基本上是 基於AlexNet,Vgg,Gnet,ResNet,今年CVPR的DenseNet做修改,細節有差異。

從數據集和分類目標兩個層麵,在啟動之初,我們就站在比目前業界更高的起點上。 

上麵是幾個用於做公開測評的通用數據集的數據情況,我們可以看到上述通用測試集的分類較少,每一個分類的樣本數量相對均勻。從千萬級的數據規模和過千的分類數量上看, 我們的數據規模是比較龐大的。

從分類目標上,我們首先識別食材(而非菜名),進而解析出營養成分和熱量,從場景上能夠較完整地反映用戶健康和飲食習慣。從食材的數量和烹飪方式上看,中餐的識別相較於西餐要困難,識別食材又比菜名更困難。

識別效果評測,目前業內的最好成績是:

數據集名稱

分類數量

數據集大小

準確率

備注

Food-101

101

101,000

88.28%

基於GoogleNet

UEC FOOD 100

100

9,060

81.45%

日餐為主

UEC FOOD 256

256

31,397

76.17%

基於GoogleNet

UNIMIB 2016

65

3616

86.39%

基於AlexNet

Paper作者自有集

520

220,000

86.72%

 

Paper作者實拍集

520

200

55%

 

從目前結果上看,我們的效果遠遠領先於MIT的CSAIL和業內在食物(中餐)上識別能力。


四、拍食物有什麼用 

對大家日常飲食有什麼用? 

當食物的營養和熱量識別,簡化成隻需要輕點拍攝這一步之後,我們可以幫助用戶記錄日常的飲食攝入。

有了日常記錄以後,可以從膳食結構角度,幫助用戶分析攝入的營養和食材的均衡情況,基於中國居民膳食指南,同時參考美國、日本等居民膳食指南,給出飲食建議。這就是營養師口中的“營養幹預”,幫助減肥、增脂、增肌都是這個範疇。

You are what you eat,人的健康除了先天、環境因素之外,最大的影響因子就是飲食習慣。

從模型訓練和算法的角度,當學會識別食材以後,後續將學會識別菜譜名稱,從而告訴你做法,以及,從千萬個淘寶和天貓商品中,根據菜譜為你選出:主料、輔料、佐料。

從此以後,正確的美食打開方式應該是:

輸入菜肴名稱,看完菜譜做法以後,根據算法為你準備好的:主料、輔料、佐料,輕觸點擊,一鍵加入購物車。等著食材送上門以後一顯身手吧。

切換成線下,到菜市場買菜也沒問題,打開手機,拍一拍麵前的生鮮食材,它叫什麼,營養元素和熱量,有哪些做法,可以搭配哪些食材一起烹飪,即時為你呈現。

 

作為iDST圖像識別能力的輸出,拍美食是“萬物識別”項目的一部分,目標是致力於讓AI使我們的生活越來越美好。如果希望體驗上述技術,快捷傳送門:

親問app二維碼

最後更新:2017-10-27 17:03:53

  上一篇:go  10月27日雲棲精選夜讀:阿裏雲校園公益極客大賽正式啟動 公益+科技+未來,打造不一樣的校園賽事!
  下一篇:go  【6000人齊聚CNCC2017】丘成桐、梅宏、沈向洋、李飛飛報告回顧,AI玫瑰綻放計算之美論壇