張旭 王斌 張旭
摘要:機器學習識別算法如果需要達到較高的識別精度,需要根據(jù)需求采用相應的算法。本文闡述了機器學習的背景,以及相關的基本原理,詳細介紹了卷積神經(jīng)網(wǎng)絡中對數(shù)據(jù)逐層的特征提取,建立模型及其改進優(yōu)化。針對農(nóng)田中雜草因為不能準確識別,嘗試運用CNN來檢測圖像中農(nóng)田雜草位置,對其可行性進行探討,在一定精確度上的能夠達到雜草圖像的識別。
關鍵詞:機器學習;卷積神經(jīng)網(wǎng)絡;圖像識別
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2018)22-0187-03
在20世紀,現(xiàn)代農(nóng)業(yè)雖然在肥料技術、灌溉技術、機械化耕作技術的促進下不斷發(fā)展,滿足了全球急劇增長的人口對糧食的需求,但同時也存在一些問題,例如:農(nóng)作物產(chǎn)量受到田間雜草的影響極大。本文主要探討機器學習算法在農(nóng)業(yè)除草防蟲害應用的可行性猜想。
1 國內(nèi)外研究現(xiàn)狀
1.1機器學習研究現(xiàn)狀
機器學習[1]是一種演進的計算算法,旨在機器通過從周圍環(huán)境中的學習來模擬人類智能。機器學習被認為是大數(shù)據(jù)時代的最重要的應用之一?;跈C器學習的技術已經(jīng)成功應用于從模式識別、計算機視覺和醫(yī)學應用的各種領域。
從本質(zhì)上來說,機器學習是一種用于程序來分析數(shù)據(jù)集合的方法,機器學習和數(shù)學中的概率統(tǒng)計聯(lián)系十分緊密,理論上來說,如果一個識別算法要想達到目標預定精確度,是需要大量的輸入樣本,即訓練樣本。我們在處理大樣本的實際問題時,很可能由于樣本集合中的質(zhì)量不高,極大影響其泛化能力,而在處理小樣本問題上具有重要意義。機器學習的一般框架一般由樣本,背景知識作為學習算法的輸入,當二者經(jīng)過學習宣發(fā)的訓練后,產(chǎn)生目標概念的描述,并對其進行識別。
1.2農(nóng)業(yè)除草現(xiàn)狀
農(nóng)田雜草影響農(nóng)作物產(chǎn)量的一個重要因素。據(jù)估計,全球15億hm2耕地每年雜草危害就造成76.3億美元的損失,占病、蟲、草、鼠所造成的總損失(243.7億美元)的1/3,僅糧食就損失1.25億t,足夠2.5億人生活一年[3]。目前由于不能精確去除雜草,大規(guī)模的大面積的化學除草劑使用帶來的問題有:農(nóng)產(chǎn)品的農(nóng)藥殘留超標,影響食品安全;雜草的抗藥性大大增加,二次除草難度加大等等。
2 采用方法以及算法
2.1 基于機器學習的圖像別算法基本原理
人的大腦在處理圖像時,在意識不到的情況下就完成了對圖像的處理。而機器在處理圖像時是把完整的圖像打碎成像素矩陣,每個矩陣中的位置記錄相應的顏色碼。卷積神經(jīng)網(wǎng)絡(Convolutional Neuron Networks,CNN)由若干個卷積層及全連接層組成,并且包括相關權值和池化層,CNN 的這種結構能夠充分利用數(shù)據(jù)的二維結構,使得識別圖像具有較高的準確率。
2.2 卷積神經(jīng)網(wǎng)絡(CNN)
CNN由一個輸入層和一個輸出層組成,以及多個隱藏層。 CNN的隱藏層通常由卷積層,合并層,完全連接層和規(guī)范化層組成。慣例是將過程描述為神經(jīng)網(wǎng)絡中的卷積。在數(shù)學上它是一種互相關而不是卷積。一般一個基本的神經(jīng)網(wǎng)絡基本包括以下幾層:卷積層(Convolutional Layer),池化層(Pooling Layer)和全連接層(Fully Connected Layer)
1) CNN卷積層(Convolutional Layer)
卷積層將卷積運算應用于輸入,并將結果傳遞給下一層。卷積模擬個體神經(jīng)元對視覺刺激的反應[7]。 每個卷積神經(jīng)元僅處理其接受場的數(shù)據(jù)。每個卷積神經(jīng)元僅處理其接受場的數(shù)據(jù)。由于與圖像相關的非常大的輸入,每個像素都是相關變量,所以即使在淺(與深度相對)架構中,所以需要非常多的神經(jīng)元。卷積運算為這個問題提供了一個解決方案,因為它減少了可用參數(shù)的數(shù)量,從而使網(wǎng)絡更深入,參數(shù)更少。例如,考慮一個大小為5×5的圖像,和一個3×3的卷積核。這里的卷積核共有9個參數(shù),就記為 吧。這種情況下,卷積核實際上有9個神經(jīng)元,他們的輸出又組成一個3×3的矩陣,稱為特征圖。第一個神經(jīng)元連接到圖像的第一個3×3的局部,第二個神經(jīng)元則連接到第二個局部具體如圖2所示。
上面例子中的9個神經(jīng)元均完成輸出后,實際上等價于圖像和卷積核的卷積操作。
2) CNN池化層(Pooling Layer)
池化(pool)的意思是降采樣(downsamples),其目的是為了減少特征圖。由于在卷積層之后我們會得到很大的緯度特征,我們通過池化層將特征分割成若干個區(qū)域,選擇對其進行去最大值或者平均值,從而得到維度較小的新特征。池化層進行的運算一般有以下幾種:最大池化(Max Pooling),均值池化(Mean Pooling),高斯池化和可訓練池化。
3)全連接層(Fully Connected Layer)
全連接層將一層中的每個神經(jīng)元連接到另一層中的每個神經(jīng)元。它原則上與傳統(tǒng)的多層感知器神經(jīng)網(wǎng)絡(MLP)相同
全連接層和卷積層可以相互轉(zhuǎn)換:對于任意一個卷積層,要把它變成全連接層只需要把權重變成一個巨大的矩陣,其中大部分都是0 除了一些特定區(qū)塊(因為局部感知),而且好多區(qū)塊的權值還相同(由于權重共享)。相反地,對于任何一個全連接層也可以變?yōu)榫矸e層。
3 采用機器學習中CNN算法實現(xiàn)
3.1 收集制作農(nóng)田雜草圖像庫
為進一步提高分析的精確度,把目標的檢測問題直接轉(zhuǎn)換為分類問題,即:雜草和其他目標,數(shù)據(jù)的處理工作有采集大量的圖像信息,并且為圖片進行分類編號編寫xml文件[4]。在實際情況中的農(nóng)田雜草圖像都是采集于傳感器的,這里為了方便算法的可行性的驗證,我們直接利用網(wǎng)絡爬蟲爬取農(nóng)田中帶有雜草的圖片。首先進行圖片數(shù)據(jù)的清洗工作,把不符合實際需求的圖像刪除。
3.2 CNN在各層上對雜草圖像分析
當建立的圖像中的圖像進入CNN時,CNN就會得到圖像中的特征,之后通過池化層,去掉重復的特征,這樣就可以提高計算效率,去掉不必要的重復計算。CNN開始只能獲得圖片的邊緣,紋理等底層信息,之后不斷的卷積,逐漸可以獲得一些復雜的特征,最終獲得雜草的特征信息。
3.2.1 卷積層上的分析方法
由于我們在輸入圖像時,網(wǎng)絡中的每一個神經(jīng)元對應著一個像素點,我們把雜草圖片抽象成如下圖3所示的網(wǎng)格:
網(wǎng)格中的每一個格子都代表這一個像素點,利用卷積核將原始圖片進行轉(zhuǎn)換。對于卷積核來說,如圖4:
橙色矩形所示的像素點集合想要變成一個數(shù)字的話,需要我們定義一個類似于y=Ax+B 其中x就是橙色小塊。y為轉(zhuǎn)化后的輸出。系數(shù)是A就是卷積核。首先定義好一個權值矩陣,也就是卷積核來進行矩陣內(nèi)積運算,用來提取圖片中的特征。這里我們選取局部原始圖片說明方法如圖5所示。
例如,上面的卷積核操作結果中所有列中第三列的絕對值之和最大,說明原始雜草圖片上對應的區(qū)域有一條垂直方向的特征,并且像素數(shù)值變化幅度較大,若我們變換卷積核,再次進行計算,會得到全新的操作結構以及全新的特點,所以卷積核的起到一種雜草特征提取的作用。所以CNN的卷積層在理論上是可以進行雜草特征分析的。
實際中輸入是一定區(qū)域大小(width*height)的數(shù)據(jù),和濾波器filter(帶著一組固定權重的神經(jīng)元)做內(nèi)積后等到新的二維數(shù)據(jù)。具體來說,左邊是圖像輸入,中間部分就是濾波器filter(帶著一組固定權重的神經(jīng)元),不同的濾波器filter會得到不同的輸出數(shù)據(jù),比如顏色深淺、輪廓。相當于如果想提取圖像的不同特征,則用不同的濾波器filter,提取想要的關于圖像的特定信息:顏色深淺或輪廓。如圖6所示。
3.2.2 池化層上的分析方法
在這一層上,我們主要是嘗試CNN中池化層上雜草圖片識別的可行性進行探討。池化層上,我們的目的是通過降采樣的方法減少參數(shù),對卷積層的結果再次進行壓縮,方便我們進一步對特征進行提取,減少數(shù)據(jù)的處理量。
1)我們首先采用最大池化(Max Pooling)方法,即通過去窗口中的像素網(wǎng)格中的最大值?,F(xiàn)在我們結果如圖7所示:
由于不同的卷積核會提取不同的特征,雖然取最大值會舍棄大量的像素點的信息,但是由于卷積層已經(jīng)能夠提取出相應的特征,舍去的特征對我們的特征提取并沒有太多的影響。進過這一層的計算后,樣本圖片像素規(guī)模會大大減小,參數(shù)也相應得減少。
實際的結果也說明了上述分析,如圖8:
2) 我們還可以嘗試使用補零方法(Zero Padding),其目的是為了使每次卷積后或者池化后的像素矩陣等我大小不變,如下圖所示:
3.2.3 全連接層上的分析方法
在這一層上,我們一個基本的卷積操作已經(jīng)完成,在多層卷積和填充后,我們需要以類的形式輸出。卷積和池化層只會提取特征,并減少原始圖像帶來的參數(shù)。然而,為了生成最終的輸出,我們需要應用全連接層來生成一個等于我們需要的類的數(shù)量的輸出。僅僅依靠卷積層是難以達到這個要求的。理論上雜草的識別在卷積過程中可行,在全連接層上也是可行的。
實際結果我們在圖片中標出的目標都能夠識別出來,如圖10。
4 結束語
本文嘗試使用機器學習中卷積神經(jīng)網(wǎng)絡嘗試對一定農(nóng)田場景中的雜草進行識別,在一定程度上說明了機器學習有推動現(xiàn)代農(nóng)業(yè)的發(fā)展?jié)摿Γ瑫r本文使用的算法也在一定車廣度上可行。但對于復雜場景下農(nóng)田雜草的準確識別還需進一步的研究。
參考文獻:
[1] 何清,李寧,羅文娟,等.數(shù)據(jù)下的機器學習算法綜述[J].中國計算機學會人工智能會議,2013.
[2] Terry,P.J.The Proceedings of Second International Weed Control Congress[J].Copenhagen,1996,601- 609.
[3] 衣世東.基于深度學習的圖像識別算法研究[D].信息工程大學.
[4] 韓凱,張紅英.一種基于Faster R-CNN 的車輛檢測算法[J].西南科技大學學報,2017,32(4).
【通聯(lián)編輯:唐一東】