陶 治 孔建磊,2 金學(xué)波,2 白玉廷,2 蘇婷立,2
1(北京工商大學(xué)計(jì)算機(jī)與信息工程學(xué)院 北京 100048)2(北京工商大學(xué)食品安全大數(shù)據(jù)技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 100048)
據(jù)中國統(tǒng)計(jì)年鑒,2016年我國農(nóng)業(yè)生產(chǎn)總值達(dá)5.93萬億元,占GDP的8%;但由農(nóng)業(yè)病害等災(zāi)害造成的直接損失達(dá)0.503萬億元,占農(nóng)業(yè)生產(chǎn)總值的8.48%,其中,病蟲害是農(nóng)作物最大的威脅[1]。隨著物聯(lián)網(wǎng)與圖像識(shí)別技術(shù)的快速發(fā)展,將圖像識(shí)別技術(shù)應(yīng)用于農(nóng)業(yè)相關(guān)領(lǐng)域尤其是病蟲害的識(shí)別是相關(guān)領(lǐng)域的研究熱點(diǎn),如將圖像識(shí)別技術(shù)應(yīng)用在椪柑病蟲害[2]、番茄葉部病害[3]、蘋果病蟲害[4-5]等。此外,隨著智能終端的快速發(fā)展,將相關(guān)圖像識(shí)別技術(shù)應(yīng)用到手機(jī)等終端上,可以有效、便捷地解決農(nóng)業(yè)生產(chǎn)中的問題[6-7];本研究利用目前計(jì)算機(jī)視覺中高效的圖像識(shí)別技術(shù),設(shè)計(jì)了基于Android的農(nóng)作物病蟲害圖像識(shí)別App系統(tǒng),以期能為相關(guān)領(lǐng)域研究提供參考。
農(nóng)作物一旦發(fā)生病害或蟲害,若初期或關(guān)鍵時(shí)期沒有發(fā)現(xiàn),或者識(shí)別錯(cuò)誤,將導(dǎo)致不當(dāng)?shù)奶幚泶胧┮灾劣谠斐勺魑锂a(chǎn)量下降,甚至形成作物的糧食安全問題。因此,對于作物的病蟲害實(shí)現(xiàn)精確的識(shí)別是農(nóng)業(yè)工程中十分實(shí)際的問題。而隨著智能手機(jī)的廣泛普及,農(nóng)戶人員或者相關(guān)病蟲害研究人員使用手機(jī)軟件隨手拍攝圖片,通過系統(tǒng)軟件進(jìn)行快速高效的識(shí)別,是指導(dǎo)農(nóng)業(yè)病蟲害研究預(yù)防的有效手段。
整體系統(tǒng)功能分為三個(gè)部分,分別是用戶功能、管理員功能以及科研人員功能,如圖1所示。
圖1 功能劃分示意圖
對于不同的用戶,對其功能權(quán)限進(jìn)行了劃分。在用戶層面,用戶可以實(shí)時(shí)對上傳的病蟲害圖像進(jìn)行識(shí)別以及當(dāng)?shù)靥鞖獠樵兊裙δ埽辉诠芾韱T層面上,管理員還可以進(jìn)行更多樣本的收集標(biāo)注以及訓(xùn)練模型、數(shù)據(jù)篩選等權(quán)限操作;此外,對于研究人員,支持其進(jìn)行數(shù)據(jù)查詢、數(shù)據(jù)下載分析等研究功能。
如圖2所示,系統(tǒng)共采集、收集了來自蘋果、櫻桃、玉米、葡萄、柑桔、桃、辣椒、馬鈴薯等多個(gè)對象的病害與蟲害圖片,病蟲害種類共計(jì)181類,各類數(shù)量達(dá)到400幅及以上,單幅照片至少含有1個(gè)目標(biāo)樣本,同時(shí),為保證各類病蟲害總體樣本數(shù)據(jù)相近,各類之間相差不超過50個(gè)樣本,確保分布平衡。
圖2 病蟲害數(shù)據(jù)集樣本
數(shù)據(jù)準(zhǔn)備與預(yù)處理的優(yōu)劣程度,對模型最大準(zhǔn)確率有直接的影響,數(shù)據(jù)分布不均、噪聲過大、各類別樣本不均衡等因素,均會(huì)造成模型難以收斂或產(chǎn)生虛假訓(xùn)練結(jié)果,影響模型性能。因此將合格照片進(jìn)行處理,并統(tǒng)一批量重命名為規(guī)定格式,以采集時(shí)間、采集數(shù)量、采集種類進(jìn)行編碼,自動(dòng)形成統(tǒng)一命名的批量數(shù)據(jù)后,本研究進(jìn)行了一系列去除模糊、抖動(dòng)、曝光過度圖片的預(yù)處理操作以及數(shù)據(jù)增強(qiáng)的手段,如隨機(jī)旋轉(zhuǎn)角度(設(shè)置為60°)、水平偏移(幅度選為0.2)、垂直偏移(幅度選為0.2)、重縮放(縮放因子選為1/255)、垂直水平180°翻轉(zhuǎn)等。
在上述處理以及增強(qiáng)操作的基礎(chǔ)上,開展每張照片的標(biāo)定工作,對每幅照片存在的多種害蟲分別進(jìn)行標(biāo)注及定位,以下述標(biāo)注原則進(jìn)行標(biāo)注:
(1) 當(dāng)圖片包含多個(gè)對象時(shí),標(biāo)記出每個(gè)目標(biāo)。
(2) 當(dāng)圖片中有兩個(gè)重疊的目標(biāo)對象時(shí),應(yīng)在可見部分周圍用方框畫出被遮擋的部分并以規(guī)定編碼形式進(jìn)行存儲(chǔ),每幅照片對應(yīng)一個(gè)標(biāo)注文件,形成用于本系統(tǒng)識(shí)別及檢測模型的病蟲害基礎(chǔ)訓(xùn)練數(shù)據(jù)庫。
圖3 圖片標(biāo)注示例
識(shí)別模型的設(shè)計(jì)分為兩個(gè)主要方面:訓(xùn)練過程和識(shí)別過程。模型訓(xùn)練過程通過大量的有標(biāo)記樣本進(jìn)行監(jiān)督學(xué)習(xí),讓模型能夠?qū)W習(xí)到特定的語義特征,通過不斷地前向傳播與反向傳播,進(jìn)行迭代訓(xùn)練,逐漸提高模型識(shí)別精度與準(zhǔn)確性。模型識(shí)別只有前向傳播過程,利用訓(xùn)練過程中所學(xué)習(xí)到的參數(shù),對輸入圖片進(jìn)行卷積運(yùn)算,經(jīng)過特定的計(jì)算方式輸出識(shí)別結(jié)果和置信度。
識(shí)別過程中,其基礎(chǔ)的是圖像分類模型,主要用于去除無效圖像和圖像粗略分類,在分類網(wǎng)絡(luò)中如VGG16[8]、Resnet[9]、GoogLeNet[10]等都具有不錯(cuò)的分類效果。由于本研究采用的是yolo檢測模型,其基本的分類網(wǎng)絡(luò)采用的是與其他分類網(wǎng)絡(luò)具有同等性能的Darknet網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 Darknet53分類網(wǎng)絡(luò)結(jié)構(gòu)
該網(wǎng)絡(luò)主要是由一系列的1×1和3×3的卷積層組成,其中每個(gè)卷積層后都會(huì)跟一個(gè)正則化BN層和一個(gè)LeakyReLU激活層,共同構(gòu)成了最小組件。其中,結(jié)構(gòu)圖中resn組件代表含有n個(gè)res單元;作為yolo_v3的大組件,通過借鑒了ResNet的殘差結(jié)構(gòu),res單元結(jié)構(gòu)可以讓網(wǎng)絡(luò)結(jié)構(gòu)更深。
在上述darknet53模型上,病蟲害的整體檢測網(wǎng)絡(luò)采用yolo_v3[11]檢測網(wǎng)絡(luò),用于識(shí)別圖像中病蟲害的位置以及種類,其網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。
圖5 檢測網(wǎng)絡(luò)結(jié)構(gòu)
相比較初代的yolo_v1[12]和yolo_v2[13],yolo_v3進(jìn)一步采用了3個(gè)不同尺度的特征圖來進(jìn)行對象檢測,能夠檢測到多維度特征信息;yolo_v3網(wǎng)絡(luò)在三個(gè)特征圖中分別通過(4+1+c)·k個(gè)大小為1×1的卷積核進(jìn)行卷積預(yù)測,其中k為預(yù)設(shè)邊界框的個(gè)數(shù)(k默認(rèn)取3),c為預(yù)測目標(biāo)的類別數(shù),其中4k個(gè)參數(shù)負(fù)責(zé)預(yù)測目標(biāo)邊界框的偏移量,k個(gè)參數(shù)負(fù)責(zé)預(yù)測目標(biāo)邊界框內(nèi)包含目標(biāo)的概率,ck個(gè)參數(shù)負(fù)責(zé)預(yù)測該k個(gè)預(yù)設(shè)邊界框?qū)?yīng)c個(gè)目標(biāo)類別的概率。
與此同時(shí),為了提升病蟲害目標(biāo)檢測準(zhǔn)確率,本研究使用的提升方法:
(1) 批量正則化(Batch Normalization)[14]:對網(wǎng)絡(luò)的每個(gè)卷積層之后添加批量標(biāo)準(zhǔn)化,有助于對模型進(jìn)行規(guī)范化,并且在優(yōu)化中途退出后仍然不用擔(dān)心過系統(tǒng)出現(xiàn)擬合問題,提升整個(gè)識(shí)別算法穩(wěn)定性。
(2) 維度聚類(dimension cluster):K-means聚類是聚類算法中最為簡單、高效的,核心思想是由用戶指定k個(gè)初始質(zhì)心(initial centroids)以作為聚類的類別(cluster),重復(fù)迭代直至算法收斂。通過采用K-means[15]聚類方法訓(xùn)練邊界框,可以自動(dòng)找到較好的框的寬高維度。
(3) 遷移學(xué)習(xí)(transfer learning):為了獲得一個(gè)泛化能力強(qiáng)、精度高的模型,本研究使用遷移學(xué)習(xí)的思路,將在imagenet數(shù)據(jù)庫預(yù)訓(xùn)練好的模型遷移過來,在此遷移基礎(chǔ)上實(shí)現(xiàn)模型的高效運(yùn)行。
基于上述的算法模型,隨機(jī)挑選收集數(shù)據(jù)的65%作為訓(xùn)練集,挑選20%作為驗(yàn)證集,15%為綜合測試集,將數(shù)據(jù)集擴(kuò)展為五個(gè)訓(xùn)練批次和一個(gè)測試批次,每個(gè)批次有400幅圖像。測試批次包含來自每個(gè)類別的隨機(jī)選擇的圖像。在具有四個(gè)NVIDIA Tesla p40 GPU和256 GB RAM的Intel Core i7 3.6 GHz處理器上進(jìn)行了訓(xùn)練和測試,為了比較模型之間的性能差異,本研究對多個(gè)檢測模型進(jìn)行了實(shí)驗(yàn)比較,結(jié)果如表1所示。
表1 實(shí)驗(yàn)檢測結(jié)果檢測框架
正如結(jié)果所示,以Darknrt-53為特征提取器的yolo-v3具有更高精度的檢測結(jié)果,以此為模型實(shí)現(xiàn)的病蟲害識(shí)別系統(tǒng)具有較高的精度效果。
系統(tǒng)采用C/S(App)技術(shù)架構(gòu),搭建數(shù)據(jù)服務(wù)、移動(dòng)終端服務(wù)等。其中,在物理架構(gòu)上,使用ubuntu16.04的操作系統(tǒng)以及MySQL數(shù)據(jù)庫系統(tǒng),在intel E5-2600及以上的CPU、NVIDIA GTX1080Ti及以上的GPU上搭建Android4.0的移動(dòng)終端。具體開發(fā)工具分為App開發(fā)工具與模型開發(fā)工具,其中App開發(fā)工具包括Ubuntu 16.4、MySQL 5.6.37、go1.8.linux-amd64、Vs code、Android studio、Navicat、jdk-8u101-linux-x64,模型開發(fā)工具包括Anacoda2、Tensorflow-GPU-1.4、Cuda 8.0、CUDNN 6.0、Pytorch 0.4、Pycharm 3、Jupyter 2.9、TensorBoard、LabelImg。
在上述開發(fā)工具與基本架構(gòu)的基礎(chǔ)上設(shè)計(jì)本系統(tǒng)的整體架構(gòu)如圖6所示。
圖6 系統(tǒng)架構(gòu)
經(jīng)過需求分析、系統(tǒng)設(shè)計(jì)、軟件實(shí)現(xiàn)、測試與試運(yùn)行、功能調(diào)整等過程,最終病蟲害識(shí)別系統(tǒng)實(shí)現(xiàn)了如下功能:(1) 實(shí)時(shí)天氣查看;(2) 注冊登錄,包括管理員和普通用戶;(3) 病蟲害實(shí)時(shí)動(dòng)態(tài)識(shí)別;(4) 管理員標(biāo)記目標(biāo);(5) 根據(jù)標(biāo)記數(shù)據(jù)自主學(xué)習(xí);(6) 在地圖上顯示病蟲害查詢位置;(7) 自動(dòng)收集所有數(shù)據(jù)和信息,為后續(xù)大數(shù)據(jù)分析提供數(shù)據(jù)來源。
系統(tǒng)有普通用戶和管理員兩個(gè)級別的使用權(quán)限,用戶輸入用戶名、密碼及權(quán)限等級進(jìn)行登錄。新用戶則可以點(diǎn)擊右上角的“注冊”按鈕,進(jìn)入賬號注冊界面,完成新用戶注冊,見圖7。
圖7 App注冊界面
普通用戶登錄賬號后,進(jìn)入主界面,如圖8所示。主界面頂部具備用戶所在地址、天氣實(shí)時(shí)等信息,中間區(qū)域則滾動(dòng)呈現(xiàn)用戶歷史圖像及相應(yīng)識(shí)別結(jié)果。
圖8 App主界面與數(shù)據(jù)上傳界面
用戶從相冊或拍照獲得需要檢測的圖片后,進(jìn)入數(shù)據(jù)上傳界面,該界面會(huì)根據(jù)用戶網(wǎng)絡(luò)狀態(tài)、傳輸速率進(jìn)行呈現(xiàn)。
在完成數(shù)據(jù)傳輸后,進(jìn)入“識(shí)別效果反饋界面”,如圖9所示。該界面會(huì)根據(jù)獲取圖像的識(shí)別情況進(jìn)行智能化反饋:(1) 當(dāng)上傳圖像中不存在病蟲害或尺寸過小、被遮擋等情況,又或出現(xiàn)網(wǎng)絡(luò)中斷、傳輸終止等狀況,以及上傳圖像質(zhì)量差、抖動(dòng)模糊、徑切向畸變、拍攝環(huán)境過亮或過暗等情況,識(shí)別系統(tǒng)會(huì)反饋給用戶的“無法識(shí)別”提示,并告知查看“幫助說明”,建議“重新拍照”。(2) 當(dāng)圖像中存在目標(biāo)對象,且網(wǎng)絡(luò)傳輸正常、上傳圖像質(zhì)量優(yōu)良,則根據(jù)模型算法給出相應(yīng)的識(shí)別效果,提示用戶“識(shí)別到病害蟲”,并在圖像中框出害蟲所在位置,說明其種類、數(shù)量、辨識(shí)等信息,給出相應(yīng)防控建議。
圖9 數(shù)據(jù)標(biāo)注界面
用戶為管理員登錄賬號后,在主界面點(diǎn)擊“相冊”或“拍照”按鈕后,進(jìn)入管理員專用的“標(biāo)注操作界面”,底部的“選擇”按鈕對應(yīng)普通用戶的上傳識(shí)別功能,點(diǎn)擊則進(jìn)入“識(shí)別效果反饋界面”。在此基礎(chǔ)上,管理員多出“圖像標(biāo)注”和“數(shù)據(jù)上傳”按鈕,可以實(shí)現(xiàn)完成標(biāo)記并上傳病蟲害數(shù)據(jù)的功能。
本系統(tǒng)針對病蟲害對象,基于Android開發(fā)建設(shè)專用作物的病蟲害識(shí)別系統(tǒng),采用主動(dòng)采集與網(wǎng)絡(luò)數(shù)據(jù)抓取方式,經(jīng)過智能篩選及異構(gòu)數(shù)據(jù)融合等技術(shù)手段,實(shí)現(xiàn)數(shù)據(jù)有效獲取并保證其真實(shí)可靠。實(shí)現(xiàn)病蟲害識(shí)別、病蟲害情況上報(bào)、病蟲害預(yù)警等功能,為科研機(jī)構(gòu)、政府、企業(yè)、農(nóng)用品經(jīng)銷商以及消費(fèi)者提供決策支持和信息服務(wù)。受限于樣本與技術(shù),針對算法模型的進(jìn)一步優(yōu)化升級,提升識(shí)別檢測準(zhǔn)確度,將應(yīng)用范圍進(jìn)一步擴(kuò)大是未來工作的研究方向。