金傲 梁博天


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