許龍銘,麥啟明,盧家俊,陳葦浩
(廣州城市理工學院通信工程學院,廣東廣州 510800)
智慧農(nóng)業(yè)已成為當今現(xiàn)代農(nóng)業(yè)發(fā)展的大趨勢[1],而水果圖像的識別在智慧農(nóng)業(yè)領域具有重要的地位[2]。傳統(tǒng)的水果秤需要通過人工辨別水果的種類,然后選擇對應的價格進行計價操作。在該方式下,由于人的分辨能力以及記憶有限,所以計價環(huán)節(jié)容易出錯,特別是在大型超市中,會帶來不小的經(jīng)濟損失。文中設計的是一個采用圖像識別技術實現(xiàn)的自動水果秤,能夠通過機器視覺識別出水果的種類,然后自動進行稱重計價操作,通過觸摸屏進行信息提示以及語音播報稱重計價結果,并且系統(tǒng)能夠辨別不同種類水果混裝的情況,然后進行拒絕稱重計價以及報警提示操作。
圖像識別水果秤的系統(tǒng)結構如圖1 所示,主控制器使用NVIDIA 推出的GPU 主控制器Jetson Nano,該控制器內(nèi)置了128 個NVIDIA CUDA?核心,十分適合邊緣部署AI 應用程序。結合CSI 攝像頭、稱重傳感器、語音模塊和觸摸屏搭建硬件電路。
整個圖像識別水果秤主要由5 個部分組成,分別是:
1)Jetson Nano,用于進行圖像識別核心的邊緣計算、傳感器數(shù)據(jù)處理以及顯示控制等操作。
2)CSI 攝像頭,用于采集實時檢測目標的圖像數(shù)據(jù)。
3)稱重電路,在完成目標的種類識別后進行重量檢測,通過重量和預設的單價計算出總價。
4)語音電路,負責與消費者進行非接觸式人機交互,通過語音交互完成水果秤的稱重、計價以及購買。
5)觸摸屏,為管理員提供水果單價設置、支付方式設置等操作。
Jetson Nano搭載了四核Cortex-A57處理器,擁有足夠的AI 算力,以并行的方式運行多個神經(jīng)網(wǎng)絡。安裝了NVIDIA JetPack 軟件包后,可通過深度學習、計算機視覺、加速計算和多媒體的庫進行快速應用層軟件開發(fā),而且支持各類傳感器的驅(qū)動程序。
攝像頭電路采用索尼IMX219 芯片,分辨率達到800 萬像素,通過15PIN 排線直連到Jetson Nano的CSI 相機接口。由于Jetson Nano 出廠的ubuntu 系統(tǒng)提供CSI 協(xié)議的相機驅(qū)動,因此主控制器可以免驅(qū)驅(qū)動IMX219 攝像頭,最大支持3 280×2 464 分辨率的圖像采集,保證了目標原圖的高畫質(zhì)。
稱重電路使用海芯科技集成電路技術的HX711芯片。HX711是專為電精度電子秤而設計的芯片,內(nèi)部集成有放大部分和24 位A/D 轉(zhuǎn)換部分[3],集成了電源電路、時鐘電路,具有響應速度快、抗干擾性強等優(yōu)點。
稱重電路如圖2 所示,將橋式傳感器接入HX711的模擬輸入通道A,即接入一個增益可編程的放大器,信號放大后再進行轉(zhuǎn)換處理。HX711的輸出為串口輸出,通過DOUT和PD_SCK 引腳進行控制。當DOUT 出現(xiàn)下降沿時,Jetson Nano 馬上輸入25~27 個脈沖,分別讀取24 位轉(zhuǎn)換數(shù)據(jù)以及選擇下一次轉(zhuǎn)換的通道、增益參數(shù)。
圖2 稱重電路
語音電路的主芯片采用XFS5152CE,XFS5152CE芯片是科大訊飛股份有限公司最新推出的一款高集成度的語音合成芯片[4],除了提供語音編碼功能的中、英文語音合成、中英文混讀功能外,還集成了語音識別功能。通過XFS5152CE 芯片可實現(xiàn)水果秤與用戶的離線語音交互功能。XFS5142CE 支持SPI、UART和I2C 3 種常用的驅(qū)動方式,文中選用的是UART 驅(qū)動,Jetson Nano 與XFS5152CE通過串口協(xié)議進行通信。
語音電路構成框圖如圖3 所示。當Jetson Nano按協(xié)議發(fā)送驅(qū)動命令以及文本時,XFS5152CE 將接收的文本合成對應的語音信號進行輸出,經(jīng)過功率放大器放大后的信號最后連接喇叭完成播放。語音識別功能則由麥克風采集音頻數(shù)據(jù),由芯片內(nèi)部的語音識別模塊轉(zhuǎn)換為文本模式的識別結果,最后通過串口發(fā)送給Jetson Nano 進行處理。
圖3 語音電路構成框圖
系統(tǒng)軟件使用Python3.8 進行編程,首先需要進行交互GUI界面設計。在制作GUI界面時,一般可以通過GUI制作工具和純代碼編寫兩種方式來實現(xiàn)[5-6],文中使用Qt5編寫。Qt5隸屬于Qt跨平臺開發(fā)框架[7],由于Python 無法解析Qt5 編寫的UI 文件,通過安裝第三方模塊PyQt5 將UI 文件轉(zhuǎn)換為.py 文件,創(chuàng)建界面類對象即可運行交互UI。
隨著標記數(shù)據(jù)和GPU 技術的發(fā)展,針對卷積神經(jīng)網(wǎng)絡[8-14]的研究取得了豐碩的成果,進而引起了大家對這種高效深度學習識別算法的廣泛關注[15]。深度學習利用其強大的特征學習能力,GPU的高速計算以及計算機硬件成本的降低等優(yōu)勢,在目標檢測任務中得到大量應用[16]。文中圖像識別部分技術主要通過搭建卷積神經(jīng)網(wǎng)絡模型來實現(xiàn)水果種類預測。
模型的搭建需要用到大量的圖片資源,文中直接從Kaggle 網(wǎng)站上下載需要的水果圖片資源。Kaggle 是Google 旗下的一個全球性的線上數(shù)據(jù)挖掘與機器學習競賽平臺,是全球最大的數(shù)據(jù)科學家社區(qū)[17]。
Kaggle 網(wǎng)站中Fruits 360 類別下提供了131 種水果和蔬菜的圖片,其中訓練集圖片源如圖4 所示,使用訓練集的圖片源完成模型的訓練后,下載對應的測試集圖片源進行模型的測試。
圖4 訓練集圖片源
3.2.1 數(shù)據(jù)準備
搭建模型之前從Kaggle 網(wǎng)站上下載需要的水果訓練集和測試集圖片,網(wǎng)站中Fruits 360 類別下提供131 種水果和蔬菜的9 萬多張圖片,下載需要進行識別的水果數(shù)據(jù)集存放在硬盤中。
通過Python 程序?qū)λ麍D片進行處理,即讀取水果訓練集圖片數(shù)據(jù)并轉(zhuǎn)化為TensorFlow 支持的數(shù)據(jù)格式。讀取圖片數(shù)據(jù)后為圖片數(shù)據(jù)添加標簽,然后與圖片數(shù)據(jù)一起存放在專門的圖片數(shù)據(jù)數(shù)組中。
3.2.2 設計卷積神經(jīng)網(wǎng)絡
為了保證圖像識別的準確率,直接采用LeNet-5經(jīng)典模型搭建圖像識別卷積神經(jīng)網(wǎng)絡,其中卷積池化層數(shù)量為2,全連接層數(shù)量為3。
3.2.3 訓練模型
由于Jetson Nano 硬件配置有限,因此在PC 上使用之前處理后的訓練集數(shù)據(jù)進行模型訓練,訓練完成后將模型保存,模型測試完成后再進行模型的邊緣部署。
3.2.4 測試模型
使用訓練完成模型進行測試,當準確率不理想時重新調(diào)參后,進行訓練測試,最后得到模型訓練集準確率約為97%,測試集準確率約為93%。
3.2.5 部署模型
模型測試完成后,將模型部署到Jetson Nano 平臺,通過opencv-python 模塊的VideoCapture 調(diào)用IMX219 攝像頭進行實時圖像拍攝驗證。
圖像識別水果秤的主軟件流程如圖5 所示,主要由抓拍圖像、圖像分類、稱重計價、語音交互、掃碼支付5 個步驟實現(xiàn)。
圖5 軟件流程
1)抓拍圖像
系統(tǒng)初始化完成后進入實時圖像抓拍環(huán)節(jié),Jetson Nano 驅(qū)動IMX219 攝像頭由上往下抓拍秤盤圖像,并進行預處理。
2)圖像分類
加載深度學習網(wǎng)絡模型,輸入預處理后的圖像數(shù)據(jù)進行推理,通過推理得到圖像的分類結果。
3)稱重計價
圖像分類后的結果如果為系統(tǒng)預錄的水果類別,則驅(qū)動稱重電路測量水果的重量,結合管理員預錄的水果單價計算出總價,再將水果類別、總價等信息輸出到觸摸屏進行提示。
4)語音交互
稱重計價完成后驅(qū)動語音模塊播放結果,包括水果的名稱、單價、種類和總價。詢問用戶是否進行結算,然后檢測用戶的語音回復。
5)掃碼支付
如果語音模塊檢測到用戶回復確認結算的語音指令時,彈出二維碼并進入等待支付狀態(tài),支付完成后即完成一次自助購買流程。
圖像識別水果秤的實物圖如圖6 所示,IMX219攝像頭安裝在觸摸屏上方,正對著秤盤往下拍攝。
圖6 圖像識別水果秤實物圖
實驗環(huán)節(jié)重點進行水果識別準確率測試,使用高仿真水果進行不同數(shù)量、不同種類的檢測目標組合進行圖像識別實驗,每種組合進行100次實驗測試。
首先,進行目標識別率測試實驗,以蘋果為目標舉例,分別通過不同蘋果數(shù)量組合、蘋果與其他水果混裝組合作為檢測主體,得到蘋果識別率測試部分典型數(shù)據(jù)如表1 所示。
表1 目標(蘋果)識別率數(shù)據(jù)
其次,在水果秤自助使用的場合,考慮到可能會出現(xiàn)水果混裝的情況,因此需要對系統(tǒng)的混裝判斷準確率進行測試實驗,得到部分典型數(shù)據(jù)如表2所示。
表2 混裝判斷準確率數(shù)據(jù)
由實驗數(shù)據(jù)分析可知,影響目標識別率的因素有兩個,分別是:
1)目標的數(shù)量
單一種類目標識別的情況下,目標的數(shù)量越多,識別率越低。
2)混裝目標的種類個數(shù)
非單一種類目標識別的情況下,混裝目標的種類個數(shù)越多,識別率越低。
雖然圖像識別水果秤目標識別率受識別主體的個別因素影響,但是目標水果識別率仍然能達到90%以上。整體種類混裝判斷準確率達到94%以上,總體能滿足基本應用要求。
圖像識別水果秤結合當今熱門的人工智能技術,可以讓水果秤重計價為全自動環(huán)節(jié),為各超市、水果商店降低人力成本,減少由于稱重計價錯誤所帶來的經(jīng)濟損失,加快企業(yè)的智能化轉(zhuǎn)型。