這篇文章是來(lái)自Google其2015年參加iccv時(shí)的一篇文章,反復(fù)將這篇文章看了幾遍揉燃,對(duì)于其中的流程有了一定的理解扫尺,相比于看的第一篇Paper1的文章而言,他們的工作的適用性更廣炊汤,但就目前食物圖片分析的現(xiàn)狀來(lái)看器联,這方面的技術(shù)也并不成熟,還有很多工作是需要在接下來(lái)去實(shí)現(xiàn)完成的婿崭。
好了拨拓,話不多說(shuō),來(lái)說(shuō)說(shuō)強(qiáng)大的Google團(tuán)隊(duì)在這方面做了些什么好玩的事情吧氓栈!
對(duì)于食物圖片的分析渣磷,其流程還是如Paper1中所說(shuō)道的幾個(gè)方面,分類授瘦,定位醋界,分割,估算體積提完,得到卡路里形纺,但在這篇文章中,首先對(duì)拍攝得到的圖片進(jìn)行判斷其是否為食物圖片徒欣,也即訓(xùn)練了一個(gè)二分類的分類器逐样。下面便一一來(lái)說(shuō)明一下他們是如何實(shí)現(xiàn)這其中的每一步的吧~
1、首先訓(xùn)練一個(gè)二分類器:
數(shù)據(jù)集:Food101+ImageNet中各取1000張圖片
訓(xùn)練模型:GoogleLeNet CNN將最后的的1000-way 的softmax換成一個(gè)單獨(dú)的邏輯節(jié)點(diǎn)以實(shí)現(xiàn)二分類判斷。
2脂新、分類階段
世界上的食物千千萬(wàn)萬(wàn)種挪捕,如何來(lái)得到食物項(xiàng)呢?他們采用的是搜索到幾家餐廳争便,然后對(duì)其各自的菜單進(jìn)行分析得到一些食物項(xiàng)以用于分類數(shù)目的確定级零。此處首先是用MenuMatch dataset 中的三家餐廳共41中食物項(xiàng)。另外滞乙,因?yàn)橐话闳藗兪秤玫臅r(shí)候不會(huì)是單一食品奏纪,所以此處是訓(xùn)練的到的多標(biāo)簽分類器,即一份食物圖片上包含多個(gè)食物項(xiàng)斩启,其計(jì)算表達(dá)的方式有兩種亥贸,一是通過(guò)設(shè)置一個(gè)閾值的方式來(lái)判斷其是否含有該類別項(xiàng),另一種是避免設(shè)置閾值通過(guò)權(quán)重的方式來(lái)計(jì)算最后的卡路里浇垦。見圖1所示:
數(shù)據(jù)集:Food101(包含有101類食物項(xiàng))及MenuMatch。
訓(xùn)練模型:GoogleLENET CNN荣挨;將最后一層的1000-way softmax換成101-way男韧,對(duì)其進(jìn)行微調(diào)。然后再將這101-way食物項(xiàng)換成MenuMatch中獲得的41-way默垄,再對(duì)其進(jìn)行微調(diào)此虑,最后得到了比較高的識(shí)別準(zhǔn)確率。
Adding1:因?yàn)槔肕enuMatch只能得到41種食物項(xiàng)口锭,規(guī)模較小朦前,所以他們做了另外一個(gè)數(shù)據(jù)集上的擴(kuò)充工作,得到數(shù)據(jù)集Restaurant dataset鹃操,其中包含2571個(gè)食物項(xiàng)的共99k張圖片韭寸。然后再根據(jù)這個(gè)數(shù)據(jù)集對(duì)GoogleLENET進(jìn)行訓(xùn)練,將最后的101-way softmax換成2571-way荆隘。另外這有一個(gè)小技巧恩伺,因?yàn)橛行┦澄镯?xiàng)很難區(qū)分開,所以利用到一個(gè)類別的混淆矩陣椰拒,將很近似的類進(jìn)行合并晶渠,以實(shí)現(xiàn)識(shí)別的準(zhǔn)確率。
Adding2:因?yàn)榍懊嫠f(shuō)到的方法均需要得到餐廳中的食物項(xiàng)燃观,然而在實(shí)際應(yīng)用中經(jīng)常遇到的是一些更通常的一些食物褒脯,所以為何不將其歸納起來(lái)作為一個(gè)通識(shí)食物項(xiàng)呢?所以他們便從數(shù)據(jù)集Food101數(shù)據(jù)集中缆毁,對(duì)每張圖片上的可見食物進(jìn)行標(biāo)記番川,共標(biāo)記出201個(gè)食物項(xiàng),形成數(shù)據(jù)集Food201-MultiLabel,并將其進(jìn)行訓(xùn)練,得到一個(gè)多標(biāo)簽的分類器爽彤。
3养盗、分割
因?yàn)槭澄锸遣欢ㄐ蔚模圆捎梅指顣?huì)比使用boundingbox更科學(xué)适篙。從實(shí)際出發(fā)考慮的話往核,Instance segmentation會(huì)更佳,這對(duì)統(tǒng)計(jì)某種食物的個(gè)數(shù)以及后續(xù)的操作會(huì)帶來(lái)便利嚷节,但在實(shí)現(xiàn)時(shí)的難度較大聂儒,比如,對(duì)于一個(gè)沒(méi)有明顯邊界的兩個(gè)雞蛋硫痰,如何知道其為兩個(gè)蛋而不是一個(gè)蛋衩婚,又比如,一種食物有一部分被另一種食物遮擋效斑,又如何得知其數(shù)量非春。所以目前采用的是semantic segmentation,即只需分割出有多少種不同的食物缓屠,而不區(qū)分一種食物有多少個(gè)奇昙。
數(shù)據(jù)集:首先對(duì)Food201-MultiLabel進(jìn)行分割的標(biāo)定(結(jié)合人工和Grabcut的方法),得到數(shù)據(jù)集Food201-segmented數(shù)據(jù)集敌完。
訓(xùn)練方法:他們采用的是“DeepLab”的方法(具體還不太明白)
4储耐、體積估計(jì):
不同于Paper1中選擇參照物的估計(jì)方法,此處采用的是利用含有深度圖片的RGBD圖片來(lái)得到實(shí)際圖片的深度滨溉,形成數(shù)據(jù)集GFood3d什湘,用于訓(xùn)練CNN,預(yù)測(cè)出RGB圖像的深度晦攒,測(cè)試集則利用NYU中的數(shù)據(jù)闽撤。最后再將深度轉(zhuǎn)換為立體圖來(lái)得到體積。并通過(guò)“MyPlate”來(lái)得到實(shí)際體積脯颜,形成數(shù)據(jù)集NFood-3d腹尖,然后再計(jì)算預(yù)測(cè)與實(shí)際的誤差。
5伐脖、得出卡路里值
通過(guò)之前的工作热幔,然后再查閱營(yíng)養(yǎng)表得到對(duì)應(yīng)的卡路里值。
整篇文章的關(guān)鍵點(diǎn)在于訓(xùn)練多標(biāo)簽分類器讼庇,分割以及體積估算部分绎巨,而其中具體的實(shí)現(xiàn),則需要自己多花精力去研究透徹蠕啄,使自己對(duì)問(wèn)題有更深地理解场勤,后續(xù)還有幾篇先前的關(guān)于食物圖片卡路里值的估計(jì)文章戈锻,需要繼續(xù)讀,讓自己對(duì)此類問(wèn)題有一個(gè)深入地分析理解和媳。
對(duì)于這類問(wèn)題格遭,現(xiàn)在的技術(shù)手段并不是很成熟,還有很多任務(wù)需要進(jìn)行研究留瞳,正如本篇文章最后所說(shuō)的:
也正因?yàn)檫@些挑戰(zhàn)的存在拒迅,也可以成為自己進(jìn)行深入研究的內(nèi)容~