韓筠 羅澤欽
DOI:10.16660/j.cnki.1674-098x.2011-5640-5137
摘 要:隨著消費觀念的升級,人們對飲食健康越來越重視,因此,食品圖像識別成為眾多領(lǐng)域研究的熱點。針對傳統(tǒng)食品圖像識別方法提取特征能力差、準確率差等問題,采用Google團隊發(fā)布的卷積神經(jīng)網(wǎng)絡模型——Inception_ResNet_V2模型對食品圖像進行識別和分類,該模型曾經(jīng)在圖像分類測試中實現(xiàn)了當下最好的成績。在Food-101數(shù)據(jù)集中隨機選取10個分類共計10000張圖片建立數(shù)據(jù)集Food-10,通過多層卷積神經(jīng)網(wǎng)絡提取圖像特征,自動進行分類,并將其與來自Kaggle庫中的圖像集做預測對比實驗。結(jié)果表明,Inception_ResNet_V2模型能夠較好地去除背景噪音,達到較好的識別效果,迭代次數(shù)為5000次時,Loss值降至0.0512,準確率可達到82.7%,為該模型用于食品圖像識別提供有價值的參考。
關(guān)鍵詞:食品圖像? 卷積神經(jīng)網(wǎng)絡? Inception_ResNet_V2-CNN模型? 圖像識別
中圖分類號:TP183? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2021)01(c)-0104-04
Food Image Recognition based on Convolution Neural Network
HAN Yun? LUO Zeqin
(Guangdong Ocean University, Zhanjiang, Guangdong Province, 524088 China)
Abstract: With the upgrading of consumption concepts, people pay more and more attention to healthy diet. Therefore, food image recognition has become a research focus in many fields. In view of the poor feature extraction ability and poor accuracy of traditional food image recognition methods, the Inception_ResNet_V2 model, a convolutional neural network model released by the Google team, is used to identify and classify food images. This model has achieved the current best results in the image classification test. Randomly select 10 categories in the Food-101 data set with a total of 10,000 images to build a data set Food-10, extract image features through a multi-layer convolutional neural network, automatically classify, and make predictions with the image set from the Kaggle library Comparative Experiment. The results show that this method can remove background noise well and achieve better recognition results. When the number of iterations is 5000, the loss value is reduced to 0.0512, and the accuracy rate can reach 82.7%. It provides a valuable reference for this model to be used in food image recognition.
Key Words: Food image; Convolutional neural network; Inception_ResNet_V2-CNN model; Image recognition
食品是人類生命生活的必需品,隨著物質(zhì)生活水平的不斷提高,人們對健康和飲食方面也越來越重視,因此,食品圖像識別成為計算機視覺、人工智能等許多領(lǐng)域的熱點研究課題。目前,食品圖像識別在食品自動化檢測、食品安全與管理、飲食營養(yǎng)、智慧餐廳自助結(jié)賬以及智能家居等方面都有著廣泛的應用。食品圖像識別屬于細粒度分類,食品圖像子類別間相似度高且類間差異性大,與普通圖像識別相比,其識別難度更大,因此食品識別一直是計算機識別領(lǐng)域的難題之一。隨著深度神經(jīng)網(wǎng)絡(深度學習)學習技術(shù)的提出,圖像識別領(lǐng)域也產(chǎn)生了巨大突破[1-4]。深度學習更容易提取特征,提取到的圖更加精確,模型識別的準確率也更高,因此,深度學習模型被成功應用到包括食品圖像識別在內(nèi)的眾多領(lǐng)域[5-10]。傳統(tǒng)的圖像識別是人們告訴計算機如何去做,而深度神經(jīng)網(wǎng)絡不需要告訴計算機如何處理問題,而是通過從輸入的數(shù)據(jù)中自動地反復學習,計算出理想的解決方案。在2012年的ImageNet大規(guī)模視覺挑戰(zhàn)賽(ILSVRC)中,Hinton教授小組的深度學習卷積神經(jīng)網(wǎng)絡AlexNet以高出第二名10%的性能優(yōu)勢取得了冠軍,值得一提的是,其他小組均采用了傳統(tǒng)的圖像識別方法,AlexNet網(wǎng)絡也成為了深度學習的經(jīng)典網(wǎng)絡結(jié)構(gòu)之一。之后,更多的更深的神經(jīng)網(wǎng)絡被提出。近幾年,深度學習在計算機視覺、搜索引擎和語音識別等方面都取得了優(yōu)異的表現(xiàn)。Tahir等[9]利用卷積神經(jīng)網(wǎng)絡(CNN)模型對5個不同種類的真菌進行分類,準確率達94.8%,效果較好;Philipsen等[10]利用CNN模型對不同種類家禽的不同部位內(nèi)臟進行識別,肌肉分類準確率高達91.58%;谷歌公司基于深度學習的圖像搜索引擎比之前的搜索引擎準確率得到大幅提升。在2015年的ILSVRC比賽中,微軟亞洲研究院的何愷明等人設計的深度殘差網(wǎng)絡(ResNet)達到了152層之深[11]。殘差網(wǎng)絡的提出有效緩解了深度學習中隨著網(wǎng)絡深度的加深而出現(xiàn)的梯度消失和梯度爆炸問題。受此啟發(fā),谷歌公司在2016年提出CNN分類模型Inception_ResNet_V2,這是一個在ILSVRC圖像分類基準上取得頂尖準確率的卷積神經(jīng)網(wǎng)絡[10]。它集成了早期的Inception_V3-CNN模型和微軟的ResNet的優(yōu)勢。相比于Inception_V3-CNN模型,Inception_ResNet_V2-CNN模型的網(wǎng)絡更深,模型訓練速度更快,結(jié)果更準確。鑒于此,采用Inception_ResNet_V2-CNN模型對食品圖像進行實驗,探討其識別食品圖像的能力。
1? 卷積神經(jīng)網(wǎng)絡(CNN)
卷積神經(jīng)網(wǎng)絡(CNN)[12]主要包括卷積層、池化層和全連接層。卷積層的作用是提取圖片每個小部分里具有的特征。卷積層中的卷積核會按照一定的步長遍歷圖像中的像素,當所有的像素點都至少被覆蓋一次后,就可以產(chǎn)生一個卷積層的輸出。機器一開始并不知道要識別的部分具有哪些特征,是通過與不同的卷積核相作用得到的輸出值,相互比較來判斷哪一個卷積核最能表現(xiàn)圖片的特征,比如我們要識別圖像中的某種特征(如曲線),也就是說,這個卷積核要對這種曲線有很高的輸出值,對其他形狀(如三角形)則輸出較低。卷積層輸出值越高,就說明匹配程度越高,越能表現(xiàn)該圖片的特征。池化層的任務有兩個,一是減少訓練參數(shù)的數(shù)量,降低卷積層輸出的特征向量的維度,二是減小過擬合現(xiàn)象,只保留最有用的圖片信息,減少噪聲的傳遞。最常見的兩種池化層的形式包括最大池化和均值池化。最大池化是選取指定區(qū)域內(nèi)最大的一個數(shù)來代表整片區(qū)域,而均值池化是選取指定區(qū)域內(nèi)數(shù)值的平均值來代表整片區(qū)域。由上面的論述可知,卷積層和池化層的工作就是提取特征,并減少原始圖像帶來的參數(shù)。然而,為了生成最終的輸出,模型還需要應用全連接層來生成一個符合需求的分類器。全連接層的工作原理和之前的神經(jīng)網(wǎng)絡學習很類似,需要把池化層輸出的張量重新切割成一些向量,乘上權(quán)重矩陣,加上偏置值,然后對其使用ReLU激活函數(shù),用梯度下降法優(yōu)化參數(shù)。
2? Inception_ResNet_V2-CNN模型
2.1 Inception網(wǎng)絡
Inception網(wǎng)絡又稱為GoogLeNet,是2014年提出的一種全新的深度學習結(jié)構(gòu),在當年的ILSVRC比賽中它和VGGNet均取得了優(yōu)異的成績。在這之前,卷積神經(jīng)網(wǎng)絡的結(jié)構(gòu)都是按照先卷積層后池化層這樣的順序鏈接,因此要提高模型性能,增加網(wǎng)絡深度和寬度是一個有效途徑,但會出現(xiàn)參數(shù)量過大,當數(shù)據(jù)量較少的時候,訓練出來的網(wǎng)絡容易過擬合,且網(wǎng)絡很深時會有梯度消失的現(xiàn)象等副作用。這些副作用制約著又深又寬的卷積神經(jīng)網(wǎng)絡的發(fā)展。Inception網(wǎng)絡使用了卷積核的并行合并(也稱為Bottleneck Layer),有效緩解了這些問題,因此,2014年之后,CNN模型在圖像分類領(lǐng)域有了極大的應用。Inception網(wǎng)絡具有局部拓撲結(jié)構(gòu),可以讓多個卷積層和池化層運算并行執(zhí)行,把每一層的輸出構(gòu)成一個很深的特征圖,并通過使用許多1×1的卷積核,減少計算量。在這之前的網(wǎng)絡為了提升學習能力都采用了隨機稀疏鏈接,以搭建出更好的框架,但稀疏數(shù)據(jù)結(jié)構(gòu)會降低計算速度,而Inception的設計能兼顧網(wǎng)絡結(jié)構(gòu)的稀疏性和網(wǎng)絡的高效運算性能。Inception的結(jié)構(gòu)比較復雜,并經(jīng)歷了幾次版本的迭代,一直到目前最新的Inception-v4,每個版本在性能上都有一定的提升。
2.2 深度殘差網(wǎng)絡(ResNet)
理論上,隨著網(wǎng)絡深度的加深,模型的性能會不斷提高,即網(wǎng)絡深度越深越好?;诖?,CNN分類網(wǎng)絡從Alexnet的7層發(fā)展到了VGG的16層乃至19層,后來的Inception_V1模型達到了22層??墒请S著網(wǎng)絡的加深,人們發(fā)現(xiàn)模型會出現(xiàn)訓練集準確率下降、難以收斂、模型過擬合等問題,這說明當網(wǎng)絡變得很深以后,訓練錯誤會越來越多,深度網(wǎng)絡變得更加難以訓練了。針對這個問題何愷明等人在2015年提出了一種全新的網(wǎng)絡結(jié)構(gòu),即深度殘差網(wǎng)絡(Deep residual network, ResNet),其核心思想是直接跳過一個或多個層,引入一個所謂的恒等快捷連接(Identity shortcut connection),如圖1所示,這使得下一層不用學習上一層的整個部分,而只需要學習其輸出的一部分,即殘差。此外,ResNet在激活函數(shù)之前使用了Batch Normalization (BN)[45]。這種設計在訓練更深網(wǎng)絡的同時,又能保證良好的性能。ResNet網(wǎng)絡的收斂速度快,且分類效果更好,它的出現(xiàn)使得神經(jīng)網(wǎng)絡的層數(shù)可以超越之前的約束,達到幾十層、上百層甚至上千層,因為隨著網(wǎng)絡深度的增加,模型的性能可以得到有效提升,這為高級語義的特征提取和分類提供了可行性。ResNet一經(jīng)問世便在ILSVRC比賽中獲得三項冠軍,這個模型除了取得輝煌的成績之外,更重要的意義是啟發(fā)了對神經(jīng)網(wǎng)絡的更多的思考。可以說ResNet的提出是CNN圖像史上的一件里程碑事件。Inception-ResNet網(wǎng)絡是在Inception模塊中引入ResNet的殘差結(jié)構(gòu),集成了Inception的檢測準和ResNet的訓練速度快的優(yōu)勢。
3? 結(jié)果與分析
3.1 實驗環(huán)境與數(shù)據(jù)
采用Keras深度學習框架,實驗環(huán)境支持多GPU并行運算,操作系統(tǒng)采用Linux,開發(fā)語言是Python3.6。實驗的數(shù)據(jù)來自Kaggle平臺分享的數(shù)據(jù)集Food101,原始的圖像數(shù)據(jù)集有101種食品類型,每個類別有1000張,共計101000張圖像數(shù)據(jù),從中隨機抽取10種食品圖片進行實驗,并用Python中PIL庫的Image工具統(tǒng)一成256×256的分辨率。將這10種食品類別共計10000張圖片定義為數(shù)據(jù)集Food-10,采用img_to_array函數(shù)對圖像進行預處理,并將其劃分成2個部分,80%作為訓練集,20%作為測試集。
3.2 訓練結(jié)果與分析
采用預先在Keras中訓練好的Inception_ResNet_V2模型。修改該模型的最后一層全連接層的參數(shù),即將模型最終的密集層舍棄,采用平均池化,將最終的類別改成10類,激活函數(shù)選用Softmax函數(shù)。設置ModelCheckpoint,按照驗證集的準確率進行保存。設置Loss、Top1、Top3和Top5并實時監(jiān)控訓練過程。設置每步的Batch-size為8,學習的輪數(shù)設置為10,輸入數(shù)據(jù),開始訓練。
經(jīng)過10輪的訓練,得到的模型的準確率為77.05%,Loss值為0.7662,效果不夠理想。于是重新導入這個模型,再對它進行10輪訓練。這一次得到的模型的準確率為80.45%,Loss值為0.1572。與第一次相比,準確率有提升,Loss值也明顯下降了。為了探究更好的準確率,在這個基礎(chǔ)上,對Batch_size進行了重新設置。在一定的范圍內(nèi)增大Batch_size,可以使內(nèi)存的使用率提高,跑一輪的迭代次數(shù)減少,模型確定的下降方向變準,減小訓練震蕩從而達到提高準確率的效果。將Batch-size的數(shù)值分別設置為8、16、24、32、40,因為Batch變大要達到相同準確率必須要增大Epoch。所以學習輪數(shù)分別設置為5、10、15、20、25。再分別進行實驗,表1統(tǒng)計了不同Batch_size下模型的準確率。表中的Val_loss、Val_acc_top1、Val_acc_top3和Val_acc_top5分別是指測試集上的損失值、排名第一的類別與實際結(jié)果相符的準確率、排名前三的類別包含實際結(jié)果的準確率和排名前五的類別包含實際結(jié)果的準確率;而Loss、Acc_top1、Acc_top3和Acc_top5分別是指訓練集上的相應的結(jié)果??梢钥闯觯柧毤蜏y試集上的損失值和準確率并不一致,有時候模型在訓練集上取得理想的精度,但是在測試集上的表現(xiàn)并不理想。這里模型的準確率主要以Val_acc_top1值為準,兼顧其他參數(shù)的取值,從表1可以看出,當Batch_size為32,Epoch為20,即迭代次數(shù)為5000次時,Loss值降至0.0512,準確率可達到82.7%。同時可以看到,在訓練集中,當Batch_size為40時,準確率相較于Batch_size為32時并沒有得到提升,反而還下降了,Loss值也變大了,所以不是Batch-size越大越好。此外,可以推測Batch_size的最優(yōu)解在24~40之間,此時準確率達到最大。
4? 結(jié)語
采用目前頂尖的卷積神經(jīng)網(wǎng)絡模型對食品圖像進行識別分類,在數(shù)據(jù)集Food-101中的隨機選出10個分類共10000張圖像集進行實驗,并考察了不同的batch_size對模型準確率的影響。結(jié)果表明,當Batch_size為32,epoch為20,即迭代次數(shù)為5000次時,Loss值降至0.0512,準確率可達到82.7%;當Batch_size為40時,訓練集的準確率相較于Batch_size為32時并沒有得到提升,反而還下降了,Loss值也變大了,因此,可以推測Batch_size的最優(yōu)解在24到40之間,模型準確率將會進一步提高,由于時間等條件的限制這里沒有進一步進行實驗。
參考文獻
[1] 張琦,張榮梅,陳彬.基于深度學習的圖像識別技術(shù)研究綜述[J].河北省科學院學報,2019,36(3):28-36.
[2] 羅曦.淺談深度學習在圖像識別領(lǐng)域的應用現(xiàn)狀與優(yōu)勢[J].科技資訊,2020(3):21-22.
[3] 江偉忠.基于深度學習的行人檢索與模型壓縮[D]. 北京:中國科學院大學,2020.
[4] 屈薇.基于深度學習的圖像識別算法研究[J].數(shù)字技術(shù)與應用,2019,37(9):36-37.
[5] 田小路,張莉敏.基于卷積神經(jīng)網(wǎng)絡的寵物狗種類識別[J].信息技術(shù)與信息化,2019(8):21-22.
[6] 廖恩紅,李會芳,王華,等.基于卷積神經(jīng)網(wǎng)絡的食品圖像識別[J].華南師范大學學報:自然科學版, 2019,51(4):113-119.
[7] 厲溢成.基于web的食品圖像識別系統(tǒng)的設計與實現(xiàn)[D].武漢:武漢輕工大學,2019.
[8] 林云森, 范文強,姜佳良.基于深度學習的水果識別技術(shù)研究[J]. 光電技術(shù)應用,2019,34(6):45-58
[9] Tahir MW, Zaidi NA, Rao AA, et al. A fungus spores dataset and a convolutional neural network based approach for fungus detection [J].IEEE Trans Nanobiosci,2018,17(3):281–290.
[10] Philipsen MP, Dueholm JV, Jorgensen A, et al. Organ segmentation in poultry viscera using RGB-D [J]. Sensors, 2018, 18(1): 1-15.
[11] He KM, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]. Proceedings of the IEEE conference on computer vision and pattern recognition,2016:770-778.
[12] Yu D, Wang H, Chen P, et al. Mixed pooling for convolutional neural networks [M]. Rough Sets and Knowledge Technology. Springer International Publishing,2014:364-375.