基于深度學習的移動端水果識別
1. 引言
中國自古以來重視農(nóng)業(yè)發(fā)展,尤其在水果種植方面取得了顯著成就,品種繁多,面積廣泛覆蓋,居全球前列。隨著經(jīng)濟增長和生活品質(zhì)提升,消費者更加注重飲食營養(yǎng),水果已成為生活中不可或缺的一部分,使中國成為全球最大的水果消費地[1]。目前,水果商戶主要依賴人工識別水果種類并進行稱重和結算,這種方式不便且不環(huán)保。水果種類繁多,外觀相似,增加了識別難度,人工處理速度慢且易出錯。中國勞動力成本不斷上升,傳統(tǒng)服務模式浪費人力資源,影響顧客滿意度和超市盈利。因此,探索自動水果識別結算方法十分重要[2]。
水果識別技術通過深度分析水果圖像或視頻,實現(xiàn)智能判別,廣泛適用于水果商店和無人超市,提升購物體驗,減少人力成本,優(yōu)化運營效果。加快智慧農(nóng)業(yè)發(fā)展,推動農(nóng)業(yè)數(shù)字化、智能化發(fā)展,實現(xiàn)高效可持續(xù)的智慧農(nóng)業(yè)。推動智能城市發(fā)展,在無人自助超市中,智能水果識別系統(tǒng)能自動完成消費流程,提供便捷高效的購物體驗。
2. 相關工作
基于機器視覺的水果識別方法通常包括三個步驟。首先是圖像預處理,包括調(diào)整圖像的亮度和對比度、顏色空間轉換、直方圖均衡化、以及像素值歸一化[3]。其次是特征提取,方法包括顏色直方圖([4]、Gabor濾波[5]、局部二值模式[6]、方向梯度直方圖[7]、邊緣特征如Sobel [8]和Canny [9]、尺度不變特征變換[10]以及主成分分析[11]。最后是分類,常用方法有支持向量機[12]、K最近鄰[13]、決策樹(Decision Tree) [14]和隨機森林[15]。
近年來,基于深度學習的水果識別方法取得了顯著進展。Enciso等人基于AlexNet模型在320張數(shù)據(jù)集上,對檸檬的新鮮和腐爛分類分別達到了98.25%和93.73%的準確率[16]。孟欣欣等人基于計算機視覺的香梨果實目標檢測模型,使用Resnet模型在9600張水果數(shù)據(jù)上進行預訓練,并構建了Mask R-CNN模型,在成熟香梨數(shù)據(jù)集上的平均分割準確率達到98.02% [17]。Xue等人提出了一種基于深度學習的混合水果分類方法,構建了CAE-ADN框架,結合了注意力模型和卷積自動編碼器,實現(xiàn)了高效的水果圖像分類[18]。Lu等人基于DenseNet201模型和遷移學習技術,實現(xiàn)了番茄分類的高準確率,即使在圖像質(zhì)量受干擾的情況下,分類準確率仍達到96.16% [19]。
此外,Chandel等人基于GoogLeNet模型,提出了一種用于識別農(nóng)作物水分脅迫條件的方法,在1200張包含玉米、秋葵和大豆的數(shù)據(jù)集上,表現(xiàn)優(yōu)異[20]。Kang等人基于ResNet模型,建立了一個能夠區(qū)分水果新鮮度和種類的分類模型,收集了18,000張包含7類水果的圖片,通過遷移學習技術進行模型訓練,新鮮度分類的識別準確率達到98.50%,種類分類的識別準確率為97.43% [21]。Ismail等人提出了一種基于CNN的實時水果等級分類系統(tǒng),使用EfficientNet模型對蘋果和香蕉的數(shù)據(jù)集進行驗證,分類準確率達99.2% [22]。Huang等人提出了一種基于ViT的神經(jīng)網(wǎng)絡模型,建立了一個包含9375次對15種水果的觸覺數(shù)據(jù)集[23]。這些研究展示了深度學習在水果識別中的廣泛應用和高效性能,為進一步研究和應用提供了堅實的基礎。
3. 方法
3.1. 基礎模型選擇
針對移動端的水果識別應用部署,本文選用內(nèi)存為2 GB的Rockchip RK3399-mid芯片,因此需要考慮模型權重大小和模型計算量。因此本文對模型的篩選規(guī)則為模型計算量(FLOPS/106)小于10,000,模型參數(shù)量小于100 M。通過對目前主流的網(wǎng)絡模型進行篩選,本文選用DenseNet-169 [30]為本文的骨干網(wǎng)絡,用于后續(xù)的研究,其模型結構如圖1所示。
Figure 1. DenseNet-169 model architecture
圖1. DenseNet-169模型結構
3.2. 注意力機制
為進一步提升模型性能。讓模型更好地關注到水果的細節(jié)紋理,小目標水果特征,并緩解包裝、擺放數(shù)量等干擾信息的影響,本文嘗試在骨干網(wǎng)絡中引入注意力機制。結合DenseNet-169模型自身特點,其優(yōu)勢在于稠密塊連接,如在稠密塊中添加注意力將會破壞稠密結構,因此,本文主要在其稠密塊連接處進行添加注意力。
本文設計新的注意力模塊,殘差混合注意力(Residual Mixed attention, RMA)。同時考慮空間和通道信息,使用多尺度卷積特征融合形式提取通道信息,并添加殘差連接,相比于單一尺度特征提取,多尺度特征可以動態(tài)調(diào)整對目標的關注程度,使得模型對于尺度變化具有更好的適應性,綜合利用水果的全局結構和局部細節(jié)信息提高模型對圖像的識別準確性,從而提高模型的魯棒性。
其模型結構如圖2所示,首先分別通過3 × 3卷積核和5 × 5卷積核對輸入特征進行卷積提取,得到兩個不同尺度的特征圖,然后通過相加操作同時結合兩個不同尺度的特征圖,輸入至全局平均池化層得到權重向量,并通過一個線性層來映射全局特征向量,再通過Sigmoid激活函數(shù)將其歸一化到0到1之間,得到全局特征向量,然后分別對所提取的多尺度特征進行加權輸出,并通過Concat操作按照通道拼接,然后對特征使用1 × 1卷積核進行通道融合并輸入空間注意力模塊。
Figure 2. Residual Mixed Attention (RMA) module
圖2. 殘差混合注意力RMA模塊
3.3. 添加ViT Block
深層特征是對輸入數(shù)據(jù)進行多次非線性變換后得到的結果,具有更高級的語義信息,因此對深層特征的信息整合可以使得模型具有更好的泛化性,提升識別精度。ViT [24]架構使用自注意力機制來捕捉圖像中的全局信息,能夠更好地理解圖像整體結構和上下文關系,具有更好的語義理解能力,可以增強模型的泛化能力。
因此為提升模型深層語義提取能力,增強泛化性。本文實現(xiàn)適合在CNN模型中添加的ViT Block,其模型結構如圖3所示,通過對三維輸入特征按照形狀依次展平變成二維特征,并進行線性映射實現(xiàn)通道特征融合得到新的長度為D的二維特征,然后對特征進行位置編碼,輸入Encoder塊,進行深層特征抽取,并輸出特征。
Figure 3. ViT Block module
圖3. ViT Block結構圖
本文嘗試在DenseNet-169模型中添加基于ViT架構的語義提取模塊。通過分析認為CNN在處理圖像淺層特征時具有先驗知識即歸納偏置(Inductive Bias)例如平移等變性、局部連接性,因此能夠更好地利用圖像本身的空間信息,而ViT結構缺少了這種歸納偏置,并且在前期ViT架構計算復雜度也較高。因此對于低級特征處理階段CNN更具優(yōu)勢,而隨著模型層數(shù)的加深,多重卷積操作使得模型特征逐漸深層化,使得特征更加具有語義性,且特征尺寸有所下降,此時ViT Block更具有優(yōu)勢。最終的模型結構如圖4所示。
Figure 4. DenseRMA_ViT model architecture
圖4. DenseRMA_ViT模型結構圖
3.4. 改進損失函數(shù)
損失函數(shù)在分類模型中扮演著非常重要的角色,用于衡量模型預測與真實標簽的差距,模型根據(jù)損失來調(diào)整參數(shù),模型的訓練過程旨在最小化損失函數(shù),使得模型能夠從訓練數(shù)據(jù)中學到合適的特征和規(guī)律,以便正確分類樣本。因此選擇合適的損失函數(shù)可以幫助提高模型的性能、泛化能力以及對特定問題的適應性。常規(guī)分類損失函數(shù)為交叉熵損失(Cross-Entropy Loss),計算公式如下:
其中K為水果類別數(shù),P為預測概率類別向量,y為真實標簽獨熱編碼向量。
通過分析模型訓練損失曲線圖和數(shù)據(jù)集特點發(fā)現(xiàn),數(shù)據(jù)集樣本中簡單樣本居多,困難樣本相對較少。而交叉熵損失函數(shù)沒有對簡單樣本和困難樣本的損失進行區(qū)分。雖然困難樣本的損失較大,但是簡單樣本數(shù)量多,這將會導致模型過多地關注簡單樣本的損失,模型難以學習困難樣本的特征。同時本文水果識別系統(tǒng)在后續(xù)使用中會對識別錯誤的水果圖片進行收集,并進行模型微調(diào),然而在實際使用中,對于熱銷水果收集到的圖片必定更多,這對于后續(xù)模型微調(diào)將會造成類別樣本不均衡問題?;谏鲜鰞蓚€問題,本文基于Focal Loss [25]對損失函數(shù)進行改進,計算公式如下:
其中t為對應類別序號,wt為對應類別損失權重,在訓練之前設定,統(tǒng)計訓練樣本類別數(shù)量,設定樣本數(shù)最高類別的損失權重為1,其他類別的損失權重為與樣本數(shù)最高類別的比值的倒數(shù),即數(shù)量越少權重越大,因此相對地提升小樣本數(shù)量類別的損失權重。Pt為對應預測類別概率。當Pt越接近1,即樣本為簡單樣本,(1 ? Pt)2則相對越小,模型對簡單樣本的損失相對權重越小。當Pt越接近0,即樣本為困難樣本,(1 ? Pt)2則相對越大,模型對困難樣本的損失相對權重越大。
4. 實驗
4.1. 數(shù)據(jù)集
目前常見的水果數(shù)據(jù)集包括FruitVeg-81 [26]、Fruits-262 [27]、Fruits-360 [28]等,其中數(shù)字代表數(shù)據(jù)集中水果種類數(shù)量,圖5展示了部分上述水果數(shù)據(jù)集的圖片??梢钥闯霰M管Fruits-360的水果種類眾多,但相對于其他數(shù)據(jù)集過于簡單,不適合實際超市場景的應用。FruitVeg-81數(shù)據(jù)集除了水果圖片,還包含了蔬菜圖片,并且果蔬類別數(shù)量相較于Fruits-262較少,因此在公開數(shù)據(jù)集中,F(xiàn)ruits-262數(shù)據(jù)集更加適合作為水果識別系統(tǒng)模型訓練數(shù)據(jù)集。
盡管Fruits-262包含大量水果種類和圖片,但與本地超市的水果種類仍有差距。例如,本地超市的蘋果種類包括樹頂紅富士、優(yōu)選紅富士、脆心甜紅富士、甜心小蘋果,而Fruits-262中有apple (蘋果)、elephant apple (象蘋果)、malay apple (馬來蘋果)、otaheite apple (塔希提蘋果),相關圖片如圖6所示。雖然其他三類水果名稱與apple相關,但與本地常見蘋果差異較大,難以視為同一類。類似情況在其他水果中也存在。因此,F(xiàn)ruits-262盡管種類多,但未細分類,也未覆蓋本地超市的水果種類。因此,構建適用于本地超市的水果數(shù)據(jù)集對于水果識別系統(tǒng)至關重要。
Figure 5. Sample Images from the public dataset
圖5. 公開數(shù)據(jù)集部分圖片
Figure 6. Images of some apple varieties from the fruits-262 dataset
圖6. Fruits-262部分相關蘋果種類圖片
本文通過自制數(shù)據(jù)集用于訓練模型得到權重,用于實際超市水果識別系統(tǒng),并且使用公開數(shù)據(jù)集Fruits-262驗證模型在算法上改進的有效性。在實際超市應用場景中,水果種類繁多同時存在較多細分類,因此為貼合超市的實際使用,在拍攝時覆蓋超市所有種類水果,確保數(shù)據(jù)集的多樣性。本文拍攝49種超市水果,在實際分類模型中,模型依照序號對類別預測概率進行輸出。由于水果包裝狀態(tài)存在差異,包括袋裝盒裝和散裝等,因此本文考慮到實際使用針對不同水果的不同包裝進行拍攝,提高模型的泛化性。針對不同水果的狀態(tài)拍攝,如圖7為小番茄不同狀態(tài)下的拍攝圖片。
數(shù)據(jù)集擴增有助于提升模型泛化性和識別精度,防止過擬合。Meta開源的SAM (Segment Anything Model) [29]實現(xiàn)了無需標注即可對任意圖像中的任何物體進行分割。本文基于SAM設計了水果數(shù)據(jù)集擴增方法。將圖片傳入SAM,隨機生成多個提示輸入,對圖像進行分割,得到分割對象。然后對分割對象進行1到4次隨機復制,并隨機翻轉、旋轉、縮放,在背景圖像上隨機粘貼,完成數(shù)據(jù)擴增。如圖8所示,對同一張草莓圖像隨機生成提示點進行擴充,左列為隨機提示點,中間為分割實例,右列為最終擴充圖。最終,每種水果圖片擴增至6000張,總計29.4萬張,命名為DailyFruit-49。
Figure 7. Photoshoot of cherry tomatoes in different states
圖7. 小番茄不同狀態(tài)下的圖片拍攝
Figure 8. Fruit image augmentation concept based on SAM
圖8. 基于SAM的水果圖片擴增示意圖
4.2. 評價指標
為了全面客觀地評價模型對水果識別的性能,本文采用多種圖像分類評價指標,包括準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1分數(shù)(F1 Score, F1)。準確率、精確率、召回率的數(shù)學表達式如式(3)、(4)、(5)所示。表1解釋了式中元素具體情況。
Table 1. Table of precision and recall explanation
表1. 精確率和召回率解釋表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F1分數(shù)是精確率和召回率的調(diào)和平均,綜合考慮了分類器的精確性和召回率,是一個綜合性的評價指標,可以更加綜合地反映了分類器的性能。其數(shù)學表達式如式(4)所示。
4.3. 消融實驗
為驗證改進模型的有效性,本文使用公開數(shù)據(jù)集Fruits-262進行消融實驗,驗證算法改進的有效性,盡管Fruits-262數(shù)據(jù)與實際應用數(shù)據(jù)相差較大,但是從算法角度,復雜數(shù)據(jù)依然存在參考價值。為證明本文對模型改進的有效性,對RMA模塊、ViT Block、Focal Loss進行消融實驗,并統(tǒng)計結果如表2所示,由表可知相較于基礎骨干網(wǎng)絡,3種改進方案的有效性,模型最終Accuracy、Precision、Recall、F1為75.28%、75.84、75.37%、75.60%,相較于僅添加RMA模塊,雖然精確率有所降低,但是召回率和綜合性能F1有所提升,說明模型有效緩解了樣本不均衡,提升了模型的綜合性能,證明Focal Loss改進的有效性。同時對比原始模型1號DenseNet-169,添加改進模塊的模型性能均有所提升,證明DenseRAM_ViT改進的有效性。
Table 2. Ablation study results on the Fruits-262 dataset
表2. 在Fruits-262數(shù)據(jù)集上的消融實驗結果
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
同時為了直觀展現(xiàn)添加RMA的效果對比,如圖9使用梯度類激活熱力圖對Fruits-262數(shù)據(jù)集中部分圖像各區(qū)域受關注程度做可視化展示,由圖第一行對比可知,相對于原始模型DenseNet-169,添加了RMA注意力模型減少了對背景的關注,并且加大了對水果目標的關注,由圖第二行對比可知,改進模型增大了對水果目標的關注程度與范圍,因此證明了本文改進注意力RMA的有效性。
Figure 9. Comparison of heatmaps with and without the Introduction of the RMA module
圖9. 引入RMA模塊熱力圖對比
4.4. 結果對比
為了說明本文模型設計的有效性,列舉具有代表性的同類水果識別研究進行對比,結果如表3所示,盡管有些研究識別性能很好,但是他們的研究水果種類與數(shù)量較少,不具有代表性。在公開數(shù)據(jù)集Fruits-262上,本文最終實現(xiàn)模型DenseRMA_ViT性能相對于數(shù)據(jù)集發(fā)布者Minut [28]有較大提升。在自制數(shù)
Table 3. Comparison of related studies on fruit recognition
表3. 水果識別相關研究對比
|
||||||
|
|
|
|
|
|
|
據(jù)集DailyFruit-49上,本文對比了深度學習經(jīng)典分類模型Mobile v2、ResNet、DenseNet、ViT,由此證明模型的改進有效性,同時本實驗覆蓋的水果種類范圍大,前5類識別精度達到99.73%,識別率能夠滿足實際使用需求。綜上可知本實驗設計的水果識別算法在水果識別領域具有應用價值。
4.5. 系統(tǒng)實現(xiàn)
系統(tǒng)的終端為Android系統(tǒng),深度學習模型基于Pytorch框架和Python語言實現(xiàn),但無法直接在終端部署。因此,需要將模型轉換為適合終端部署的格式。本文采用TorchScript進行模型格式轉化。TorchScript [33]具有運行獨立性、高性能、跨平臺支持等優(yōu)點,可以將PyTorch模型轉換為獨立格式,使其無需依賴Python解釋器,可以在移動端和嵌入式設備上運行,并且無需重新訓練模型。同時,TorchScript的靜態(tài)圖表示可以優(yōu)化模型性能和效率,如進行模型剪枝等。經(jīng)過測試,水果識別終端設備不需要高性能CPU或GPU,在瑞芯微的RK3399芯片上可以流暢運行,其他設備如攝像頭也不需要高端配置。
本文系統(tǒng)設計框架如圖10所示,分為四個模塊:水果檢測模塊、前端交互模塊、后臺自更新模塊、終端更新模塊。四個模塊相互連接,形成閉環(huán),實現(xiàn)系統(tǒng)自更新。系統(tǒng)通過攝像頭實時拍攝用戶購買的水果圖像,使用模型進行識別,并在終端界面展示供用戶交互。用戶可在終端界面更正識別錯誤的水果種類,并將正確信息上傳至后臺服務器。后臺系統(tǒng)收集誤識別圖片,管理人員進行檢測與修正。當誤識別圖片達到一定數(shù)量,后臺啟動遷移學習進行模型微調(diào),并發(fā)布新權重。終端設備每日重啟時會檢查新權重并進行更新。整個系統(tǒng)實現(xiàn)了水果圖像自動化識別與模型權重自優(yōu)化,隨著使用時間的推移,系統(tǒng)將獲得更大的水果圖像數(shù)據(jù)集和更優(yōu)的模型權重。
Figure 10. Framework diagram of deep learning-based fruit detection system
圖10. 基于深度學習的水果檢測系統(tǒng)設計框架圖
水果檢測模塊為主要功能,涉及整個裝置,其整體結果如圖11所示,該模塊包括攝像頭拍攝模塊、水果展示臺、終端處理模塊。由用戶將待購買商品放入展示臺,并通過攝像頭進行拍攝傳入終端,終端設備部署識別程序,對水果進行識別。模型的部署包括對所得到的Pytorch模型權重pth文件進行轉換為TorchScript格式,再結合Android應用程序進行模型嵌入轉換好的模型完成部署。
Figure 11. Fruit photography device
圖11. 水果拍攝裝置
4.6. 實際超市水果驗證
為驗證DenseRMA_ViT水果識別算法的有效性,在本地超市進行了實地拍攝和識別測試。由于季節(jié)原因,部分水果未在售,對28種在售水果進行拍攝,每種4張,分別以袋裝和散裝1:3拍攝,共112張。拍攝過程中不固定光照、角度和距離,以增加難度。識別結果顯示,Top5全部正確,但有些不足,如奇異果的Top1識別錯誤。整體上,模型Top1識別準確率為84.82%,Top5為96.43%。相比基礎模型DenseNet-169的Top1準確率79.46%、Top5準確率90.18%,改進模型分別提升了5.36%和6.25%。盡管存在誤識別,系統(tǒng)可以收集誤識別圖像,更新數(shù)據(jù)集并微調(diào)模型權重,從而提升精度。
Figure 12. Supermarket real-world testing
圖12. 超市實拍測試
5. 結論
水果自動識別提升商店效益,減少標簽,環(huán)保,是智慧農(nóng)業(yè)關鍵。本文為本地超市構建了新水果數(shù)據(jù)集,設計了基于深度學習的識別系統(tǒng),實現(xiàn)自動識別,加快智慧農(nóng)業(yè)推廣。拍攝超市各種水果,考慮盒裝、袋裝、散裝等不同包裝。首次應用SAM進行數(shù)據(jù)擴增,構建包含49種水果、29.4萬張圖片的DailyFruit-49數(shù)據(jù)集。選擇DenseNet為基礎模型,結合通道與空間注意力機制,設計RMA注意力機制,改進ViT Block用于深層語義特征提取,得到DenseRMA_ViT模型?;贔ocal Loss改進交叉熵損失函數(shù),增強對困難和少樣本水果的關注,提升模型泛化性。在低算力終端部署識別系統(tǒng),并設計自動微調(diào)模型權重的機制,通過收集誤識別圖片不斷優(yōu)化模型,提升識別率,驗證超市實際效果。
NOTES
*通訊作者。