国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于卷積神經(jīng)網(wǎng)絡(luò)的馬鈴薯葉片病害識別系統(tǒng)

2018-02-13 11:27:24趙建敏蘆建文
江蘇農(nóng)業(yè)科學(xué) 2018年24期
關(guān)鍵詞:卷積病害服務(wù)器

趙建敏, 李 艷, 李 琦, 蘆建文,2

(1.內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古包頭 014010; 2.包鋼集團公司信息服務(wù)中心,內(nèi)蒙古包頭 014010)

2006年多倫多大學(xué)Hinton等采用深層神經(jīng)網(wǎng)絡(luò)進行特征降維,開啟了深度學(xué)習(xí)的時代[1-2]。近年來,基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)已經(jīng)廣泛運用于圖像識別領(lǐng)域,2012年,Hinton等采用深層網(wǎng)絡(luò)自動提取特征,在Image Net圖像集分類問題上取得了很好的結(jié)果[3]。深度學(xué)習(xí)應(yīng)用于圖像識別避免了人工特征提取的算法消耗,并且深度學(xué)習(xí)對輸入樣本的平移、縮放、扭曲保持高度不變性,訓(xùn)練時共享權(quán)值,降低了訓(xùn)練時間,大大提高了準(zhǔn)確性[3-4]。

在國內(nèi)農(nóng)業(yè)圖像應(yīng)用領(lǐng)域,楊國國等基于卷積神經(jīng)網(wǎng)絡(luò)在復(fù)雜自然背景下定位和識別茶園害蟲,識別率達到90%以上,取得較好的效果[5]。譚文學(xué)等設(shè)計了多層卷積神經(jīng)網(wǎng)絡(luò),采用彈性動量的參數(shù)學(xué)習(xí)方法,通過識別果體病理圖像,診斷常見病害,識別率高達95%以上[6]。張帥等搭建了8層卷積神經(jīng)網(wǎng)絡(luò)模型在Pl@antNet和自擴展葉片庫上進行訓(xùn)練和測試,簡單背景下葉片識別率均達到90%以上[7]。魯恒等在無人機影像耕地信息提取中,利用深度神經(jīng)網(wǎng)絡(luò)提取耕地特征,達到較高的識別精度[8]。針對馬鈴薯早疫病識別,徐明珠等應(yīng)用高譜成像技術(shù),建立了多種特征波長的BP神經(jīng)網(wǎng)絡(luò)和支持向量機模型,識別率高達98%以上,為早疫病快速識別提供理論依據(jù)[9]。

本研究首次將分層卷積神經(jīng)網(wǎng)絡(luò)技術(shù)應(yīng)用于馬鈴薯病害識別中,基于TensorFlow平臺設(shè)計了馬鈴薯病害特征提取和病害識別算法,并全棧式開發(fā)了病害識別系統(tǒng)的服務(wù)器和前端,實現(xiàn)了手機端采集、上傳病害圖片、服務(wù)器處理推送識別結(jié)果,經(jīng)測試可以滿足識別和訪問要求。

1 材料與方法

1.1 材料

以馬鈴薯病害圖像為識別對象,所有原始數(shù)據(jù)均采集于內(nèi)蒙古中部周邊馬鈴薯種植區(qū)。共有4類病害圖像樣本 6 000 張,代表性樣本見圖1。4類病害圖像經(jīng)過預(yù)處理,得到4 000張圖像作為訓(xùn)練樣本,1 000張作驗證樣本,1 000張作測試樣本。其中,驗證樣本用來檢驗神經(jīng)網(wǎng)絡(luò)中樣本是否出現(xiàn)過擬合現(xiàn)象。驗證樣本與訓(xùn)練樣本同時作為神經(jīng)網(wǎng)絡(luò)的輸入,計算損失函數(shù)大小,但驗證樣本損失函數(shù)大小僅用來判斷網(wǎng)絡(luò)是否過擬合,而不參與網(wǎng)絡(luò)參數(shù)調(diào)整。

