?

基于深度學習的玉米病蟲害智能診斷系統開發

2023-12-13 15:25姚強付忠軍李君保呂斌粟超郭彩霞
南方農業·上旬 2023年9期
關鍵詞:深度學習

姚強 付忠軍 李君?!伪蟆∷诔」氏?/p>

摘 要 使用自定義CNN和DenseNet201兩種基于深度學習的網絡,對大斑病、南方銹病、玉米黏蟲、玉米蚜蟲、玉米葉螨等10種常見玉米病蟲害圖像樣本開展模型訓練,并對部分訓練結果進行了對比分析。發現所得val_accuracy大于0.8的模型中,基于CNN網絡的模型相對穩定,val_loss值相對較小,說明在特定情況下基于CNN網絡的模型收斂性相對較好,但DenseNet201網絡更容易取得較高準確率的模型。面向Android系統開發基于深度學習的玉米病蟲害智能診斷系統,并對系統開展診斷結果驗證。驗證結果:系統對于小斑病、紋枯病、莖腐病3種病害的診斷錯誤率較高,泛化能力不足。結論:開發基于深度學習的玉米病蟲害智能診斷系統是可行的,但還需進一步調整完善。

關鍵詞 玉米病蟲害;深度學習;CNN;DenseNet201;智能診斷系統

中圖分類號:S126 文獻標志碼:B DOI:10.19415/j.cnki.1673-890x.2023.17.019

玉米具有豐富的營養價值,作為重要的糧食作物在我國被廣泛種植,其產量約占我國糧食總產量的1/4。病蟲害的發生會直接影響玉米產量,如果不能及早識別并進行防治,會造成大幅減產。在種植過程中,病蟲害的發現、診斷與防治是玉米生產中的重要環節。如何及時準確地診斷出病蟲害信息,并給出合理有效的防治措施,已成為一個重要研究方向。隨著信息技術、AI、物聯網、大數據、移動互聯網等的高速發展,越來越多的技術和產品被應用于玉米生長過程監測、病蟲害識別診斷。隨著智能手機已在國內廣泛普及使用,且性能越來越好,其自身攜帶的攝像頭為隨時拍攝圖像和視頻提供了極大的便捷。本研究基于深度學習的方法開展玉米病蟲害識別診斷模型設計與訓練,開發了基于Android系統的玉米病蟲害智能診斷系統手機APP。

1? 研究背景

