巨志勇,張澤晨
(上海理工大學 光電信息與計算機工程學院,上海 200093)
商品交易智能化是近年來貿易發展的主要方向和趨勢,類似水果、蔬菜等農產品在交易時主要依靠人工記憶或查詢單價方式進行結算,增加了人力及時間成本.由于果蔬種類眾多,且不同種類的果蔬在顏色、紋理及形狀上可能具有較大的相似度,人工設計的圖像特征難以很好的表述;且分類器結構簡單,則無法映射復雜的特征.因此,如何設計具有更強表征效果的果蔬分類特征及選擇合適的分類器仍然是近年來研究的熱門問題.
為解決上述問題,Wu[1]使用主成分分析(PCA)來減少顏色、紋理和形態特征,引入多類核支持向量機(kSVM)作為分類器,總體準確率達到88.20%.Ji[2]用適合度尺度的混沌ABC(FSCABC)代替KSVM,并與前饋神經網絡(FNN)結合.Wei[3]設計了由小波熵(WE)、PCA、前向神經網絡(FNN)和基于生物地理學的優化算法(BBO)組成的系統,總準確度為89.47%.Garcia等人[4]提取了顏色色度、紋理和形狀特征.Lu[5]以分數傅里葉熵(FRFE)為特征,并采用反向傳播神經網絡(BPNN)作為分類器.Lu和Li[6]用改進的混合遺傳算法(IHGA)代替了BPNN,方法總準確率接近90%.
上述方法大都采用多特征融合及改進分類器的方法來描述圖像,所以在分類準確性上要優于單一特征及傳統分類器.但是同一種類的果蔬在不同圖像中的顏色、紋理及局部信息都不相同,因此這些特征在表征能力上存在較大的局限性.隨著深度學習的不斷發展與完善,深度卷積神經網絡(Convolutional Neural Network,CNN)被廣泛應用于圖像分析和目標檢測,如脈絡膜分割、異常檢測、孤立囊腫判別、振動光譜數據分析等.鑒于卷積神經網絡在圖像分類與檢測方面的優秀表現,Zhang等人[7]設計了一個13層的卷積神經網絡進行果蔬特征提取,最終分類準確率達到了94.94%,驗證了卷積神經網絡對果蔬特征的強大表征能力.
基于上述不同算法的結果,本文提出一種融合人工設計特征和卷積神經網絡特征的果蔬圖像分類方法.將圖像的局部特征、顏色特征和卷積神經網絡特征采用判別相關分析方法進行降維和串行融合,最后輸入到線性SVM進行分類.在自建的果蔬數據集的實驗結果表明,與現有的上述先進算法相比,分類效果明顯提升,且具有更低的特征維度和測試時間.
特征編碼是特征提取及構建字典后的重要步驟,由Yu等[8]提出的(Nonlinear Learning Using Local Coordinate Coding,LCC)可知,在編碼過程中,特征局部性比稀疏性更加重要.但與稀疏編碼(Sparse Coding,SC)相比,LCC需要解決L1-norm優化問題,計算量比較大.為此,Wang等[9]提出了局部線性編碼(Locality-constrained Linear Coding,LLC)來提高LCC的算法效率.本文采用LLC對局部特征進行編碼[10,11],LLC編碼滿足下列約束:

(1)
其中,⊙表示向量對應元素的乘積;xi為待編碼的向量;B為視覺詞典;si為得到的編碼向量;λ為正則項,確保ui的稀疏性;di∈RM為不同編碼的權重,為每個基向量提供不同的自由度,正比于它和輸入向量xi的相似性.di可用式(2)計算:
(2)
其中:dist(xi,B)=[dist(xi,b1),dist(xi,b2),…,dist(xi,bk)],dist(xi,bj)是局部特征xi到視覺詞匯bj的歐氏距離;σ控制di的權重衰減速度.
式(1)中的λ值越大[12],編碼結果越稀疏,特征xi離視覺詞匯bj越遠,其編碼系數就越小,極端情況下就是用其最近鄰的幾個視覺單詞來重構它.
用拉格朗日乘子法可求式(1)所示約束問題的解析解為:
(3)