為提高模型的特征學(xué)習(xí)能力和抗干擾能力,對原始圖像進行隨機反轉(zhuǎn)、亮度和對比度調(diào)節(jié)等預(yù)處理,并將處理后的圖片作為訓(xùn)練集,訓(xùn)練模型網(wǎng)絡(luò),預(yù)處理函數(shù)如下:

tf. image. random_ flip_ left_ right ()隨機翻轉(zhuǎn)。

tf.image.random_flip_left_right(distorted_image)隨機亮度變換。

tf.Image.random_contrast (distorted_image) 隨機對比度變換。

最后對數(shù)據(jù)做白化處理,均衡均值與方差,降低圖像采樣中明暗、光照差異引起的影響。

TensorBoard是TensorFlow可視化平臺,模型對輸入圖像進行變換之后TensorBoard顯示的結(jié)果見圖2,從圖2可以看出,變換之后的圖像比原圖像更加光滑并且降低圖像明暗、光照差異引起的影響。

TensorFlow平臺輸入數(shù)據(jù)格式有圖片格式、二進制格式、文本格式以及標(biāo)準(zhǔn)的TensorFlow格式。本研究采用的是二進制格式的讀入。首先初始化讀入數(shù)據(jù)量、類別、標(biāo)簽字節(jié)大小、尺寸和通道數(shù),應(yīng)用tf.FixedLengthRecordReader()函數(shù)讀取固定長度的樣本字節(jié)(包括label);之后用tf.decode_raw()函數(shù)進行解析。

1.2 方法

馬鈴薯病害圖像識別系統(tǒng)由服務(wù)器端和前端組成。服務(wù)器端在ubuntu操作系統(tǒng)上基于TensorFlow計算框架,搭建了多層卷積神經(jīng)網(wǎng)絡(luò)病害識別模型;后端搭建了Mysql病害數(shù)據(jù)庫,采用flask框架,異步讀寫數(shù)據(jù);手機端基于vue.js開發(fā)了Web app,完成圖像采集并通過rest API接口上傳到服務(wù)器,并實時獲取病害識別結(jié)果,總體結(jié)構(gòu)見圖3。

1.2.1 卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計 深度卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計包括樣本預(yù)處理、神經(jīng)網(wǎng)絡(luò)搭建、模型訓(xùn)練及模型評估。本研究初始馬鈴薯病害圖片樣本經(jīng)過預(yù)處理,整理得到6 000張病害樣本圖片,設(shè)計了8層CNN+Softmax神經(jīng)網(wǎng)絡(luò)模型,通過梯度下降法進行訓(xùn)練,在單病斑樣本測試中得到了較好的準(zhǔn)確率。TensorFlow已經(jīng)廣泛用于圖像識別等多項機器深度學(xué)習(xí)領(lǐng)域,先后提出了AlexNet[10]、VGG[11]、GoogLeNet[12]、PReLU-net[13]等代表性網(wǎng)絡(luò)結(jié)構(gòu)。在TensorFlow平臺上,參照Alex Krizhevsky在CIFAR-10[10]數(shù)據(jù)集上應(yīng)用的深度卷積置信網(wǎng)絡(luò),搭建了3個卷積層、2個全連接層,網(wǎng)絡(luò)結(jié)構(gòu)見圖4。在卷積層中分為卷積、池化過程,全連接層包括ReLu(Rectified Linear Units)非線性映射和dropout 2個過程,網(wǎng)絡(luò)結(jié)構(gòu)見圖4。

1.2.2 服務(wù)器設(shè)計 馬鈴薯病害應(yīng)用系統(tǒng)分為服務(wù)器和前端2個部分,識別系統(tǒng)前端-后端結(jié)構(gòu)見圖5。服務(wù)器由服務(wù)進程、神經(jīng)網(wǎng)絡(luò)識別進程、數(shù)據(jù)庫和Web服務(wù)構(gòu)成,采用RESTful API接口。前端設(shè)計了基于Vue的web app,實現(xiàn)了手機端拍照上傳,服務(wù)器端識別病害、存儲信息并推送識別結(jié)果的功能。

