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