為進加速編碼過程,LLC采取了一種近似處理方法:為每個特征描述符選擇局部基向量,以形成一個局部坐標系.通過在視覺詞典中找到xi的k(k (4) (5) 判別相關分析[13](Discriminant Correlation Analysis,DCA)是一種新的特征層融合算法,是對典型相關分析(Canonical Correlation Analysis,CCA)[14,15]方法的改進.傳統的CCA利用兩組特征之間的相關性來找到兩組轉換,使得轉換后的特征在兩組特征集中具有最大的相關性,而在每個特征集中不相關.而DCA消除了不同類之間的相關關系并且將相關性限制在同個類中,可以最大限度地提高同類中對應特性的相關性,同時將不同類之間的特性去相關化.其將類結構合并到相關性分析中,這有助于突出類之間的差異,且不存在基于CCA的算法所面臨的小樣本容量(SSS)問題. (6) (7) 其類間散度矩陣定義為: (8) 其中: (9) (10) 設Q(c×r)由r個特征向量組成,對應矩陣p的r個最大非零特征值有如下關系: (11) 則通過映射Q→ΦbxQ可以得到Sbx的r個最顯著特征向量: (ΦbxQ)TSbx(ΦbxQ)=Λ(r×r) (12) 通過Wbx=ΦbxQΛ-1/2可以將Sbx單位化,并將數據矩陣X的維數由p維降為r維,即: (13) 其中:X′是X在空間中的映射;I為類間散度矩陣. 類似過程求解第二個特征集Y,并找到一個變換矩陣Wby,用它對第二個模態的類間散度矩陣Sby進行單位化,將Y的維數由q降至r. 此時X和Y已經轉換為X′和Y′,其中類間散度矩陣也已經單位化.為了使一個集合中的特征只與其在另一個集合中的對應特征具有非零相關性,需要對轉換后的特征集的類間協方差矩陣S′xy進行對角化,即S′xy=X′Y′T.用奇異值分解(SVD)來對角化S′xy: (14) 其中,∑是一個主對角元素非零的對角矩陣.令Wcx=U∑-1/2和Wcy=V∑-1/2,則有: (U∑-1/2)TS′xy(V∑-1/2)=I (15) (16) (17) 果蔬圖像在進行分類時易受到光線、角度等方面的影響,而SIFT算法[16],將斑點檢測、特征描述與生成及特征匹配等步驟結合到一起,提取了尺度、旋轉、光照以及視角等變換上具有良好不變性的圖像局部特征.由于傳統的BoW方法缺失了局部特征的空間信息,因此本文采用空間金字塔(Spatial Pyramid matching,SPM)模型[17]來實現SIFT特征提取及編碼.特征編碼整個流程包括: 1)SIFT特征提?。河沊=[x1,x2,…,xn],xi∈RD×N是提取的所有SIFT特征組成的矩陣(每列為一個特征向量); 2)字典學習:使用K-means算法學習字典B=[b1,b2,…,bk],bi∈RD×M,(每列為一個視覺單詞); 3)K近鄰搜索:對于任何一個待編碼的特則xi,選取字典B中距離其最近的k個基,形成子字典Bi=[b(1),b(2),…,b(k)]; 4)特征編碼:使用子字典Bi重構xi進行LLC編碼; 5)SPM:使用SPM將圖像分為三層:第0層代表整幅圖像,第1層將圖像分為4各區域;第2層分為16個區域; 6)最大池化:在每一層的每個區域內,對LLC編碼重構后的xi所組成的矩陣運用最大池化技術將特征向量集映射為單個向量,并將三層中各個區域池化后的特征向量級聯起來,形成最終的稀疏向量表示. 本文的卷積神經網絡采用GoogLeNet下的Inception V3[18]模型在ImageNet上已經訓練好的參數作為訓練的初始值來對Inception_V3模型進行微調.設置學習率為0.001,動量為0.9,權重衰減為0.00004,完成深度卷積神經網絡的訓練.利用微調后的Inception V3模型進行特征提取,得到卷積神經網絡倒數第二層學到的特征作為cnn特征,具體為一系列2048維特征向量.Inception V3模型的網絡結構如表1所示. 表1 Inception_V3模型的網絡結構Table 1 Network structure of the Inception V3 model 設FSIFT為包含SIFT特征向量的p*n矩陣;FSIFT+hsv為包含SIFT和hsv融合特征向量的q*n矩陣;Fcnn為包含cnn特征向量的v*n矩陣;label為長度為n的行向量,包含類標簽.DCA降維融合步驟如下: 1)由式(6)得到三個特征集平均值和三個特征集中每個類的平均向量; 2)由式(9)計算Φb_SIFT、Φb_SIFT+hsv、Φb_cnn; 3)由式(8)計算三個特征集的類間散度矩陣Sb_SIFT、Sb_SIFT+hsv、Sb_cnn; 4)由式(10)對角化SbSIFT、SbSIFT+hsv、Sbcnn; 5)由式(12)獲得對角化后的SbSIFT、SbSIFT+hsv、Sbcnn的特征向量; 6)由式(13)得到轉換矩陣Wb_SIFT、Wb_SIFT+hsv、Wb_cnn; 7)由式(15)用奇異值分解(SVD)對轉換后的特征集的類間協方差矩陣進行對角化; 假設X∈Rp×n,Y∈Rq×n表示兩個轉換前的特征集,Wx、Wy為轉換矩陣,則其融合可以通過對特征向量進行串行拼接或求和來實現[19],如下式所示: (18) (19) 圖1 果蔬分類系統框架Fig.1 Fruit and vegetable classification system framework 經實驗對比發現,在融合得到的特征向量維數均在可接受的范圍內時,串行融合的準確率更高,因此本文實驗均采用串行融合. 基于局部線性編碼的深度學習分類方法由特征提取和特征融合兩部分組成.具體步驟如下: 步驟1.對每一幅圖像提取SIFT特征FSIFT、HSV特征Fhsv、卷積神經網絡特征Fcnn; 步驟2.對特征FSIFT進行局部線性編碼,生成FLLC; 步驟3.對FLLC和Fhsv進行進行串行融合得到FLLC+hsv; 步驟4.分別讓FLLC+hsv、FLLC分別與Fcnn進行判別相關分析,并將其各自降維后的特征向量同樣進行串行融合,生成FLLC+hsv/cnn_DCA和FLLC/cnn_DCA; 步驟5.對FLLC+hsv/cnn_DCA和FLLC/cnn_DCA進行串行融合得到最終的特征向量,并同類標簽一起放入SVM中進行分類測試. 算法框架如圖1所示. 在文獻[7]的果蔬分類研究中,所使用的果蔬數據集僅包含18種水果種類,總計3600張圖片.存在果蔬種類較少,圖片數量不足等問題.因此本文收集和建立了一個包含人工拍攝和網上下載圖片的果蔬數據庫.人工拍攝圖片符合實際生活中超市結算擺放的真實情況,如圖2(a)所示,用以驗證不同光照條件和拍攝角度下算法的性能;網上下載部分圖片背景復雜且數量、姿態各異,如圖2(b)所示,用以驗證不同果蔬數量、姿態和背景下算法的有效性.數據庫包含日常生活中常見的46種類別果蔬,共13817幅圖片.果蔬種類包括:蘋果、香蕉、西蘭花、黃瓜、火龍果、葡萄、上海青、圣女果、梨、土豆、西紅柿、獼猴桃、生菜等.將圖像尺寸均統一歸一化尺寸為299×299以便處理. 圖2 果蔬數據集Fig.2 Fruit and vegetable data set 為對比不同編碼方式對局部特征編碼的效果,本文對SIFT局部特征采用稀疏編碼(Sparse Coding SPM,ScSPM)[20]和局部線性編碼兩種編碼方式進行實驗.對顏色直方圖特征、SIFT特征及卷積神經網絡特征進行不同組合的DCA降維及串行融合,選取出分類效果較好的組合方式.實驗結果如表2、表3所示.其中,每種特征的識別準確率均為15次不同訓練及測試樣本實驗結果的平均值;前三行分別為SIFT、HSV和CNN三種特征單獨分類的效果;′+′代表串行特征融合;′/′來區分不同特征;′_′代表對特征進行DCA降維后的串行融合;r為訓練集所占數據集比率. 由表2、表3可以看出:1)特征融合后的果蔬圖像分類準確率高于原單類特征分類準確率;2)使用局部線性編碼對SIFT特征進行編碼效果要好于稀疏編碼;3)使用DCA進行降維融合后特征的準確率要高于降維之前的特征融合識別準確率;4)三種特征進行DCA降維后的融合的準確率最高,比單純的深度卷積神經網絡特征至少高出2%以上,證明融合人工特征和卷積神經網絡特征更有利于果蔬圖像的分類. 表2 ScSPM特征融合識別準確率Table 2 ScSPM feature fusion recognition accuracy 表3 LLC特征融合識別準確率Table 3 LLC feature fusion recognition accuracy 表4 降維前后的特征維度及平均測試時間Table 4 Characteristic dimension and average test time before and after dimension reduction 使用DCA方法降維融合后的特征不僅識別率要明顯高于降維融合前,同時維度與測試時間也大幅度下降,使得果蔬識別分類速度更快.具體特征維度與測試時間如表4所示.其中,測試時間均為15次隨機樣本循環實驗平均值. 最后,本文與引言中提到的6種先進的方法:PCA+kSVM[1],PCA+FSCABC[2],WE+BBO[3],FRFE+BPNN[5],FRFE+IHGA[6],13-layer-CNN[7]進行了比較,結果如表5所示. 表5 本文方法與現有方法的對比Table 5 Experimental results of our methodand comparison with existing methods 由表5可以看出,在更多種類和數量的果蔬數據集中,本文基于局部線性編碼的深度學習方法整體準確率達到97.28%,識別率高于單組的人工特征及其融合特征,并且高于深度卷積神經網絡特征.同時其特征維度與測試時間均有大幅降低,能夠更加快速的進行果蔬分類與識別.另外,本文實驗均在自建的包含人工拍攝的自然環境下的圖片以及網上下載的復雜圖片的果蔬數據集上進行,可以更加有效的來對本文的方法進行驗證. 本文提出了一種基于局部線性編碼的深度學習果蔬識別算法.構建了包含人工拍攝和網上下載圖片的數據庫來進行算法的驗證,實驗分析了融合人工特征和卷積神經網絡特征識別效果.試驗結果表明對局部線性編碼SIFT特征、顏色直方圖特征及卷積神經網絡特征進行DCA降維融合后可以取得較好的識別效果、更低的特征維度和更快的測試時間,相較于其他算法,更加適合于果蔬分類準確性和實時性的要求.為了進一步提高不同環境及背景下分類的準確性,下一步可以考慮嘗試不同的分類特征、動態分配合理的權值,將各個特征進行加權融合等方式.


2.2 判別相關分析




3 果蔬分類系統框架和方法
3.1 SIFT特征局部線性編碼
3.2 卷積神經網絡特征提取

3.3 利用判別相關分析降維融合


3.4 算法流程
3.5 算法框架
4 實驗及結果分析
4.1 自建果蔬數據庫

4.2 實驗結果及分析




5 結束語