近十年,國內外農業領域越來越多地應用了圖像識別、機器視覺、深度學習等技術。深度學習以其自動提取特征、學習能力強、覆蓋范圍廣、適應性好、可移植性好等特點,越來越受到重視。在玉米病蟲害識別應用上,國內外開展了大量基于深度學習的探索和研究。例如,樊湘鵬等為解決田間環境復雜背景下病害識別困難、識別模型應用率低的問題,提出了一種基于改進卷積神經網絡的玉米病害識別方法,對田間復雜背景下的9種玉米病害進行識別[1]。許景輝等在Image Net數據集上對玉米病害(大斑病、銹?。┦褂肰GG16預訓練模型進行病害識別,提升了模型識別精度和訓練效率[2]。劉翱宇等針對玉米葉病害識別的問題,引入焦點損失函數(Focal Loss)專注于難分類的病害樣本,提出了一種深度殘差網絡TFL-Res Net,在Res Net50網絡的基礎上利用遷移學習,對玉米4種病害進行識別,新網絡收斂更快,效果更好[3]。王國偉等采用LeNet模型,對玉米花葉病、灰斑病、銹病、葉斑病進行識別試驗[4]。朱家輝等對Al Challenger比賽的農作物葉片病害數據集圖像預處理后,使用VGG16和Res Net50對玉米等農作物病害圖像進行分類識別[5]。Xu等人為了提高玉米病害識別的準確性,避免參數過多導致的過擬合問題,用全局匯集層替換全連通層,提出了一種多尺度卷積全局池化的神經網絡[6]。Chen等基于DenseNet,保留過渡層結構,使用深度可分離卷積替換傳統卷積層,并嵌入注意力模塊,提出一種基于注意力嵌入的輕量級新型玉米病害識別網絡[7]。陳桂芬等使用CNN模型基于遷移學習方法對玉米5種常見病害(3種斑點病害及黑穗病、瘤黑粉?。┻M行識別[8]。李恩霖等使用PlantVillage公開數據集作為病害樣本,分別基于VGG16、Inception V3、ResNet50、ResNet101、DenseNet121等5種深度卷積神經網絡建立病害識別模型,對銹病、葉枯病、灰斑病3種典型玉米病害開展分類識別研究[9]。

2? 模型設計和訓練

2.1? 模型設計

模型設計主要包括:病蟲害種類的選取、深度學習網絡的選擇等。

2.1.1? 病蟲害種類選取

模型選取10種發生在玉米植株地上部位的常見病蟲害,包括大斑病、小斑病、紋枯病、莖腐病、南方銹病、玉米螟、玉米黏蟲、玉米棉鈴蟲、玉米蚜蟲、玉米葉螨。

2.1.2? 深度學習網絡選擇

深度學習網絡有很多種類,卷積神經網絡(CNN)主要用在計算機視覺(CV)中,在圖像處理方面表現十分出色,當前開展的基于深度學習的農作物病蟲害診斷識別大多采用CNN網絡。

模型采用自定義CNN網絡和DenseNet201網絡分別開展訓練。自定義CNN的網絡結構如圖1所示。DenseNet201的網絡結構如圖2所示。

CNN的基本結構由輸入層(Input layer)、卷積層(Convolutional layer)、池化層(Pooling layer)、全連接層(Fully connected layer)及輸出層(Output layer)構成。卷積層提取圖像特征,池化層對特征抽樣,全連接層將提取的特征連接起來,分類器輸出結果。本研究使用的CNN網絡有10個輸入層神經元(對應10個玉米病蟲害分類),神經元的激活函數用Relu,輸入圖像大小為228×228像素,圖像格式RGB,1個卷積層和1個池化層構成1組,共設置了3組,分類輸出層使用 Softmax分類器,輸出結構是1個長度為10的一維數組。

DenseNet201是DenseNet網絡(Dense Convolutional Network,密集卷積網絡)系列中的一種,也是一種深度卷積神經網絡,在圖像分類時性能更好。DenseNet網絡的核心結構主要由兩個模塊組成,一個是Dense Block,一個是Transition。Dense Block主要完成密集連接,Transition是不同Dense Block之間的過渡。DenseNet201網絡構建過程如下:首先構造1個卷積核為7×7、步長為2的卷積層,然后構造1個大小為3×3、步長為2的max pool層,再構造第1個DenseBlock,DenseBlock的基本單元是BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3×3),其中的Conv(1×1)用來降維、減少計算和參數,第一個DenseBlock包含6個基本單元,在DenseBlock后構造1個Transition,Transition的基本單元是Conv(1×1)-Avgpooling,這里的Conv(1×1)也是用來降維,Avgpooling的大小是2×2、步長是2,用來降低特征圖大??;然后構造第二個DenseBlock,包含12個DenseBlock基本單元,再是第二個Transition;第三個DenseBlock包含48個基本單元,接著是第三個Transition;第四個DenseBlock包含32個基本單元,最后是構造1個大小為7×7的global average pool,1個全連接層和1個softmax分類器,構造過程中DenseBlock和Transition交替設置。

2.2? 模型訓練過程

主要包括:圖像數據的采集、圖像數據的預處理、模型訓練環境的配置、圖像數據的劃分、模型訓練。

2.2.1? 圖像數據采集

用于訓練玉米病蟲害智能診斷模型的圖像數據主要來源于兩個部分:一部分采集于重慶市內的玉米種植區,采集時間在2023年5—8月,光照條件為自然光,采集設備包括智能手機自帶攝像頭、數碼相機等。為提高圖像數據的清晰度和病蟲發生部位的聚焦度,減少圖像曝光率,部分圖像采集時使用了高清鏡頭、濾鏡等工具。另一部分為互聯網上采集的圖像數據,少量來源于公共數據集。圖像數據總量為3 733幅。

2.2.2? 圖像數據的預處理

對圖像數據進行了以下預處理:

1)裁剪。很多采集的圖像數據包含了除玉米植株和病蟲害之外的無用甚至影響識別診斷準確性的部分,如植株間的雜草、田塊邊界的田埂、田邊的樹木等。對圖像數據進行裁剪,使圖像只保留發生病蟲害的玉米植株或部位。

2)切片。將圖像數據切成固定大小,將圖像數據切成228×228像素大小。

3)灰度變換。將RGB格式的彩色圖像轉化為灰度圖像,使圖像更清晰、特征更明顯。

