劉佳輝,劉 強,李彤召
(北京科技大學(xué)天津?qū)W院,天津 301830)
近年來,物聯(lián)網(wǎng)技術(shù)的大力發(fā)展極大便利了我們的生活[1]。對于農(nóng)業(yè)而言,智慧農(nóng)業(yè)也是當下物聯(lián)網(wǎng)發(fā)展的熱門方向,很多地方已經(jīng)建立了智慧農(nóng)業(yè)的規(guī)模化產(chǎn)業(yè)園。隨著人們對農(nóng)副產(chǎn)品質(zhì)量要求的不斷提高,以及產(chǎn)品質(zhì)量檢測技術(shù)的不斷完善,規(guī)模化設(shè)施農(nóng)業(yè)病蟲害的防治已經(jīng)成為一大問題,對防止病蟲害提前采樣預(yù)警相關(guān)技術(shù)的應(yīng)用和發(fā)展也提出了更高、更新的要求。目前,國內(nèi)絕大多數(shù)地區(qū)對于農(nóng)業(yè)病蟲害的防治大多在病蟲害發(fā)生之后進行農(nóng)藥殺蟲[2]。此法已經(jīng)不適應(yīng)當今形勢的發(fā)展[3]。本文介紹了一款芯片國產(chǎn)化,可以實時檢測農(nóng)業(yè)病蟲害是否發(fā)生,并將識別結(jié)果上傳到服務(wù)器的物聯(lián)網(wǎng)設(shè)備,以供用戶通過采樣分析等方式提前做出病蟲害防治的相應(yīng)決策[4]。
系統(tǒng)主要分為模型訓(xùn)練和物聯(lián)網(wǎng)平臺搭建兩部分,模型訓(xùn)練使用基于YOLOv3的視覺識別算法,物聯(lián)網(wǎng)平臺主要包括堪智K210主控板,ESP8285 WiFi模塊,OV2650攝像頭模塊,LCD顯示屏等硬件模塊,以及視覺識別實現(xiàn)和基于MQTT通信協(xié)議的數(shù)據(jù)傳輸[5]。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖
基于國產(chǎn)芯片和RTOS的農(nóng)業(yè)病蟲害檢測系統(tǒng)的硬件選用國產(chǎn)堪智K210開發(fā)板,其采用了RISC-V處理器架構(gòu),可編程能力強,搭配國產(chǎn)的RT-Thread實時操作系統(tǒng)。RTThread實時操作系統(tǒng)秉承著小而美的設(shè)計理念,進行了設(shè)備端和云端的一體化設(shè)計,便于接入各類主流的物聯(lián)網(wǎng)設(shè)備云平臺[6]。
感知識別層選擇使用OV5040傳感器,其支持輸出最大為500萬像素的圖像,并且支持直接輸出jpeg格式的圖像,在進行圖像傳輸時可以大大減小數(shù)據(jù)量,方便進行網(wǎng)絡(luò)傳輸,還可以對圖像進行補償以傳輸更加清晰的圖像[7]。
網(wǎng)絡(luò)構(gòu)建層在物聯(lián)網(wǎng)架構(gòu)上承擔(dān)著承上啟下的作用,在本項目中將搭建基于MQTT協(xié)議的網(wǎng)絡(luò)傳輸鏈路,硬件部分使用ESP8285 WiFi模塊,此通信協(xié)議具有帶寬占用小、傳輸速度快、丟包率低等特點[8]。
平臺管理層依托國產(chǎn)的RT-Thread實時操作系統(tǒng),通過部署到開發(fā)板上的農(nóng)業(yè)病蟲害識別模型實時識別結(jié)果,然后通過MQTT通信協(xié)議將識別結(jié)果上傳到遠程服務(wù)器,以實現(xiàn)客戶端與設(shè)備端的無線連接。
綜合應(yīng)用層作為物聯(lián)網(wǎng)工程的最頂層,在本項目中,其將攝像頭捕捉的信息分析結(jié)果在云端平臺進行處理,得出相應(yīng)的農(nóng)業(yè)病蟲害是否發(fā)生的結(jié)論,以及發(fā)生病蟲害的概率,用戶就可以根據(jù)病蟲害發(fā)生的概率進行決策。
垃圾桶的軟硬件設(shè)計整體依托國產(chǎn)芯片以及國產(chǎn)實時操作系統(tǒng),為提高圖像的檢測效率,提高檢測精準度,本項目采用堪智K210系列芯片,且其板載通用神經(jīng)網(wǎng)絡(luò)加速器(KPU),可以實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的計算,時時獲取被檢測目標的大小、坐標和種類[9]。
嵌入式軟件部分采用RT-Thread實時操作系統(tǒng),其占用資源極少,使物聯(lián)網(wǎng)開發(fā)變得簡單、高效。
視覺識別的基礎(chǔ)在于模型的搭建,本項目將模型訓(xùn)練任務(wù)搭建在了百度飛槳深度學(xué)習(xí)平臺,因為YOLOv3具有模型小、速度快等特點,非常適合在單片機上運行,故選擇YOLOv3算法。
將事先準備好的模型導(dǎo)入百度飛漿平臺,數(shù)據(jù)包含訓(xùn)練集所需圖片(對圖片標注文件)。標注可以借助labelImg工具等,這里不再贅述。標注文件是對圖片的說明,包含圖片尺寸,昆蟲名稱以及在圖上出現(xiàn)的位置等信息[10]。
從數(shù)據(jù)集中讀取xml文件,將每張圖片的標注信息讀取出來。在讀取具體的標注文件之前,需要將昆蟲的類別名字(字符串)轉(zhuǎn)化成數(shù)字表示的類別。因為神經(jīng)網(wǎng)絡(luò)計算時需要的輸入類型是數(shù)值型,所以需要將字符串表示的類別轉(zhuǎn)化成具體的數(shù)字。例如昆蟲類別名稱的列表是:[‘a(chǎn)nt’, ‘bee’,‘fly’, ‘a(chǎn)phid’, ‘a(chǎn)rmandi’, ‘cabbage caterpillar’],這里我們約定此列表中:‘a(chǎn)nt’對應(yīng)類別0,‘bee’對應(yīng)類別1,…,‘cabbage caterpillar’對應(yīng)類別5。
數(shù)據(jù)準備好后要進行數(shù)據(jù)的讀取和預(yù)處理,這對于訓(xùn)練神經(jīng)網(wǎng)絡(luò)而言非常重要。數(shù)據(jù)預(yù)處理是將圖片進行一些隨機變化,比如變亮、變暗或者建材填充等,以產(chǎn)生更多相似樣本,達到擴大數(shù)據(jù)集、抑制過擬合、提升模型泛化能力的目的。
等所有數(shù)據(jù)集準備完成后就可以進行模型搭建了,本項目使用YOLOv3進行模型設(shè)計,該算法包含兩部分,第一部分是按照一定規(guī)則產(chǎn)生候選區(qū)域,根據(jù)產(chǎn)生的候選區(qū)域與圖片上物體真實框之間的位置關(guān)系對候選區(qū)域進行標注。第二部分是根據(jù)候選區(qū)域使用卷積神經(jīng)網(wǎng)絡(luò)提取圖片特征,并對候選區(qū)域位置和類別進行預(yù)測。YOLOv3的算法流程如圖2所示,預(yù)測流程如圖3所示。
圖2 YOLOv3算法訓(xùn)練流程
圖3 預(yù)測流程
由于得到的基于YOLOv3訓(xùn)練的模型在K210單片機上并不能識別,所以在部署之前需要使用NNCase工具將tflite模型轉(zhuǎn)換成kmodel模型,然后使用K210官方提供的kflash_gui工具將kmodel模型下載到K210的FLASH中。圖4、圖5為模型部署完之后的測試結(jié)果。
圖4 發(fā)生病蟲害的葉片
圖5 未發(fā)生病蟲害的葉片
使用MQTT協(xié)議實現(xiàn)遠程監(jiān)控功能。MQTT是基于發(fā)布/訂閱模式的輕量級通信協(xié)議,其具有低開銷/低寬帶等特點,適合部署在大片農(nóng)田進行多點數(shù)據(jù)傳輸。使用K210開發(fā)板自帶的ESP8285透傳模式將識別結(jié)果實時上傳至服務(wù)器供客戶端訂閱,測試結(jié)果如圖6、圖7所示。
圖6 無病蟲害
圖7 有病蟲害
本文設(shè)計的基于國產(chǎn)芯片和操作系統(tǒng)的農(nóng)業(yè)病蟲害實時檢測系統(tǒng),將視覺識別技術(shù)與單片機技術(shù)相結(jié)合,實現(xiàn)了自動化農(nóng)業(yè)病蟲害檢測功能,為開發(fā)者提供了新的問題解決方案。