張 鋼, 張石清
(1.廣州質(zhì)量監(jiān)督檢測(cè)研究院, 廣州 511447; 2.臺(tái)州學(xué)院 電子與信息工程學(xué)院, 浙江 臺(tái)州 318000)
近年來(lái),隨著人工智能的發(fā)展,以及無(wú)人自動(dòng)售貨機(jī)等智能設(shè)備的普及,自助餐廳中對(duì)飯菜種類的自動(dòng)識(shí)別技術(shù)開(kāi)始備受研究者的關(guān)注。目前,自助餐廳對(duì)顧客所選的食物價(jià)格進(jìn)行結(jié)算時(shí),大多是通過(guò)收銀員人工計(jì)價(jià)的方式實(shí)現(xiàn),如掃描食物包裝的條形碼或用識(shí)別托盤底部的射頻芯片方式來(lái)計(jì)算出價(jià)格。這種人工計(jì)價(jià)方式,效率低下,在就餐人員數(shù)量多的時(shí)候會(huì)給收銀員工作帶來(lái)諸多不便。
為了克服上述不便,近年來(lái)有研究者開(kāi)始從計(jì)算機(jī)視覺(jué)方法[1-10]的角度來(lái)實(shí)現(xiàn)食物圖像的自動(dòng)識(shí)別。例如,Joutou等[3]提出采用多核學(xué)習(xí)(Multiple Kernel Learning,MKL)方法融合顏色、紋理以及尺度不變特征變換(Scale Invariant Feature Transform,SIFT)等特征用于食物圖像識(shí)別。Yang等[4]提出采用多維度的直方圖統(tǒng)計(jì)參數(shù)作為局部特征用于食物圖像識(shí)別。Herranz等[5]提出一種基于局部約束線性編碼(Locality-constrained Linear Coding,LLC)特征的概率圖模型用于實(shí)現(xiàn)食物圖像的分類。Matsuda等[6]采用融合梯度方向直方圖 (Histogram of Oriented Gradient,HOG)和Gabor小波變換特征用于食物圖像的邊緣檢測(cè)和識(shí)別。郭禮華等[10]對(duì)SIFT特征、顏色直方圖特征、梯度方向直方圖、Gabor特征等在食物圖像識(shí)別方面的性能進(jìn)行了分析與比較。然而,這些方法都是采用手工設(shè)計(jì)的特征用于食物圖像識(shí)別,而手工特征是一種低層次的特征,用于食物圖像識(shí)別的判別力還不夠。
為了解決上述問(wèn)題,近年來(lái)發(fā)展起來(lái)的一種深度學(xué)習(xí)方法,如深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Networks, DCNN)[11]可能提供了線索。DCNN利用多層次的卷積和池化操作來(lái)自動(dòng)學(xué)習(xí)出圖像數(shù)據(jù)的高層次屬性特征,捕獲數(shù)據(jù)本身的豐富內(nèi)涵信息,同時(shí)也避免了復(fù)雜的手工特征的設(shè)計(jì)過(guò)程。目前,DCNN已經(jīng)被廣泛用于圖像檢測(cè)與分割[12]、人臉識(shí)別[13]、醫(yī)學(xué)圖像診斷和識(shí)別[14]等領(lǐng)域,但在食物圖像識(shí)別領(lǐng)域中的應(yīng)用還很少見(jiàn)。
此外,深度學(xué)習(xí)方法性能的發(fā)揮依賴于海量的數(shù)據(jù)支持。由于獲取大量有標(biāo)簽的數(shù)據(jù)樣本較為困難,現(xiàn)有的食物圖像數(shù)據(jù)庫(kù)的規(guī)模往往不是很大,屬于小樣本數(shù)據(jù)集。在這種數(shù)據(jù)量不足的情況下,訓(xùn)練出的深度學(xué)習(xí)網(wǎng)絡(luò)模型容易出現(xiàn)“過(guò)擬合”,無(wú)法發(fā)揮出深度學(xué)習(xí)方法的優(yōu)勢(shì),即對(duì)于深度學(xué)習(xí)方法存在所謂的“數(shù)據(jù)瓶頸”問(wèn)題。
近年來(lái),遷移學(xué)習(xí)(Transfer Learning)[15]作為一種新興發(fā)展起來(lái)的機(jī)器學(xué)習(xí)理論,備受學(xué)術(shù)界和工業(yè)界的關(guān)注。在當(dāng)前大數(shù)據(jù)時(shí)代背景下,有些領(lǐng)域已存在大規(guī)模的標(biāo)注過(guò)的數(shù)據(jù)樣本可用來(lái)訓(xùn)練和建立學(xué)習(xí)模型,而在一些其他一些領(lǐng)域難以得到所需要的大量標(biāo)注過(guò)的數(shù)據(jù)樣本。可見(jiàn),遷移學(xué)習(xí)可以從現(xiàn)有的數(shù)據(jù)中遷移知識(shí),用來(lái)幫助將來(lái)的學(xué)習(xí)。近年來(lái),遷移學(xué)習(xí)理論已被成功用于跨域(cross-domain)的文本分類[16]、圖像分類[17]、生物醫(yī)學(xué)[18]等領(lǐng)域。
考慮到深度學(xué)習(xí)與遷移學(xué)習(xí)方法各有優(yōu)勢(shì)的特點(diǎn),本文提出一種基于深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN)和遷移學(xué)習(xí)的食物圖像識(shí)別方法。該方法首先采用ImageNet圖像數(shù)據(jù)(集100萬(wàn)張圖片,1 000種類別)上預(yù)訓(xùn)練好的AlexNet[11]深度模型初始化所采用的網(wǎng)絡(luò)參數(shù),然后利用微調(diào)(Fine-tuning)的訓(xùn)練方式在自建的小規(guī)模食物圖像數(shù)據(jù)庫(kù)集上進(jìn)行遷移學(xué)習(xí)。這樣不僅可以減輕食物圖像數(shù)據(jù)不足的壓力,也可以充分利用DCNN強(qiáng)大的特征學(xué)習(xí)能力,使得DCNN能夠從原始的食物圖像中學(xué)習(xí)得到高層次的屬性特征。最后,采用線性支持向量機(jī)(Support Vector Machines, SVM)實(shí)現(xiàn)食物圖像的分類。在自建的食物圖像數(shù)據(jù)集上的實(shí)驗(yàn)測(cè)試結(jié)果,表明了該方法的有效性。
圖1給出了本文提出的基于DCNN和遷移學(xué)習(xí)的食物圖像識(shí)別模型。該模型選取AlexNet深度模型作為基礎(chǔ)網(wǎng)絡(luò)架構(gòu),用于獲取食物圖像的高層次屬性特征,從而實(shí)現(xiàn)食物圖像的識(shí)別。該方法包括3個(gè)步驟:① 食物圖像的預(yù)處理;② AlexNet的訓(xùn)練和遷移學(xué)習(xí);③ 基于SVM的食物圖像分類。
圖1 基于DCNN和遷移學(xué)習(xí)的食物圖像模型
(1) 食物圖像的預(yù)處理。在建立食物圖像數(shù)據(jù)集的時(shí)候,對(duì)每一張相機(jī)拍攝采集到的食物圖像進(jìn)行人工裁剪處理,保留包含碗碟部分的食物圖像作為圖像樣本。然后對(duì)每一張圖像樣本統(tǒng)一采樣到像素為64×64×3的大小。由于AlexNet模型的輸入圖像像素大小是227×227×3,因此還需將每一張像素為64×64×3的圖像縮放到227×227×3的大小,作為DCNN的輸入。
(2) AlexNet網(wǎng)絡(luò)的訓(xùn)練和遷移學(xué)習(xí)。AlexNet網(wǎng)絡(luò)主要由5個(gè)卷積層(Conv1~Conv5)、3個(gè)池化層(Pool1、Pool2、Pool5)以及兩個(gè)全連接層(FC6、FC7)構(gòu)成。假如輸入數(shù)據(jù)為X,網(wǎng)絡(luò)對(duì)應(yīng)的輸出為Z,該網(wǎng)絡(luò)通過(guò)訓(xùn)練學(xué)習(xí)得到一個(gè)參數(shù)為Θ的非線性映射函數(shù)F(·|Θ),即
Z=>F(X|Θ)=
fl(…f2(f1(X|θ1)|θ2)|θl)
(1)
式中,fl(·|θl)表示網(wǎng)絡(luò)中第l層。
卷積層的作用是特征提取,由一些經(jīng)數(shù)據(jù)驅(qū)動(dòng)進(jìn)行自主學(xué)習(xí)的卷積核所組成。卷積層提取特征的計(jì)算過(guò)程表示如下:
Zl=fl(Xl|θl)=h(W?Xl+b)
(2)
式中:參數(shù)θl=[W,b];W為卷積核;b為矢量偏差;h(·)為激活函數(shù);?為二維卷積運(yùn)算。
池化層通常用于卷積層之后,對(duì)卷積特征圖進(jìn)行下采樣后構(gòu)成池化特征圖。常用的兩種池化方法是平均池化(Average-pooling)和最大池化(Max-pooling),即計(jì)算出卷積核的激活函數(shù)在某一區(qū)域范圍內(nèi)輸出的平均值或最大值。本文采用最大池化方法。
全連接層實(shí)際上就是傳統(tǒng)神經(jīng)網(wǎng)絡(luò)層的隱藏層部分,它的每個(gè)神經(jīng)元結(jié)點(diǎn)都與上一層的每個(gè)神經(jīng)元結(jié)點(diǎn)相連接,同一層的神經(jīng)元結(jié)點(diǎn)互不相連。全連接層的激活函數(shù)一般采用sigmoid或tanh函數(shù),其輸出可表示為:
Zl=fl(Xl|θl)=h(WXl+b)
(3)
式中,W和Xl之間為矩陣乘積,而不是卷積運(yùn)算。對(duì)于AlexNet的訓(xùn)練過(guò)程如下:① 將ImageNet數(shù)據(jù)上預(yù)訓(xùn)練好的AlexNet模型參數(shù)拷貝到本文采用的網(wǎng)絡(luò),從而實(shí)現(xiàn)網(wǎng)絡(luò)參數(shù)初始化任務(wù)。② 將AlexNet中的softmax輸出層的類別數(shù),改成目標(biāo)食物圖像數(shù)據(jù)的類別數(shù)。③ 采用后向傳播(Back Propagation, BP)算法在目標(biāo)食物圖像數(shù)據(jù)集上進(jìn)行遷移學(xué)習(xí),實(shí)現(xiàn)網(wǎng)絡(luò)參數(shù)的更新。
(3) 基于SVM的食物圖像分類。當(dāng)完成AlexNet的訓(xùn)練之后,提取其最后一層全連接層(FC7)產(chǎn)生的4096-D 屬性特征作為DCNN最終學(xué)習(xí)到的高層次屬性特征,然后輸入到線性支持向量機(jī)(SVM)分類器,用于實(shí)現(xiàn)食物圖像的識(shí)別任務(wù)。
為了測(cè)試本文提出方法的有效性,我們建立了一個(gè)小規(guī)模的食物圖像數(shù)據(jù)集。該數(shù)據(jù)集包含6種飯菜:豆芽(2 135個(gè))、紅燒獅子頭(2 012個(gè))、黃豆豬腳(2 343個(gè))、雞蛋羹(2 007個(gè))、麻婆豆腐(2 105個(gè))、萵苣炒肉(2 214),共計(jì)12 816個(gè)食物圖像樣本。圖2列出了這6種飯菜的食物圖像樣例。
(a) 豆芽
(d) 雞蛋羹
此外,為了與其他手工提取的特征性能進(jìn)行比較,本文也測(cè)試了梯度方向直方圖(HOG)和Gabor小波兩種手工類特征輸入到線性支持向量機(jī)所取得的食物圖像識(shí)別性能。對(duì)于HOG和Gabor小波特征的提取,按照文獻(xiàn)[6]中的參數(shù)設(shè)置,最終提取2 916維度的HOG特征和1 536維度的Gabor小波變換特征。表1列出了不同方法所取得的食物圖像識(shí)別的性能。由表1可見(jiàn),本文方法取得的正確識(shí)別率為94.20%,而HOG和Gabor小波兩種手工特征取得的正確識(shí)別率分別為87.29%和89.80%。這表明了DCNN學(xué)習(xí)到的食物圖像特征比手工特征具有更好的判別力。主要原因是DCNN利用多層次的卷積和池化操作,能夠有效提取食物圖像的高層次屬性特征用于食物圖像的分類。
表1 不同方法所取得的食物圖像識(shí)別性能的比較
為進(jìn)一步獲取每種食物圖像的正確識(shí)別率,圖3所示給出了本文方法所取得的食物圖像識(shí)別結(jié)果的模糊矩陣。
圖3 本方法取得的識(shí)別結(jié)果的模糊矩陣
由圖3可見(jiàn),本文方法對(duì)這6種食物圖像的識(shí)別都取得了較高的性能,大部分食物圖像的正確識(shí)別率都達(dá)到了93%以上。這表明了該方法的有效性。不過(guò),識(shí)別率最低的是“紅燒獅子頭”,只有88.52%。主要原因是它與“黃豆豬腳”視覺(jué)上比較相似,導(dǎo)致這兩者容易相互混淆。
本文設(shè)計(jì)了一個(gè)基于DCNN和遷移學(xué)習(xí)的食物圖像識(shí)別方法。在自建的小規(guī)模的食物圖像數(shù)據(jù)集上的測(cè)試實(shí)驗(yàn)中,本文方法取得的食物圖像識(shí)別率達(dá)到了94.20%,優(yōu)于其他兩種手工類特征,如梯度方向直方圖(HOG)和Gabor小波。這表明本文采用深度卷積神經(jīng)網(wǎng)絡(luò)和遷移學(xué)習(xí)用于實(shí)現(xiàn)食物圖像的分類,能夠取得較好的識(shí)別性能。