2.2.3? 模型訓練環境配置

基于Python語言構建模型訓練環境,具體配置如下:Python版本使用3.7.0,集成開發環境使用PyCharm,2種網絡結構均基于TensorFlow實現,使用的TensorFlow版本為2.3.0,用到了numpy、OpenCV等程序包,numpy的版本是1.19.2,OpenCV的版本是4.5.1.48,在配置過程中需要安裝很多有依賴關系的程序包,為了減少因程序包之間的依賴關系造成的大量沖突和錯誤,使用了 Anaconda管理安裝這些程序包,Anaconda的版本為5.3.1。

2.2.4? 圖像數據的劃分

將圖像數據劃分為訓練集、驗證集和測試集。訓練集是使用指定網絡開展深度學習和訓練的數據樣本集合,直接參與模型調參,是原始數據的一部分。網絡通過訓練集,學習數據特征,擬合生成用于預測的模型。驗證集是用于評估模型性能的數據集,也是原始數據的一部分,在訓練過程中幫助調整參數,避免過擬合或欠擬合。測試集是用于判斷模型的準確性和魯棒性,用在模型生成之后,使用模型沒有遇過的數據測試模型性能。由于采集的圖像數據總量偏少,屬于小規模樣本集,按照6∶2∶2的比例劃分為訓練集、驗證集和測試集。

2.2.5? 模型訓練

要得到一個性能較好的模型,需要進行多次的訓練,通過調整batch_size、epoch、learning_rate、image_size等參數,甚至重新清理數據樣本,重新劃分訓練集、驗證集合測試集。本次分別在兩臺x86服務器上開展模型訓練,1臺基于CNN網絡開展訓練,另1臺基于DenseNet201網絡開展訓練,為了提升模型訓練速度,2臺服務器均配置32 GB內存。

2.3? 模型訓練結果

訓練過程中記錄了不同參數設置下的模型訓練情況,只保留了val_accuracy在0.8以上的模型以供后續開發診斷系統使用。

基于自定義CNN網絡模型、基于DenseNet201網絡模型的訓練結果如表1所示??梢钥闯?,所得val_accuracy大于0.8的模型中,基于CNN網絡的相對穩定,val_loss值也相對較小,說明在特定情況下基于CNN網絡的模型收斂性相對較好,但DenseNet201網絡更容易取得較高準確率的模型。

3? 系統設計與實現

3.1? 系統設計

3.1.1? 功能目標設計

系統主要功能目標是讓用戶能夠方便、快捷地使用智能手機等便攜式移動設備對玉米病蟲害進行智能識別診斷,并提供相應的防治建議。系統功能設計如下:

1)調取智能手機等移動設備上的攝像頭,拍攝玉米病蟲害發生圖像。

2)從文件系統上讀取圖像數據。

3)基于深度學習模型對玉米病蟲害種類識別診斷的功能。

4)根據病蟲害種類給出防治建議的功能。

3.1.2? 數據庫設計

使用SQLite輕量級數據庫,用于管理病蟲害編碼信息、病蟲害名稱信息和病蟲害防治建議。

3.1.3? 流程設計

系統工作流程如圖3所示。

3.2? 系統實現

3.2.1? 開發環境配置

集成開發環境為Android Studio,第三方程序庫有OpenCV和Tensorflow-Lite。具體版本如下:Android Studio3.4,OpenCV4.5.1,TensorFlow-Lite2.3.0。引入第三方程序庫需在build.gradle文件dependencies段添加如下內容。

implementation ‘org.tensorflow:tensorflow-lite:2.3.0’

implementation ‘com.quickbirdstudios:opencv:4.5.1’

3.2.2? 系統UI實現

系統UI共包含兩個部分:1)與用戶交互(選擇圖像、拍攝圖像、啟動識別診斷)的各種按鈕;2)展示信息(待診斷圖像、診斷結果、防治建議)的各種View。調用攝像頭拍攝待診斷圖像使用ImageButton發起,調用模型開展診斷使用Button發起,選擇本地圖像并展示使用ImageView實現,診斷結果和防治建議使用TextView實現。使用ConstraintLayout布局各個組件。實現的用戶界面如圖4所示。

3.2.3? 功能實現

3.2.3.1? ?調取攝像頭功能實現

使用Activity的startActivityForResult()方法將調用攝像頭的意圖(Intent)傳遞給Android系統,Intent的Action屬性需設置為ACTION_IMAGE_CAPTURE。對拍攝圖像進行處理通過Activity的onActivityResult()方法根據requestCode實現完成。