本研究服務(wù)器的構(gòu)建采用Python Web框架Flask和Nginx Web服務(wù)器。Flask是一個輕量級的Python Web框架,通過uWSGI服務(wù)網(wǎng)關(guān)接口可實現(xiàn)Nginx和Flask的交互,執(zhí)行Python應(yīng)用[14]。

以上傳病害圖片和獲取識別結(jié)果為例,服務(wù)器軟件設(shè)計結(jié)構(gòu)和原理見圖6。用戶上傳病害照片時,手機端通過網(wǎng)頁地址訪問服務(wù)器,采用標(biāo)準(zhǔn)RESTful接口,經(jīng)過網(wǎng)頁地址解析產(chǎn)生POST /pttdmap請求。本研究創(chuàng)建了Flask實例fapp,fapp通過路由router操作,fapp.route修飾器把修飾的函數(shù)注冊為路由,轉(zhuǎn)入執(zhí)行Insert2tab()業(yè)務(wù),將圖片存入病害數(shù)據(jù)庫。

用戶獲取病害識別結(jié)果時,通過網(wǎng)頁地址訪問服務(wù)器,經(jīng)過解析產(chǎn)生GET /pttdisease請求,fapp通過路由執(zhí)行Getds()業(yè)務(wù)。本研究設(shè)計了病害識別線程,該線程無識別請求時掛起,線程中開啟SOCKET連接,方法如下:

pttdregsver=socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)

if os.path.exists(“/usr/pttdreg.sock”):

os.unlink(“/usr/pttdreg.sock ”);

pttdregsver.bind(“/usr/pttdreg.sock ”);

pttdregsver.listen(0);

Getds()業(yè)務(wù)創(chuàng)建pttdregclient SOCKET,通過pttdregclient.connet(“/usr/pttdreg.sock”)連接pttdregsver[],client.send(pttdmap)將圖片送到模型并啟動識別模型,完成Step1。之后Step2、Step3完成識別結(jié)果存儲,并響應(yīng)手機的請求返回識別結(jié)果。

1.2.3 手機web app設(shè)計 為提高跨平臺、可移植性,本研究手機端應(yīng)用web app方式,采用MVVM框架Vue.js,它具有數(shù)據(jù)雙向綁定,異步實時更新數(shù)據(jù)的功能,運行在移動端,方便快捷??蛻舳俗R別系統(tǒng)主要采用的技術(shù)棧有vue.js、vue-recource、vue-router,Vue.js是輕巧的可組件化MVVM庫;vue-recource負責(zé)與服務(wù)器進行數(shù)據(jù)交互;vue-router完成界面跳轉(zhuǎn)[15-16]。各項功能的代碼完成后用webpack打包部署到Nginx服務(wù)器,供移動端訪問。

2 結(jié)果與分析

2.1 特征提取及分類過程分析

在圖4所示的模型結(jié)構(gòu)中,圖像通過輸入層、卷積層、全連接層自動學(xué)習(xí)特征并送入softmax分類器,過程如下:

輸入層:CNNs具有對二維圖像的特征進行自主學(xué)習(xí)的特性,故在此將原始圖像像素直接作為網(wǎng)絡(luò)輸入,輸入大小為227×227×3,其中3表示顏色通道,表示輸入為RGB圖像。

卷積層C1(conv1),由48個11×11卷積核,步長為4,采用ReLu非線性映射激勵,產(chǎn)生55×55×48個特征映射,之后輸入池化層S2(pool1),經(jīng)過3×3過濾器、步長為2的max pooling重疊池化,學(xué)習(xí)到27×27×48個特征。關(guān)鍵代碼如下所示:

with tf.variable_scope(‘conv1’) as scope:

kernel=_variable_with_weight_decay(‘weights’,shape=[11,11,4,48],stddev=1e-4,wd=0.0)

對于Δt的兩個解,根據(jù)實際抓取情況進行取舍,然后確定抓取位置和抓取路徑。如果兩個解全部符合要求,那么選擇時間比較短的解;如果兩個解全部不符合要求,那么將放棄對此工件的抓取同時做好漏抓記錄。

