段雪梅,朱 明,鮑天龍
(中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,合肥 230000)
目前社會上的中式快餐店越來越多[10].隨著深度學(xué)習(xí)和人工智能全面應(yīng)用于實踐,釋放人力,機(jī)器自動進(jìn)行結(jié)賬可能很快就會成為現(xiàn)實.此外,如果能從每天的日常飲食中準(zhǔn)確的知道菜品名稱,從而能得到其營養(yǎng)成分對于我們的健康也是很有益的,但是如果僅靠人力每天進(jìn)行標(biāo)注菜品名稱又是一件很費時費力的事.因此尋找一個更有效的中餐分類和自動檢索方法是一個有意義的課題.
圖1 炒空心菜和炒青菜Fig.1 Fried mater convolvulus and saute vegetable
針對菜品識別的研究,目前已經(jīng)提出了一些比較優(yōu)異的算法,Yang等人使用傳統(tǒng)的機(jī)器學(xué)習(xí)方法尋找菜品的特征并結(jié)合svm進(jìn)行分類[4,5,12,14],Martinel發(fā)現(xiàn)菜品特征在垂直結(jié)構(gòu)上的一致性,并利用這種一致性進(jìn)行菜品的識別[13],Xu等人利用了圖像拍攝的位置信息[15,16]來豐富圖像的特征,使得識別結(jié)果更加準(zhǔn)確.隨著深度學(xué)習(xí)的提出,有人提出利用深度學(xué)習(xí)進(jìn)行菜品分類,Hassannejad等通過加深網(wǎng)絡(luò)的深度進(jìn)一步提高了準(zhǔn)確率[6].但以上很多方法針對的菜品種類比較廣泛,包括西餐中的漢堡,薯條等快餐以及沙拉等甜點[7],種類間區(qū)別度比較大.但對于中國菜來說,由于很多中國菜之間的高度相似性,有些菜品之間的差異僅存在與細(xì)微之處,例如炒大白菜與娃娃菜,炒青菜與油麥菜,芹菜肉絲與芹菜香干,炒空心菜和炒青菜,如圖1所示.有的是因為菜品做法本身的高相似性,有的是因為配料間細(xì)微的不同,導(dǎo)致區(qū)分難度很大.傳統(tǒng)的機(jī)器學(xué)習(xí)方法已經(jīng)不足以將其進(jìn)行有效的區(qū)分開來,因此,本文基于深度卷積神經(jīng)網(wǎng)絡(luò),研究了一些新的網(wǎng)絡(luò)結(jié)構(gòu)和分類算法,將它們結(jié)合起來得到了更好的效果.
鑒于以外對中國菜分類的研究太少,現(xiàn)有的一些研究方法也只是使用了圖像的傳統(tǒng)特征結(jié)合普通的分類網(wǎng)絡(luò),效果不夠明顯.本文針對中國菜的特點,基于遷移學(xué)習(xí),提出了一種新的網(wǎng)絡(luò)結(jié)構(gòu)和兩階段式訓(xùn)練方法.
首先考慮了兩方面的因素,第一是由于菜品的種類較多,而一味地加深網(wǎng)絡(luò)結(jié)構(gòu)只會導(dǎo)致訓(xùn)練時間和測試時間很長,而且需要更大的訓(xùn)練數(shù)據(jù)量.第二是由于某些菜品間的相似性,導(dǎo)致所屬類別的粒度更加精細(xì),需要想辦法提取出更為微小的特征.針對這兩種情況,本文首先采用雙線性模型[1]作為基礎(chǔ)的模型并得到雙線性特征更為緊湊的表達(dá)[11],后續(xù)通過一個大裕量的softmax函數(shù)對特征進(jìn)行分類[3],通過加入一個裕量使得分類器的學(xué)習(xí)難度增大,從而得到更有區(qū)分度的特征.
卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)由卷積層,非線性激活層,池化層構(gòu)成.通常將一幅圖像通過設(shè)定的卷積核進(jìn)行卷積,然后通過一個激活函數(shù),再通過池化層,對圖像進(jìn)行子抽樣,在保留了大部分特征的同時又減少了參數(shù)冗余數(shù)量.最后將提取出的特征經(jīng)過全連接層,根據(jù)損失函數(shù)的梯度變化利用反向傳播算法更新網(wǎng)絡(luò)權(quán)值和偏置.
2.2.1 傳統(tǒng)雙線性模型
雙線性模型(bilinear cnn model)[1]由兩個并聯(lián)的CNN模型構(gòu)成.可以用四元組來表達(dá).B=(fA,fB,P,C),其中,B表示雙線性函數(shù),fA,fB分別表示兩個網(wǎng)絡(luò)的特征提取函數(shù),P為下采樣函數(shù),C為分類函數(shù).雙線性模型就是計算輸入圖像I兩個特征之間的矩陣外積,將圖像在位置l處的特征進(jìn)行叉乘組合,即:
bilinear(l,I,fA,fB)=fA(l,I)TfB(l,I)
(1)
兩個特征的維度D必須相同.再用求和池化函數(shù)或最大池化來綜合不同位置的特征,得到一個全局雙線性特征.
(2)
選擇這兩個池化函數(shù)的目的之一也是為了消除特征位置的信息,將特征變成無序的.因為對于中國菜來說,局部特征的位置區(qū)域是沒有規(guī)律的.
最后將雙線性特征經(jīng)過符號平方根變換、并增加l2標(biāo)準(zhǔn)化,之后再輸入分類器完成分類任務(wù).
圖2 雙線性模型Fig.2 Bilinear cnn model
對于本文的中國菜數(shù)據(jù)集來說,只有類別信息,很難再人工進(jìn)行一些局部信息的標(biāo)注從而實現(xiàn)強(qiáng)監(jiān)督分類方法[17],而對于公式(2)生成的雙線性特征,L表示位置,由于特征的位置維度被積分掉了,因此會得到跟位置無關(guān)的雙線性特征.另外,外積導(dǎo)致特征的維度D增大為原來的平方.
可以解釋為,網(wǎng)絡(luò)A的作用是對中國菜進(jìn)行定位,即完成局部區(qū)域檢測工作,而另一個網(wǎng)絡(luò)B則是用來對網(wǎng)絡(luò)A檢測到的局部位置進(jìn)行特征提取.如圖2所示.兩個網(wǎng)絡(luò)相互協(xié)調(diào)作用,來完成物體、局部區(qū)域的檢測與特征提取.因此相較于只有一個網(wǎng)絡(luò)的結(jié)構(gòu)來說得到的特征是更豐富,更細(xì)致的.
2.2.2 壓縮雙線性池化
對于圖2的模型來說,雖然雙線性特征能更好的表征一個圖像,但是,即使是普通的VGG網(wǎng)絡(luò),最后一層參數(shù)維度就可能高達(dá)上百萬量級,對計算和存儲的要求太大.不僅訓(xùn)練起來非常的困難,對后續(xù)研究也造成了很大的不便.于是本文采用了Gao等人提出的compact bilinear pooling[2](以下簡稱cbp),對雙線性特征進(jìn)行多項式核化表示,使用了tensor sketch[11]和Random Maclaurin投影算法將維度降到了幾千維,大大優(yōu)化了網(wǎng)絡(luò)的結(jié)構(gòu),減少了計算的時間,并且保持了網(wǎng)絡(luò)良好的可區(qū)分性.
B(X),B(Y)=??
(3)
可見最后可以簡化為一個二階多項式核,用k(x,y)表示,由2.1節(jié)可知,B(X)的維度為C2.
此時可以尋找與k(x,y)相似的另一個映射φ(x),維度為d,且d?C2,可以通過tensor sketch[11]和random maclaurin兩種方法得到,且滿足
〈φ(x),φ(y)〉≈k(x,y)
(4)
此時降維到d后的內(nèi)積和約等于原來C2維的內(nèi)積,從而:
B(X),B(Y)?xs,yu?2≈
(5)
這里的C(X)也就是compact bilinear表示,幾乎具有與原始雙線性特征完全一樣的表征能力,但維度大大減小,只有僅僅幾千維.
交叉熵?fù)p失函數(shù)結(jié)合softmax分類函數(shù)是很多卷積神經(jīng)網(wǎng)絡(luò)的最后一個組成部分,不僅在計算上方便,而且收斂速度快,在很多情況下都取得了很好的效果.在這里將最后一個全連接層、softmax函數(shù)、交叉熵?fù)p失函數(shù)三者的結(jié)合簡稱為softmax loss.
當(dāng)定義第i個輸入特征Xi以及它的標(biāo)簽yi時,softmax loss記為:
(6)
然而,當(dāng)前的softmax loss并沒有強(qiáng)調(diào)類內(nèi)的緊湊性,以及類間的分離性.對于中國菜來說,某些菜品間的高度相似性使得它們所產(chǎn)生的雙線性特征也非常的接近,從而使得類與類之間的間距非常小.于是后來wen等人提出了center loss[8],通過優(yōu)化每個batch中所有樣本離樣本中心的平方和來減小類內(nèi)距離,從而提高分類質(zhì)量.center loss的定義如下:
(7)
xi表示全連接層之前的特征,cyi表示每一類的中心,會在每一輪訓(xùn)練中進(jìn)行更新,主要目的是希望類內(nèi)距離越來越小.
后來liu提出了一個大裕量的softmax損失函數(shù)[3](large margin softmax loss,以下表格中簡稱為L-softmax),通過增加一個裕量,來加大同種類別的學(xué)習(xí)難度,顯式的促進(jìn)了同種類別特征間的相似性以及不同種類別特征間的分離性,在很多數(shù)據(jù)集上都取得了比softmax loss更好的效果.
‖W1‖‖x‖cos(θ1)>‖W2‖‖x‖cos(θ2)
(8)
從而能得到x來自類別1的正確結(jié)果.如果在這里增加一個正整數(shù)變量m,從而在損失函數(shù)里產(chǎn)生一個決策裕量,使得上述不等式能夠得到更加嚴(yán)格的約束,如下:
‖W1‖‖x‖cos(θ1)>‖W1‖‖x‖
cos(mθ1)>‖W2‖‖x‖cos(θ2)
(9)
從而得到Large margin softmax loss的定義如下:
(10)
(11)
當(dāng)m越大時,分類的邊界越大,學(xué)習(xí)難度也越高.因此加大了同類別學(xué)習(xí)的難度,使得類間距離更大,對于特征的可區(qū)別性變得更強(qiáng)了.同時由于損失函數(shù)復(fù)雜度的增加,減少了模型的過擬合.但是并不是說m取值越大越好,當(dāng)m超過了某一個閾值,分類器會因為學(xué)習(xí)難度太大而產(chǎn)生更差的分類特征.通常m取值不超過4,m等于1時相當(dāng)于是原始的softmax函數(shù),此時學(xué)習(xí)難度是最小的.
本文將大裕量損失函數(shù)與改進(jìn)的雙線性模型結(jié)合,并采用一種兩階段的訓(xùn)練方式,用在中國菜分類上,證明了其比原始的softmax loss以及center loss都能取得更好的效果.
本文采用了2017年一個新的中國菜數(shù)據(jù)集[4],一共有208類.這里簡稱為Chinesefood-208.訓(xùn)練集平均每一類有700張圖片,總共有14萬張.測試集平均每一類有100張圖片,總共有20253張.為了后續(xù)研究的實用性,我從中選了生活中常見的101個菜,組成另外一個數(shù)據(jù)集,稱為Chinesefood-101.
在實際的訓(xùn)練中,由于數(shù)據(jù)集和設(shè)備的限制,很難從頭開始訓(xùn)練一個網(wǎng)絡(luò),于是本文采用了遷移學(xué)習(xí)的思想,用ImageNet訓(xùn)練好的網(wǎng)絡(luò)模型來初始化前面卷積層的網(wǎng)絡(luò)參數(shù),完整的結(jié)構(gòu)模型如圖3所示.
本文分別用vgg16和vgg19-BN對上述兩個數(shù)據(jù)集進(jìn)行了訓(xùn)練,數(shù)據(jù)預(yù)處理部分采取隨機(jī)翻轉(zhuǎn),先縮放到512×512再隨機(jī)裁剪到448×448,vgg16添加了dropout層,vgg19添加了batchnorm層.實驗均在caffe框架下進(jìn)行訓(xùn)練與測試.為了增加網(wǎng)絡(luò)的泛化性,給訓(xùn)練集的圖片隨機(jī)改變了亮度.首先是幾個對比實驗的訓(xùn)練.
圖3 完整模型結(jié)構(gòu)Fig.3 Integrated model structure
在利用centerloss作為損失函數(shù)進(jìn)行訓(xùn)練時,為了使模型能更快的收斂,我們給softmax loss和centerloss賦予一個相同量級的權(quán)重.由表1、表3中的結(jié)果可知,增加了centerloss的模型準(zhǔn)確率低于原始的利用softmax作為損失函數(shù)的模型.原因可能在于centerloss對類間差距較大的特征效果比較好,如人臉數(shù)據(jù),而由于菜品之間相似度比較大因此只是減小了類內(nèi)距離還不夠,難以取得很好的效果.
表1 用vgg16訓(xùn)練得到的準(zhǔn)確率Table 1 Accuracy matrix using vgg16-net
表2 特定菜品的準(zhǔn)確率變化Table 2 Accuracy changes on some specific kinds
在使用壓縮的雙線性模型進(jìn)行訓(xùn)練時,以448×448的圖像作為輸入,為了使模型能更好的收斂,先固定前面所有層的參數(shù)只訓(xùn)練最后一層全連接層,初始學(xué)習(xí)率設(shè)為1,每20個輪次學(xué)習(xí)率縮小10倍,接著再整體調(diào)優(yōu),初始學(xué)習(xí)率設(shè)為0.01.由表1、表3可以看出,調(diào)優(yōu)后的雙線性模型明顯優(yōu)于普通的深度卷積模型.在利用大裕量softmax loss作為損失函數(shù)進(jìn)行訓(xùn)練時,裕量越大,同類別學(xué)習(xí)的難度也越大.實驗結(jié)果也容易得出并不是margin越大學(xué)習(xí)效果越好,可能難度到了一定程度分類器就很難完成了.在本實驗中取margin=3的效果比較好,margin=4的時候模型很難收斂.并且為了使模型能夠更快且更容易收斂,在公式(10)中用式:
來替換掉‖Wyi‖‖xi‖ψ(θyi),加入一部分softmax loss來減小分類器后期學(xué)習(xí)的難度,從而幫助收斂.初始學(xué)習(xí)率設(shè)為0.0001.由表1、表3以及圖4也可以看出cnn+L-softmax loss的效果不如cnn+cbp.這里也可以說明通常對網(wǎng)絡(luò)結(jié)構(gòu)的修改比損失函數(shù)的修改對分類結(jié)果的影響更大.由于增大了學(xué)習(xí)的難度,因此會比使用普通的softmax收斂的更慢一些.如圖4所示,D比A、F比E都要上升的更慢一些.
表3 用vgg19(BN)訓(xùn)練得到的準(zhǔn)確率Table 3 Accuracy matrix using vgg19(BN)-net
注:A-H分別表示每個模型的簡稱,cbp表示compact bilinear pooling,L-softmax loss表示large margin softmax loss
最后結(jié)合訓(xùn)練雙線性模型與大裕量softmax loss進(jìn)行訓(xùn)練時,為了模型能更好的收斂,采用了一個兩階段的訓(xùn)練方法.先訓(xùn)練cnn+L-softmax loss,再用這個訓(xùn)練好的模型去初始化前者前面的卷積層.綜合表1-表3和圖4可以看出cnn+cbp+L-softmax相較其他前面幾個模型效果可以達(dá)到最大化,準(zhǔn)確率更高.D、E均使用了A訓(xùn)練好的模型進(jìn)行參數(shù)初始化,因此D、E前期的準(zhǔn)確率上升的更快.
圖4 四種模型訓(xùn)練Chinesefood-208的準(zhǔn)確率與迭代次數(shù)的關(guān)系Table 4 Relationship between accuracy and number of iterations of 4 models
在數(shù)據(jù)集的原文獻(xiàn)[9]中,作者使用ResNet152 + DenseNet (121 + 169 + 201) + VGG19-BN,五個模型進(jìn)行概率加權(quán)可以得到81.43%的準(zhǔn)確率,但其中有四個網(wǎng)絡(luò)都是超過100層,時間和效率上都要求很高.而本文只使用了相較之下更輕量級的vgg19,進(jìn)行端到端的訓(xùn)練便可以得到幾乎更好的結(jié)果,而在時間和效率上都遠(yuǎn)遠(yuǎn)更優(yōu).與作者的另一個網(wǎng)絡(luò)ResNet (18 + 34 + 50 + 152),四個不同層的殘差網(wǎng)絡(luò)進(jìn)行概率平均相比,81.5%的準(zhǔn)確率也是要明顯優(yōu)于79.19%的.
本文利用雙線性模型加寬網(wǎng)絡(luò)結(jié)構(gòu),得到更為豐富的特征,并對原始的softmax損失函數(shù)進(jìn)行改進(jìn),通過加入一個裕量來加大同種類別學(xué)習(xí)的難度來提高分類質(zhì)量.將原始圖片提取雙線性特征并通過大裕量softmax函數(shù)來進(jìn)行端到端的訓(xùn)練,進(jìn)而完成分類任務(wù).相較于原始的卷積神經(jīng)網(wǎng)絡(luò),在準(zhǔn)確率和效率方面都取得了更好的效果.并且沒有對原菜品進(jìn)行更多復(fù)雜的標(biāo)記,具有更大的應(yīng)用價值.