王長冬



摘要:作者針對中餐主食圖像的識別問題研究提出了一種基于卷積神經網絡和遷移學習的方法,完成對共計20類中餐主食接近2萬張的圖片進行了訓練和測試,得到了較為滿意的結果。將訓練得到的網絡模型通過應用框架進行了安卓平臺的移植開發,實際應用效果表現良好。
關鍵詞:中餐主食;卷積神經網絡;遷移學習;圖像識別;安卓平臺
1 緒論
近年來圖像的分類和識別技術被應用于各個不同領域,如衛生、交通、智能機器人和食品加工等。對圖像進行分類和識別的方法很多,其中最常用的為提取圖像的顏色、形狀、紋理等特征,然后將這些特征輸入到機器學習算法中進行分類。對食品圖像的分類和識別,在全球學者不同的研究工作中有不同的發現。總體來說,有基于形狀的特征和關鍵點[1-4],顏色和紋理[5-7],以及深度學習算法[8-9]。
本論文旨在尋找一種可靠的食物識別方法應用于中餐主食圖像識別,并落實于實際應用。根據實際實驗條件,識別方法需滿足以下條件:小型食物數據集以及可接受的準確率以及為移動平臺考慮的低運算成本。基于這三點,最終選擇了InceptionV3網絡模型進行遷移學習實驗,以更快地達到研究目的。
2 卷積神經網絡
卷積神經網絡是一種深度學習神經網絡,它的各個層包含若干個相同神經元的拷貝。它由一個輸入層、許多中間層和一個輸出層組成。中間層可以包含許多不同的層,如卷積層、池化層和全連接層。卷積神經網絡的概念源于動物的視覺系統,即對觀察所得圖像的分割行為,通過局部特征的判斷整合得到全局的判斷結果。基于這個分解特征的思想,卷積神經網絡在計算機視覺,尤其是圖像分類和識別方面應用非常廣泛。
2.1 InceptionV3網絡
InceptionNet網絡的思想是找出用密集成分近似最優的局部稀疏結構的方法,在InceptionV2版本中作者提出了BN正則化方法,對輸出進行正態分布的規范化,解決輸入輸出分布不一致對特征提取造成的阻礙。下圖給出的是卷積神經網絡訓練模型Inception-v3[10]的結構示意圖,如圖1所示。每個小的圓角矩形代表一個神經網絡層。Bottleneck瓶頸層輸出Bottleneck feature為所提取出的特征。
Inception V3的優勢為在v2版本上的進一步分解卷積操作,豐富了網絡中的Inception模塊,充分發揮了降低維度的優勢,將原5*5卷積分解為兩個3*3卷積串聯,此改進降低了參數量又降低了計算量,進一步提高了網絡性能。
2.2 遷移學習
通常,卷積神經網絡需要大量的圖片數據和很長的訓練時間來獲得一個有效的模型,所以對于小型數據集來說,卷積神經網絡無法和別的識別方法形成有效的對比。但經研究發現,一個在大型數據集上已經訓練好的模型,在另一個小型數據集上進行二次訓練,可以得到一個較為不錯的結果。這個過程被稱為遷移學習。遷移學習的概念可以從圖1中直觀地表現出來。以InceptionV3模型為例,當新數據集和網絡模型初始訓練時所用的原數據集近似,且規模遠小于原數據集時,此時模型在新數據集上進行訓練時可以把該模型作為特征提取器使用,只需微調參數訓練分類器即可。該方法契合本論文的實驗背景和條件。
因此,基于遷移學習方法和InceptionV3的性能,結合現有實際實驗條件,決定采用InceptionV3網絡進行訓練實驗。
3 模型訓練實驗
根據實驗預計進行分類的種類,數據集由香港城市大學開源數據集VIREO FOOD-172提供部分,并通過在互聯網上收集實驗相關圖像擴充數據集類別,再人工進行數據清理,舍棄無用數據,統一歸一化為Inception V3輸入尺寸即299×299,構建共計20類圖像組合成的數據集。
3.1 數據預處理
初步擴展完的數據集中,因部分類別的數據規模存在較大的差異,部分類的數據量低于200,而部分類的數據量近似達到1000。因此為防止模型在訓練時對部分特征產生依賴,影響模型的泛化性能,根據各類的數據量進行對應擴展,最終使所有類的數據量達到近似或等于1000的規模。其中,對圖像主要進行了以下方式的擴展,左右水平翻轉,逆時針45°旋轉,亮度、對比度以及圖像銳度增強。
3.2 模型訓練
本論文在采用InceptionV3模型進行遷移學習的訓練時,舍棄了網絡的后三層,并添加新的全連接層作為分類器,將該模型瓶頸層提取的特征向量輸出作為新的全連接層輸入,訓練新的分類器。由于進行遷移學習的訓練,整體網絡的原有訓練參數將不進行大的改動,逐步微調學習率和訓練次數以達到滿意效果。最終訓練次數設定為8000次,學習率以指數形式衰減,起始學習率0.1,衰減后最小學習率限定為0.01,每次輸入數據量100,共進行了10次實驗,最好正確率為95.5%,最低正確率為93.5%,平均正確率為94.21%,得到了較為滿意的實驗結果,且可以看出該模型具有較好的穩定性。圖2所示為其中一次訓練結果,驗證集正確率為94.1%。
3.3 移動端應用
TensorFlow Lite是Google公司為應用開發者提供的便于在移動平臺部署人工智能的框架,在該框架下可以部署用自己的數據集訓練出的模型。
本應用實現基于Android Studio平臺,SDK編譯版本為28,最低系統版本要求為安卓5.0。首先將前文中訓練所得到的基于本論文數據集的新模型固定好網絡的參數后進行轉換得到tflite量化模型。然后將模型導入新建的安卓應用工程中,基于TensorFlow Lite框架在工程中實現目標功能。主要實現功能包括:模型導入,圖片導入和預測功能。最終應用識別效果如圖3所示。總計進行了100張圖片測試,9張識別錯誤,測試正確率為91%,達到了預期的識別效果。
4 總結
本論文基于遷移學習方法靈活使用了InceptionV3網絡,調整了局部網絡結構并優化了參數,得到了理想的分類效果。構建并擴展了新的數據集使用,有效阻止了訓練中模型對局部特征的依賴性,增強了模型泛化能力和穩定性能。對遷移學習二次訓練得到的新模型進行了跨平臺移植,并基于此新模型開發了安卓端手機應用,增加了模型選擇功能,有效增強了應用的可拓展性,并在實際應用效果上得到了較為滿意的結果。
參考文獻:
[1] 廖恩紅,李會芳,王華,等.基于卷積神經網絡的食品圖像識別[J].華南師范大學學報(自然科學版),2019,51(4):113-119.
[2] 何杰.基于集成深度卷積神經網絡的中餐菜品識別[D].華南理工大學,2018.
[3] 董天驕.基于卷積神經網絡的飲食分類與識別[D].杭州電子科技大學,2018.
[4] 梁華剛,溫曉倩,梁丹丹,等.多級卷積特征金字塔的細粒度食物圖片識別[J].中國圖像圖形學報,2019,24(6):870-881.
[5] 蘇國煬.基于圖像的中餐菜品分割與識別[D].浙江大學,2019.
[6] 丁偉利,李勇,陳瑜.基于區域顏色特征的食物類別識別算法[J].電子科技,2016,29(6):1-4.
[7] 汪聰.基于機器視覺的菜品智能識別技術研究[D].華南理工大學,2019.
[8] Fan-yu Kong,Hong-sheng He,Hollie A.Raynor,Jin-dong Tan.DietCam:Multi-view regular shape food recognition with a camera phone[J].Pervasive and Mobile Computing,2015,19(10):10-16.
[9] KIM YONG SUK.Food Recognition and Diet Management System Using Deep Learning[P].KR20190091774,2019-08-07.
[10] Szegedy C,Vanhoucke V,Ioffe S,et al.Rethinking the Inception Architecture for Computer Vision[J].Computer Science,2015(12).
【通聯編輯:張薇】