conv=tf.nn.conv2d(images,kernel,[1,1,1,1],padding=‘SAME’)

biases=_variable_on_gpu(‘biases’,[48],tf.constant_initializer(0.0))

bias=tf.nn.bias_add(conv,biases)

conv1=tf.nn.relu(bias,name=scope.name)

_activation_summary(conv1)

pool1=tf.nn.max_pool(conv1,ksize=[1,3,3,1],strides=[1,2,2,1],padding=‘SAME’,name=‘pool1’)

卷積層C3過濾器大小為5×5,深度為128,移動步長為1,C3特征映射大小為27×27×128,激勵函數(shù)采用Relu。池化層S4仍然采用3×3濾波器、步長為2,max pooling重疊池化,輸出特征個數(shù)為13×13×128。卷積層C5過濾器大小為3×3,深度為192,移動步長為1,本層輸出矩陣大小為13×13×192。池化層S6采用3×3濾波器、步長為2重疊池化,輸出特征矩陣為6×6×192。

卷積核、池化核、步長大小的選取,整體的預(yù)測模型參數(shù)(包括學(xué)習(xí)率、學(xué)習(xí)策略)均是通過試驗得到最佳。卷積核尺寸根據(jù)圖像明顯特征所占像素大小確定,奇數(shù)尺寸的濾波器能獲取到更好的中心,故特征卷積核設(shè)為奇數(shù)。重疊池化能夠在一定程度上防止過擬合[12]降低識別錯誤率,故采用重疊池化。全連接層采用的ReLu激活函數(shù),其優(yōu)點為梯度不飽和、計算速度快;梯度計算公式為(1),在反向傳播過程中減輕了梯度彌散問題,神經(jīng)網(wǎng)絡(luò)前幾層的參數(shù)也可以很快地更新。正向傳播過程中ReLu函數(shù)僅須要設(shè)置閾值,加快了正向傳播的計算速度,可以極大地加快收斂速度,dropout的設(shè)置是為了防止過擬合。

本研究采用多項式邏輯回歸(也稱為Softmax回歸)方法進行分類,Softmax回歸在網(wǎng)絡(luò)的輸出層上計算歸一化的預(yù)測值和標(biāo)簽的交叉熵,模型的目標(biāo)函數(shù)是求交叉熵損失和所有權(quán)重衰減項的和。使用cross_entropy計算交叉熵,然后計算一個batch運算后的平均值,tf.add_to_ collection計算總損失。本研究模型使用標(biāo)準(zhǔn)的梯度下降算法來訓(xùn)練模型。

梯度下降法的迭代公式為

(1)

2.2 模型特性分析

模型評估使用測試集樣本來評估訓(xùn)練模型的預(yù)測性能。為了得到可靠穩(wěn)定的模型及對模型性能進行無偏估計,使用交叉驗證的方法,也就是對分類器進行訓(xùn)練后利用測試集來測試訓(xùn)練得到的模型,以此來作為評價分類器的性能指標(biāo)。

本研究搭建的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速率設(shè)置為0.01。訓(xùn)練過程中得到的損失函數(shù)隨迭代次數(shù)變而變化的曲線、正確率隨著迭代次數(shù)變而變化的曲線見圖7、圖8。

從圖7可以看出,隨著迭代次數(shù)增加,損失函數(shù)值越來越小,幾乎接近于0,說明函數(shù)擬合越來越好。訓(xùn)練樣本識別精度到93%時基本收斂。訓(xùn)練在服務(wù)器上進行,CPU采用Intel i7 4核、單GPU GTX980、4 G顯存,訓(xùn)練用時不到1 h。用測試集樣本測試訓(xùn)練好的模型,測試集樣本1 000個,測試時間為1.97 s,簡單背景、單病斑圖像測試準(zhǔn)確率達到86%,其與迭代次數(shù)關(guān)系見圖8。