3.2.3.2? ?選取本地圖像功能實現

同樣通過startActivityForResult()方法向系統傳遞意圖,Intent的Action屬性設為ACTION_OPEN_ DOCUMENT,Type屬性設為“image/*”。因瀏覽和選擇本地圖像需要讀取存儲設備的權限,在AndroidManifest.xml中要做如下配置:<uses-permission android:name=“android. permission.READ_ EXTERNAL_STORAGE”></uses-permission>。

3.2.3.3? ?識別診斷功能實現

首先將圖像數據轉化為矩陣數據,然后將RGBA格式數據轉換為BGR格式,再根據模型輸入尺寸對圖像大小進行縮放,使用OpenCV完成數據歸一化處理,接著將矩陣數據轉換為張量(tensor)數據,最后傳遞給模型解釋器Interpreter開展識別診斷。

3.2.3.4? ?防治建議功能實現

診斷結果是一組數字,包含了病蟲害的類別編碼和可能性,若可能性大于80%,則根據編碼到數據庫中讀取對應編碼的防治建議,最終在TextView中展示給用戶。數據庫的操作使用SQLiteOpenHelper類和SQLiteDatabase的相關方法實現。

4? 結論

本研究在自定義CNN網絡和DenseNet201網絡上開展了基于深度學習的玉米病蟲害模型訓練,得到了多個val_accuracy參數大于0.8的模型,開發的玉米病蟲害智能診斷系統能夠在Android系統中運行,并能使用模型開展識別診斷。經驗證,發現系統對于小斑病、紋枯病、莖腐病3種病害的診斷錯誤率較高,主要原因與采集的圖像樣本數量較少有關;另外,模型的泛化能力較弱,主要原因與數據集劃分和訓練參數欠合理有關。后續將通過采集更多的圖像樣本、圖像預處理、調整數據集和訓練參數提升模型的準確率和泛化能力。

參考文獻:

[1]? 樊湘鵬,周建平,許燕,等.基于改進卷積神經網絡的復雜背景下玉米病害識別[J].農業機械學報,2021,52(3):210-217.

[2]? 許景輝,邵明燁,王一琛,等.基于遷移學習的卷積神經網絡玉米病害圖像識別[J].農業機械學報,2020,51(2):230-236,253.

[3]? 劉翱宇,吳云志,朱小寧,等.基于深度殘差網絡的玉米病害識別[J].江蘇農業學報,2021,37(1):67-74.

[4]? 王國偉,劉嘉欣.基于卷積神經網絡的玉米病害識別方法研究[J].中國農機化學報,2021,42(2):139-145.

[5]? 朱家輝,蘇維均,于重重.基于卷積神經網絡的農作物葉片病害診斷[J].植物檢疫,2021,35(2):28-32.

[6]? XU Y, ZHAO B, ZHAI Y, et al. Maize diseases identification method based on multi-scale convolutional global pooling neural network[J]. IEEE Access, 2021, 9: 27959-27970.

[7]? CHEN J D, WANG W H, ZHANG D F, et al. Attention embedded lightweight network for maize disease recognition[J]. Plant Pathology, 2021,70(3): 630-642.

[8]? 陳桂芬,趙姍,曹麗英,等.基于遷移學習與卷積神經網絡的玉米植株病害識別[J]. 智慧農業,2019,1(2): 34-44.

[9]? 李恩霖,謝秋菊,蘇中濱,等. 基于深度學習的玉米葉片病斑識別方法研究[J]. 智慧農業導刊,2021,1(10): 1-10.

(責任編輯:易? 婧)

收稿日期:2023-05-11

基金項目:重慶市農業發展基金重大核心技術攻關項目“青貯玉米骨干種質B313持綠性改良提升及育種應用”(cqaas2023sjczhx009)。

作者簡介:姚強(1981—),男,河南南陽人,碩士,高級工程師,研究方向為農業信息技術。E-mail: 94388062@qq.com。

猜你喜歡
深度學習
有體驗的學習才是有意義的學習
電子商務中基于深度學習的虛假交易識別研究
MOOC與翻轉課堂融合的深度學習場域建構
大數據技術在反恐怖主義中的應用展望
深度學習算法應用于巖石圖像處理的可行性研究
基于深度卷積網絡的人臉年齡分析算法與實現
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合