金傲 梁博天
摘要:本論文主要闡述了農(nóng)林業(yè)有害生物智能識別系統(tǒng)的開發(fā)過程,詳細(xì)講述了系統(tǒng)的需求、總體結(jié)構(gòu)、程序模塊設(shè)計及林業(yè)有害生物AI識蟲系統(tǒng)的測試結(jié)果等,并對整個系統(tǒng)進(jìn)行了總結(jié)分析。
關(guān)鍵詞:農(nóng)林害蟲;MINA; Django ; yolo-v5 ; pytorch
1.引言
1.1背景
我國是一個林業(yè)資源消耗大國,然而原生森林面積小,資源并不豐富。林木生長過程中每年都會遇到害蟲的侵害,災(zāi)害嚴(yán)重時,甚至?xí)?dǎo)致樹木大面積死亡。害蟲防治方法非常多,而化學(xué)農(nóng)藥是最為常用的手段之一,害蟲種類識別一旦發(fā)生錯誤,就會造成農(nóng)藥的濫用,使環(huán)境受到污染、食品安全和生態(tài)破壞等問題發(fā)生。因此,在害蟲防治過程中,最重要的還是害蟲的預(yù)警和檢測。能否準(zhǔn)確有效地對昆蟲進(jìn)行分類鑒定和識別也是能否及時展開蟲害防治、避免造成巨大資源、經(jīng)濟(jì)損失的一個重要前提。
昆蟲屬于無脊椎動物中的節(jié)肢動物,是自然環(huán)境中種類和數(shù)量最多的動物群體,已發(fā)現(xiàn)的昆蟲種類就有100多萬種。昆蟲的形態(tài)多變、紋理豐富。這就給昆蟲識別鑒定的時候造成很大的難度。傳統(tǒng)的昆蟲分類鑒定工作主要靠昆蟲專家或昆蟲分類人員根據(jù)專業(yè)知識和研究經(jīng)驗或參照文獻(xiàn)資料來進(jìn)行識別鑒定的,但即使有專業(yè)的知識和豐富的經(jīng)驗也很難避免種類混淆的情況發(fā)生,因此,開發(fā)一種針對害蟲的快速有效的分類識別系將有助于作物害蟲的防治,促進(jìn)農(nóng)業(yè)發(fā)展,減少經(jīng)濟(jì)損失。
1.2定位
基于計算機(jī)視覺的害蟲識別是基于多項高新技術(shù)的綜合應(yīng)用,其關(guān)鍵模塊涉及視頻圖像獲取、深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、高性能計算等技術(shù)。
作為載體的微信小程序是時下流行的輕量級應(yīng)用,基于微信的社交場景平臺以及為開發(fā)者提供的支持,本產(chǎn)品具有小體量以及工具化的特點。
2.林業(yè)有害生物智能識別系統(tǒng)特點
2.1 系統(tǒng)使用輕量化載體
前端開發(fā)使用微信小程序平臺,能實現(xiàn)跨平臺,無需針對iOS和Android平臺分別開發(fā)兩套代碼。而微信小程序限制2MB以內(nèi),并提供云服務(wù)和許多接口,用戶無需安裝下載即可使用。
2.2 功能多樣性強(qiáng)
用戶可通過小程序?qū)οx進(jìn)行拍攝識別,以實時獲取所遇到害蟲的種類,同時小程序也支持相冊圖片上傳識別,可以對參考資料中或來不及立即檢測的昆蟲圖片進(jìn)行識別。小程序中包含著害蟲的基礎(chǔ)資料庫,每當(dāng)識別成功害蟲,用戶可以通過底部菜單欄的資料功能查看該害蟲的基本資料。小程序還包含社區(qū)交流功能,當(dāng)遇到小程序內(nèi)未收納的害蟲或病害等可在社區(qū)對其他用戶發(fā)起問題咨詢。
2.3 基礎(chǔ)資料庫時效性強(qiáng)
小程序包含的資料庫會不定期更新,且管理人員會根據(jù)社區(qū)內(nèi)遇到的新害蟲或病害不斷完善資料庫,收納的資料會根據(jù)用戶的反饋實時、動態(tài)的進(jìn)行響應(yīng)。面對新發(fā)生的災(zāi)害也會及時擴(kuò)大資料庫,方便使用者獲取最新消息。
3.系統(tǒng)總體設(shè)計
整個識別系統(tǒng)主要由用戶終端、傳輸部分、信息處理和數(shù)據(jù)返回等幾部分組成。
1、用戶端:用戶端使用手機(jī)授權(quán)登錄微信小程序,可通過手機(jī)攝像頭(一般為前置攝像頭)拍攝照片,或讀取手機(jī)內(nèi)存空間,上傳照片。
2、傳輸部分:用戶上傳的圖片由為微信小程序前端傳遞到云服務(wù)器上部署的Django后端。
3、信息處理與數(shù)據(jù)返回:后端搭載yolo-v5昆蟲識別模型,對圖片進(jìn)行處理,讀取數(shù)據(jù)庫后,返回昆蟲種類、IoU(交并比)、Acc(準(zhǔn)確率)等識別信息。
4、前端結(jié)果顯示:監(jiān)測到后端返回的信息后,將關(guān)鍵信息在用戶端識別頁面上進(jìn)行打印顯示。
4.功能模塊設(shè)計
4.1 用戶信息模塊
為了平臺的安全性以及軟件的結(jié)構(gòu)性,用戶在進(jìn)入平臺后需要進(jìn)行登錄,主要包含用戶基本信息,授權(quán)登錄的微信賬號、發(fā)布問題等內(nèi)容。
4.2昆蟲識別處理模塊
圖片處理模塊中有兩種模式,單擊攝像頭拍照按鈕,啟動照相機(jī)進(jìn)行現(xiàn)場拍攝,處理攝像頭當(dāng)前捕捉的畫面。單擊從相冊上傳按鈕,選擇本地圖像文件進(jìn)行上傳到前端。
收集到的圖像會被傳入后端,后端會將圖像進(jìn)行識別處理。加載yolo-v5識別模型,識別圖片,將收集到的標(biāo)簽信息與數(shù)據(jù)庫中的標(biāo)簽信息進(jìn)行比較,返回識別出的昆蟲的名稱和相關(guān)信息。
4.3 社區(qū)模塊
這一模塊提供社區(qū)交流功能,用戶可通過用戶信息界面在社區(qū)發(fā)布自己的問題,同時提供評論功能,便于用戶間交流信息。
4.4 資料庫模塊
這一模塊通過兩層索引,實現(xiàn)按植物類型分類查找病蟲害以及對應(yīng)內(nèi)容,包括危害特征,發(fā)生特點,防治措施。
4.5 運行控制
用戶授權(quán)登陸后進(jìn)入首頁圖像處理模塊,可以實現(xiàn)昆蟲圖像拍攝,圖像上傳,查看識別信息等功能。在資料庫模塊,可以通過植物種類和名稱查看主要危害昆蟲相關(guān)資料。在社區(qū)模塊可以查看他人帖子,并發(fā)表評論。在用戶信息系可以查看基本信息以及發(fā)帖、反饋漏洞。
5.微信小程序前端開發(fā)
前端開發(fā)是在微信小程序開發(fā)者工具平臺下開發(fā)完成,設(shè)計了首頁、資料、社區(qū)交流、用戶信息四個界面。小程序的開發(fā)用了官方提供的框架—MINA框架,它由視圖層、邏輯層和系統(tǒng)層三個部分構(gòu)成。[2]MINA框架實現(xiàn)了基于TCP/IP協(xié)議的Socket封裝,具有良好的封裝性靈活擴(kuò)展性,可高效完成不同計算機(jī)進(jìn)程間的通信[3],讓微信小程序用盡可能簡單高效的方式完成總體的開發(fā)具有原生 APP 體驗的服務(wù)。
用戶在手機(jī)端拍照或上傳圖片后,圖片將自動上傳至云服務(wù)器,經(jīng)后端接收對比識別后,識別結(jié)果再返回至用戶微信端。用戶也可通過手機(jī)微信直接獲取云服務(wù)器存儲的基礎(chǔ)資料庫,來查找對應(yīng)作物病蟲害的防治手段等。
6.昆蟲識別算法實現(xiàn)
昆蟲識別基于yolo-v5方法,本算法主要由yolo-v5的目標(biāo)檢測模塊,以及后置的SENet分類矯正模塊組成。上述算法兩部分依次進(jìn)行,先使用YoloV5得出檢測框和分類結(jié)果,然后將檢測框裁剪出來使用分類網(wǎng)絡(luò)進(jìn)一步矯正分類結(jié)果,最后通過一個改進(jìn)的NMS方案得到最終結(jié)果。
為避免系統(tǒng)默認(rèn)python版本的沖突,這里使用anaconda創(chuàng)建了一個python3.7的環(huán)境,其下安裝一些必要的依賴,并測試了gpu訓(xùn)練加速的效果,由于前期準(zhǔn)備不足和硬件的限制,暫時準(zhǔn)備使用cpu訓(xùn)練規(guī)模比較小的測試數(shù)據(jù)集進(jìn)行嘗試。
Yolov5方法下,首先將圖片處理壓縮,使輸入尺寸為416*416,然后進(jìn)入CSPNET特征提取網(wǎng)絡(luò),用殘差結(jié)構(gòu)經(jīng)過上采樣,DBL特征提取后輸出三個13*13特征圖,每個特征圖對應(yīng)3種anchor大小不同的負(fù)責(zé)預(yù)測目標(biāo)。
7.云服務(wù)器后端部署
本項目開發(fā)采用了前后端分離開發(fā)原則,后端基于Django框架進(jìn)行開發(fā)。Django采用MVC模型,即Model View Controller,模型(model)-視圖(view)-控制器(controller) [4],使用業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在版本迭代時不需要重新編寫業(yè)務(wù)邏輯為滿足后端保持運行。Django業(yè)務(wù)邏輯中引入yolov5識別模型,通過get請求獲取圖片,post回傳識別結(jié)果。使用web服務(wù),通過云服務(wù)器地址傳遞信息。
根據(jù)需求,django后端使用騰訊云服務(wù)器搭載,根據(jù)微信小程序安全需求,不再使用IP作為目標(biāo),采取基于https協(xié)議的域名地址。它具有更高的安全性以及傳輸保障,使得數(shù)據(jù)傳輸過程中被竊取的風(fēng)險大大降低,用戶安全性得以提高。
8.軟件界面
9.結(jié)語
本項目基于微信小程序,針對不同用戶對林葉害蟲種類識別與林業(yè)蟲害防治措施的信息需求,實時給予用戶害蟲種類、蟲害預(yù)防措施及補(bǔ)救措施等消息的設(shè)計方案,運用微信組件、騰訊云基礎(chǔ)架構(gòu)、YOLOv5算法實現(xiàn)林葉害蟲智能識別系統(tǒng)的研發(fā)。平臺可完成害蟲種類識別、蟲害防治措施信息獲取、社區(qū)問題交流等功能,且僅需用戶具備微信功能即可使用,無需下載安裝,實現(xiàn)用完即走的理想模式,使用方便推廣簡單。本系統(tǒng)可帶動林業(yè)害蟲防治從“信息化”向“智慧化”發(fā)展,即使缺乏相關(guān)專業(yè)知識也能通過本系統(tǒng)便捷的獲取相關(guān)信息,減輕了林業(yè)防治人員的負(fù)擔(dān),也提高了林業(yè)防治的管理效率。
參考文獻(xiàn):
[1]倪紅軍.微信小程序案例開發(fā)[M].北京:清華大學(xué)出版社,2020.
[2]馬靜.基于微信小程序差旅補(bǔ)助系統(tǒng)的設(shè)計與實現(xiàn)[J].科技創(chuàng)新與生產(chǎn)力.2020,(08):52-54.
[3]Lee T.,2006.Introduction to MINA(2020-2-25).
[4]ASP.NET MVC.CodePlex(2013-04-13)