從表1可以看出,炭疽病和早疫病相互誤判率較高,灰霉病和晚疫病相互誤判率次之,炭疽病被誤判成早疫病的比率也較高,表明本研究模型針對上述病斑的特征提取效果有待進一步提高。筆者所在課題組嘗試增加CNN層數(shù),由于樣本數(shù)量受限,當(dāng)增加到6層CNN時出現(xiàn)過擬合現(xiàn)象。通過對比,在當(dāng)前條件下設(shè)置3個卷積層的網(wǎng)絡(luò)取得的識別效果相對較好。

表1 病害分類測試準(zhǔn)確率統(tǒng)計

2.3 手機端應(yīng)用軟件測試

手機端app應(yīng)用界面見圖9。身份驗證觸發(fā)POST請求,從后臺獲取token,通過驗證后進入系統(tǒng)。病害識別界面有拍攝病害圖像、上傳圖片功能,執(zhí)行POST函數(shù)將手機病害圖像上傳到后臺服務(wù)器,點擊獲取通過get請求將獲取識別結(jié)果顯示在客戶端。

3 結(jié)論與討論

本研究設(shè)計了8層CNN+softmax分層卷積神經(jīng)網(wǎng)絡(luò)模型,對于簡單背景單一病斑識別率達到86%。但是,由于病害圖像的特殊性,局部和全局取樣對識別效果影響很大,以191農(nóng)資人上傳的呼倫貝爾某地區(qū)馬鈴薯葉片病害圖為例,系統(tǒng)識別為炭疽??;若采用局部取樣,將病斑單獨取樣,系統(tǒng)識別為早疫病,差異很大(圖10)。

針對這一問題可采用CNN物體檢測方法,Gishick等在基于神經(jīng)網(wǎng)絡(luò)的物體檢測領(lǐng)域進行了深入研究[17],筆者所在課題組正在嘗試采用R-CNN[17]算法和Fast R-CNN[18],即Regions with Convolution Neural Network Features和快速R-CNN算法予以改進。

此外,馬鈴薯病害種類多、分布分散,葉片、莖、塊莖等部位均有病害癥狀,病害除本研究列出的早疫病、晚疫病、灰霉病、炭疽病,還包括小葉病、青枯病、葉斑病、病毒,塊莖部位癌腫、根腐、黑痣、瘡痂病等,筆者所在課題組正在不斷搜集整理病害圖片樣本,制作樣本庫,為模型設(shè)計提供數(shù)據(jù)支撐。

本研究搭建的Nginx Web服務(wù)器,應(yīng)用flask框架開發(fā)后臺服務(wù),基于Vue.js開發(fā)手機端APP,實現(xiàn)采集、上傳、識別功能,滿足了系統(tǒng)要求,為相關(guān)應(yīng)用提供了完整全棧式解決方案。

猜你喜歡
卷積病害服務(wù)器
早春養(yǎng)羊需防六大病害
小麥常見三種病害咋防治
基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
葡萄病害周年防治歷
煙臺果樹(2021年2期)2021-07-21 07:18:28
果樹休眠期咋防病害
通信控制服務(wù)器(CCS)維護終端的設(shè)計與實現(xiàn)
從濾波器理解卷積
電子制作(2019年11期)2019-07-04 00:34:38
基于傅里葉域卷積表示的目標(biāo)跟蹤算法
得形忘意的服務(wù)器標(biāo)準(zhǔn)
計算機網(wǎng)絡(luò)安全服務(wù)器入侵與防御
屯门区| 麟游县| 康乐县| 黄骅市| 无棣县| 阜宁县| 敖汉旗| 德令哈市| 澄迈县| 岳普湖县| 建阳市| 灌阳县| 楚雄市| 鹤岗市| 舟山市| 诏安县| 长丰县| 会昌县| 延寿县| 通河县| 都兰县| 许昌市| 敦化市| 沽源县| 兴仁县| 荥经县| 阿荣旗| 桂平市| 孟连| 隆回县| 新闻| 周口市| 岚皋县| 抚宁县| 大埔县| 榕江县| 梓潼县| 化州市| 平阳县| 石河子市| 怀化市|