邊 競, 王藝璇, 代宇暉, 陳澤眾, 黃靖淳
(1 河北工業大學 理學院, 天津300000; 2 河北工業大學 人工智能與數據科學學院, 天津300000;3 河北工業大學 經濟管理學院, 天津300000)
食物是供給機體活動所需能量的重要物質來源,與人類日常生活息息相關。 由于食物種類繁多,所含營養成分也千差萬別,在普通條件下無法快速測定食物的種類及營養成分,但隨著深度學習的火熱,計算機視覺技術可以完成對食物圖像的識別任務,因此,如何搭建一個泛化性較強、識別精度較高的食物圖像識別分類算法是當前熱門的研究領域之一。 在當下的食物圖像識別分類領域,在國外,學者Yoshiyuki Kawano 等[1]提出了一種基于能移動設備端的食物識別技術;Joutou 等[2]提出采用多重核函數學習的方法集成顏色、紋理等圖像特征用于食物圖像的識別工作;Austin Myers 等[3]通過卷積神經網絡實現對食物的識別,并基于食物的常用烹飪方法對其營養成分進行分析,Keiji Yanai 等人提出使用Pre-training 和Fine-training 來提高深度卷積神經網絡對食物圖像的識別精度[4],Simon Mezgec 等[5]融合4 種卷積神經網絡形成深度神經網絡進行食物識別。
在國內,Zhihui Fu 等[6]提出使用殘差網絡模型來進行中餐菜品食物圖像的識別;郭禮華等[7]使用SIFT 特征、顏色直方圖特征、梯度直方圖、SURF 特征、LBP 特征和Gabor 特征等對食材圖像數據庫進行了分類,并與傳統特征分類方法進行了分析與比較;Shulin Yang 等[8]對食物不同分成之間的特征關系進行兩兩統計形成食物識別分類器;Xin Chen等[9]通過分別對不同的深度神經網絡進行訓練,提出了一種簡單集成訓練好的深度神經網絡模型用于中餐食物識別的研究方法。

圖1 基于Inception-V3 和遷移學習的中餐菜品標簽分類模型Fig. 1 Chinese food dish label classification model based on Inception-V3 and transfer learning
此外,深度學習離不開海量訓練數據的支持,由于一般的圖像識別任務獲取百萬級別的標簽數據樣本相對困難,小樣本數據集訓練的模型往往會出現“過擬合”情況。 基于上述存在的問題,遷移學習可以將具有較強泛化性能的預訓練模型進行微調訓練,從而可以檢測到新對象類別[10]。
綜合深度學習與遷移學習的優勢[11],本文提出一種基于遷移學習和卷積神經網絡的中餐菜品圖像多標簽分類方法。 該方法首先采用ImageNet 數據集上已完成預訓練的Inception-V3 模型初始化各層的網絡參數,然后通過微調,在本文所用到的中餐菜品圖像數據集上進行遷移學習,依次完成單標簽、多標簽分類的卷積神經網絡模型的搭建;分別完成中餐菜品圖像的名稱及原料的識別工作。 測試實驗結果表明,該方法具有一定的準確可靠性。
本文提出的基于Inception-V3 模型的中餐菜品標簽分類模型如圖1 所示,該模型選取經過預訓練的Inception-V3 作為基礎網絡架構,用于獲取菜品圖像的高層次視覺特征,從而實現中餐菜品圖像的名稱及原料識別工作。 該模型主要分為3 個部分:(1)中餐菜品圖像數據集的預處理。 (2)對經過預訓練的Inception-V3 進行微調,進行菜品圖像視覺特征的提取。 (3)將提取的菜品圖像特征應用至名稱及原料的標簽分類任務。

圖2 VIREO Food-172 數據集樣例Fig. 2 Sample VIREO Food-172 data set
VIREO Food-172 中餐圖像數據庫是Jingjing Chen 等[12]為進行中餐成分識別而建立的數據庫,該數據庫共包含172 種中餐菜品,353 種原料標簽,圖片總數共達110241 張。 本文以該數據庫為藍本,在每一類菜品圖像集中隨機抽取100 張圖片。 由于Inception-V3 模型的輸入圖像像素大小至少為224,因此首先將抽取到的圖片進行歸一化處理,統一尺寸為(256,256,3);其次進行數據分離,將圖像進行重命名,手工對每一種中餐菜品圖像的實際位置進行標注,并注明類別標簽,將對應的保存有中餐菜品位置信息及類別標簽的xml 文件進行保存;最后仿照VOC 數據集的格式,將用于訓練的圖片放置到對應的目錄下,同時將保存著圖片中菜品信息的xml文件也保存至相應目錄,構建中餐菜品訓練數據集,作為Inception-V3 模型的輸入。
Inception-V3 是由47 層網絡組成的深度卷積神經網絡,假設模型輸入為M, 網絡對應的輸出為N,則該模型通過訓練得到一個參數為Θ 的非線性映射F(·|Θ)[13],即

式 中, fl(·| Θl) 表 示 模 型 的 第l 層。 對Inception-V3 的遷移訓練過程如下:(1)將ImageNet數據集上已完成預訓練的Inception-V3 模型參數作為初始化網絡參數。 (2)將Inception-V3 模型中Softmax 輸出層的類別數,改成中餐菜品名稱的類別數172、原料的類別數353。 (3)在進行監督分類的網絡訓練模式時,采用后向傳播算法,在中餐菜品訓練數據集上進行遷移學習,并對模型參數進行更新。
當完成Inception-V3 的訓練之后,提取其最后一層(全連接層)產生的長度分別為172 和353 的特征向量作為模型最終學習到的高層次視覺特征,然后輸入到線性支持向量機分類器,分別用于實現中餐菜品名稱及原料組成的分類任務。
本實驗在Python3.7(64 bit)平臺上完成,具體測試環境見表1。 為測試本文方法的準確性,在圖2中經過預處理的中餐菜品圖像數據集上進行實驗的測試。 該數據集數據規模相對較小,共包含172 種中餐菜品,圖3 是部分中餐菜品圖像樣例。

表1 實驗測試環境配置Tab. 1 Experimental test environment configuration
在對模型進行訓練之前,首先需要使用預訓練模型Inception-V3 進行參數設置,部分參數設置如下:每步使用的Batch Size 為64、 epoch 為50 000、迭代輪數為5、學習率為0.001;其次將VIREO Food-172 數據集劃分成兩部分:10% 作為測試集;90%作為訓練集。 其中測試集1 000 張,訓練集10 239張;然后將彩色圖像進行灰度化處理,進行各層卷積特征的提取,以便于進行菜品名稱及原料類別標簽的匹配,完成中餐菜品名稱及原料的標簽分類任務。

圖3 測試數據集樣例Fig. 3 Sample VIREO Food-172 data set
此外,由于損失函數值對模型精確度影響最大,因此降低該數值可以提高模型的精確度,即損失函數值越小,模型精度越高,應用和研究的價值也就越大[14]。 因此在保持其他參數值不變的前提下,保證損失函數值相對較低可保證模型精度。 本文利用Inception-V3 模型在數據集VIREO Food-172 上迭代訓練至50 000 次,損失函數值整體呈現下降趨勢,表明模型的收斂效果較好。
使用上述模型對172 類中餐菜品進行名稱的單標簽分類,得出準確率為80.85%;對353 種菜品原料進行多目標分類,得出的準確率為56.26%。 部分中餐菜品的標簽分類結果如圖4 所示。

圖4 部分中餐菜品名稱及原料分類結果Fig. 4 Part Chinese food dish names and raw material classification results
由圖4 可見,本文提出的中餐菜品名稱及原料識別模型對菜品名稱的識別率可達到75%以上,對菜品原料的識別率可達50%以上,表明本文提出的模型具有較高的識別性能。
本文針對基于卷積神經網絡的中餐菜品名稱、成分識別技術進行了研究,在遷移學習的基礎上使用Inception-V3 模型對VIREO Food-172 數據集進行了標簽分類,完成了中餐菜品名稱及成分的識別工作,菜品名稱準確率達到了80.85%,菜品原料識別率達到了56.26%,取得了較好的識別性能;與傳統的CNN 以及SVM-HOG 方法相比,本文的方法可以更快速地對中餐菜品的名稱及原料進行識別,且具有較好的可移植性,因此將訓練好的模型與移動端架構相結合,實現智能移動端設備上的APP 模塊化操作也將成為后續工作的重點研究方向[15]。