劉姝珺,吳晟宇
南京工程學(xué)院,江蘇 南京 211167
中國(guó)是農(nóng)業(yè)大國(guó),在傳統(tǒng)的農(nóng)業(yè)生產(chǎn)中,經(jīng)常會(huì)受到病蟲(chóng)害問(wèn)題的困擾。在解決病蟲(chóng)害問(wèn)題時(shí),第一步是識(shí)別昆蟲(chóng)。在傳統(tǒng)的昆蟲(chóng)識(shí)別方法中,昆蟲(chóng)專(zhuān)家根據(jù)專(zhuān)業(yè)知識(shí)觀察昆蟲(chóng)的外部特征,并對(duì)照相關(guān)的昆蟲(chóng)圖鑒進(jìn)行識(shí)別,費(fèi)時(shí)費(fèi)力。如今,傳統(tǒng)的昆蟲(chóng)識(shí)別方法逐漸被昆蟲(chóng)圖像識(shí)別技術(shù)代替。目前常用的昆蟲(chóng)識(shí)別技術(shù)有圖像識(shí)別法、微波雷達(dá)檢測(cè)法[1]、生物光子檢測(cè)法[2]、取樣檢測(cè)法、近紅外及高光譜法[3]、聲測(cè)法[4]等。近年來(lái),隨著人工智能的迅速發(fā)展,深度學(xué)習(xí)技術(shù)在處理自然語(yǔ)言、機(jī)器視覺(jué)等方面取得了很多成果,隨著深度學(xué)習(xí)的發(fā)展,已經(jīng)有研究人員開(kāi)始將深度學(xué)習(xí)技術(shù)應(yīng)用于昆蟲(chóng)的圖像識(shí)別[5-6]。文章旨在利用基于深度學(xué)習(xí)的圖像識(shí)別技術(shù)解決昆蟲(chóng)識(shí)別問(wèn)題,希望能給現(xiàn)實(shí)生活中的病蟲(chóng)害識(shí)別問(wèn)題提供新的解決問(wèn)題的思路。
深度學(xué)習(xí)方法是一種多層次抽象學(xué)習(xí)的方法,在機(jī)器學(xué)習(xí)的基礎(chǔ)上發(fā)展而來(lái)。深度學(xué)習(xí)通過(guò)對(duì)底層數(shù)據(jù)的相關(guān)學(xué)習(xí),抽取出相關(guān)特征,再通過(guò)非線性的映射函數(shù)進(jìn)行從底層到高層的傳遞與轉(zhuǎn)換,最終形成機(jī)器模型。深度學(xué)習(xí)方法識(shí)別的對(duì)象都比較復(fù)雜,通常訓(xùn)練獲得的特征遠(yuǎn)大于傳統(tǒng)的人工識(shí)別獲取的特征,并且分布式特征提取能夠很好地處理非線性關(guān)系,也更符合生活中的實(shí)際情景。深度學(xué)習(xí)方法發(fā)展至今,通過(guò)對(duì)基本模型的優(yōu)化和訓(xùn)練得到了很多性能良好的模型,如受限玻爾茲曼機(jī)RBM、自動(dòng)編碼器AC和卷積神經(jīng)網(wǎng)絡(luò)CNN等較基礎(chǔ)的深度學(xué)習(xí)模型。
Tensorflow是谷歌發(fā)布的第二代人工智能系統(tǒng)[7],它是一個(gè)開(kāi)源軟件庫(kù),用于機(jī)器學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)研究。Tensorflow支持短期記憶網(wǎng)絡(luò)LSTMN、循環(huán)神經(jīng)網(wǎng)絡(luò)RNN和卷積神經(jīng)網(wǎng)絡(luò)CNN等神經(jīng)網(wǎng)絡(luò)模型[8]。
2.2.1 卷積
神經(jīng)網(wǎng)絡(luò)由大量神經(jīng)元相互連接而成[9],神經(jīng)元可以在線性組合輸入后加上非線性激活函數(shù)進(jìn)行非線性變換,然后輸出,神經(jīng)網(wǎng)絡(luò)公式如下:
式中:ai1、ai1-1分別為神經(jīng)網(wǎng)絡(luò)中的一個(gè)神經(jīng)元,分別位于第l層和第l-1層第j個(gè);Wij1為權(quán)重;bi1為偏置項(xiàng);函數(shù)f為激活函數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)通過(guò)局部連接和共享權(quán)值方法降低了網(wǎng)絡(luò)復(fù)雜度,緩解了過(guò)擬合問(wèn)題。其中,層與層的神經(jīng)元不再是全連接,通過(guò)卷積運(yùn)算相鄰層之間只有部分神經(jīng)元連接,使用相同卷積核進(jìn)行卷積操作構(gòu)成特征圖。輸入輸出特征圖的關(guān)系公式如下:
式中:Ai1、Ai1-1分別為第l層和第l-1層第i個(gè)特征圖,符號(hào)“*”表示卷積運(yùn)算;Kij1為第l層第i個(gè)特征圖與第l-1層第j個(gè)特征圖之間進(jìn)行卷積映射的卷積核。
圖像卷積運(yùn)算的過(guò)程如圖1所示。特征圖像與卷積核都以矩陣形式存在,卷積核中的權(quán)值與輸入特征圖上對(duì)應(yīng)的數(shù)值進(jìn)行對(duì)應(yīng)元素相乘,并對(duì)所得元素值進(jìn)行累加,最終得到輸出特征圖的值。卷積操作通常以設(shè)定步長(zhǎng)滑動(dòng)的方式在特征圖上進(jìn)行,圖1的滑動(dòng)步長(zhǎng)為1。
圖1 卷積運(yùn)算過(guò)程
2.2.2 池化
池化又稱(chēng)為子采樣或下采樣,因?yàn)閳D像相鄰區(qū)域的特征極可能重合,所以卷積層輸出中包含的大部分信息是多余的。池化是將圖像全局的特征進(jìn)行聚合統(tǒng)計(jì),簡(jiǎn)化卷積網(wǎng)絡(luò)計(jì)算復(fù)雜度,有效防止過(guò)擬合。池化運(yùn)算常用的方法有均值池化[10]和最大值池化[11],池化運(yùn)算過(guò)程如圖2所示,圖2的池化操作滑動(dòng)步長(zhǎng)為2。
圖2 池化運(yùn)算過(guò)程
2.2.3 激活函數(shù)
激活函數(shù)將非線性因素引入網(wǎng)絡(luò)[12],可以提升網(wǎng)絡(luò)處理復(fù)雜模式的能力。卷積網(wǎng)絡(luò)中常用的激活函數(shù)有tanh、Sigmoid、ReLu等。對(duì)比ReLu激活函數(shù),Sigmoid激活函數(shù)和tanh激活函數(shù)均為飽和函數(shù),存在梯度消失問(wèn)題,采用了冪運(yùn)算,計(jì)算量相對(duì)較大。因此,ReLu激活函數(shù)是目前在卷積網(wǎng)絡(luò)中最常用的激活函數(shù)。
ReLu激活函數(shù)的優(yōu)點(diǎn)如下:(1)Relu激活函數(shù)是非飽和函數(shù),導(dǎo)數(shù)為1,能有效防止梯度消失;(2)小于0的部分返回值為0,只有大于0的部分才有效,可以適當(dāng)減少計(jì)算量;(3)小于0的部分輸出值為0,帶來(lái)網(wǎng)絡(luò)稀疏性,減少了參數(shù)間相互依賴(lài)的關(guān)系,可以緩解網(wǎng)絡(luò)的過(guò)擬合問(wèn)題。
ReLu也存在一定的缺點(diǎn)。由于ReLu函數(shù)在x<0時(shí)梯度為0,可能導(dǎo)致該神經(jīng)元后的梯度永遠(yuǎn)為0,造成神經(jīng)元壞死,無(wú)論進(jìn)行任何訓(xùn)練神經(jīng)元的參數(shù),都無(wú)法再更新。為了解決上述問(wèn)題,研究學(xué)者提出了改進(jìn)的ReLu激活函數(shù),如LReLu(Leaky ReLu)、PReLu(Parametric ReLu)和 RReLu(Randomized Leaky ReLu)。其中,LReLu采用固定的a值;PRelu通過(guò)學(xué)習(xí)得到a值;RReLu的a值采用服從高斯分布的隨機(jī)值。
2.2.4 分類(lèi)器
邏輯回歸分類(lèi)器只能解決二分類(lèi)問(wèn)題,為了構(gòu)建神經(jīng)網(wǎng)絡(luò)的多分類(lèi)模型,通常使用Softmax分類(lèi)器。對(duì)于給定的輸入x,計(jì)算每一種分類(lèi)結(jié)果的出現(xiàn)概率p= (y=j|x)。假設(shè)訓(xùn)練樣本集為 { (x(1),y(1)), … , (xm,ym)},y(i)∈ {1 , 2,...,k},模型參數(shù)為W,Softmax函數(shù)要輸出一個(gè)k維向量來(lái)估計(jì)k分類(lèi)概率值,公式如下:
式中:為輸出值;k為輸出神經(jīng)元個(gè)數(shù);為歸一項(xiàng),即確保函數(shù)所有輸出值總和為1,且每個(gè)值分布在(0, 1)范圍內(nèi)。
損失
函數(shù)L(W)是衡量模型輸出和真實(shí)值的標(biāo)準(zhǔn),需要通過(guò)不斷優(yōu)化使損失函數(shù)降低,公式如下:
式中:l{y(i)=j}為真函數(shù)時(shí),值為1,反之,值為0;m為訓(xùn)練樣本;λ為權(quán)重衰減參數(shù)。
在模型訓(xùn)練之前,選取10個(gè)昆蟲(chóng)種類(lèi)作為訓(xùn)練數(shù)據(jù)集的內(nèi)容,然后通過(guò)網(wǎng)絡(luò)爬蟲(chóng),針對(duì)每個(gè)種類(lèi)的昆蟲(chóng)各爬取200份數(shù)據(jù),經(jīng)過(guò)人工篩選,過(guò)濾掉錯(cuò)誤和不合適的圖片后,留下143份訓(xùn)練數(shù)據(jù),最后按照近似7∶3的比例劃分?jǐn)?shù)據(jù)集。得到每個(gè)昆蟲(chóng)種類(lèi)含有100張圖片的訓(xùn)練集和含有43張圖片的測(cè)試集。
獨(dú)熱編碼(one-hot encoding)又稱(chēng)為一位有效編碼,主要采用N位狀態(tài)寄存器對(duì)N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都有獨(dú)立的寄存器位,并且在任意時(shí)候只有一位有效。在實(shí)驗(yàn)中,將圖片數(shù)據(jù)集轉(zhuǎn)換成數(shù)組形式,并將其亂序,對(duì)變遷數(shù)據(jù)集進(jìn)行獨(dú)熱編碼,為后續(xù)模型訓(xùn)練做準(zhǔn)備。
搭建卷積神經(jīng)網(wǎng)絡(luò)時(shí)選取的是經(jīng)典的LeNet-5模型[13],定義了2層卷積池化層和3層全連接層。為了防止模型參數(shù)過(guò)擬合,設(shè)置dropout隨機(jī)失活器,dropout值設(shè)置為0.5。
文章的研究重點(diǎn)是討論不同優(yōu)化器的使用和學(xué)習(xí)率的設(shè)置對(duì)模型最終測(cè)試結(jié)果的影響,在對(duì)各個(gè)優(yōu)化器進(jìn)行測(cè)試時(shí),將采用已被廣泛采用的參數(shù)值作為參考,在參考值的小幅度區(qū)間內(nèi)進(jìn)行試驗(yàn),由此確定模型預(yù)測(cè)準(zhǔn)確性的變化。
3.3.1 Adam優(yōu)化器(Adam optimizer)
Adam是指自適應(yīng)矩估計(jì)(adaptive moment estimation),是梯度下降法的一種變形[14],其每次迭代參數(shù)的學(xué)習(xí)率都有一定的范圍,不會(huì)因?yàn)樘荻冗^(guò)大而導(dǎo)致學(xué)習(xí)率過(guò)大,參數(shù)值相對(duì)穩(wěn)定。
Adam優(yōu)化器的預(yù)測(cè)準(zhǔn)確率如圖3所示,昆蟲(chóng)識(shí)別效果如圖4所示。雖然訓(xùn)練數(shù)據(jù)有限,但在0.01~0.001的學(xué)習(xí)率下,Adam優(yōu)化器的預(yù)測(cè)準(zhǔn)確率可以達(dá)90%左右,效果較好。當(dāng)學(xué)習(xí)率大于0.01以后,預(yù)測(cè)的準(zhǔn)確率開(kāi)始下降。
圖3 Adam優(yōu)化器的預(yù)測(cè)準(zhǔn)確率
圖4 昆蟲(chóng)識(shí)別效果示意圖
3.3.2 GD優(yōu)化器(gradient descent optimizer)
標(biāo)準(zhǔn)梯度下降法(gradient descent, GD)常用于求解機(jī)器學(xué)習(xí)算法模型參數(shù),通過(guò)梯度下降,一步步迭代求解,從而得到最小化的損失函數(shù)。
GD優(yōu)化器的訓(xùn)練結(jié)果如圖5所示,昆蟲(chóng)識(shí)別效果如圖6所示。在使用GD優(yōu)化器時(shí),效果并不理想。學(xué)習(xí)率初始設(shè)置為0.05時(shí),預(yù)測(cè)的準(zhǔn)確率極低;當(dāng)學(xué)習(xí)率大幅度調(diào)大時(shí),情況稍有好轉(zhuǎn),但預(yù)測(cè)準(zhǔn)確率仍不能令人滿意;當(dāng)學(xué)習(xí)率大幅度調(diào)小時(shí),情況未發(fā)生好轉(zhuǎn)。由此看出,在文章的實(shí)驗(yàn)條件下,GD優(yōu)化器不適合作為實(shí)驗(yàn)的優(yōu)化器。
圖5 GD優(yōu)化器訓(xùn)練結(jié)果
圖6 昆蟲(chóng)識(shí)別效果示意圖
3.3.3 Adagrad優(yōu)化器(Adagrad optimizer)
Adagrad是一種基于SGD的算法[15],其核心思想是對(duì)不同的數(shù)據(jù)集用不同的學(xué)習(xí)率去調(diào)整參數(shù),用較小的學(xué)習(xí)率調(diào)整常見(jiàn)數(shù)據(jù)集的參數(shù),用較大的學(xué)習(xí)率調(diào)整罕見(jiàn)數(shù)據(jù)集的參數(shù)。Adagrad算法比較適合用于數(shù)據(jù)稀疏的數(shù)據(jù)集。
Adagrad優(yōu)化器的訓(xùn)練結(jié)果如表1所示,昆蟲(chóng)識(shí)別效果如圖7所示。Adagrad優(yōu)化器學(xué)習(xí)率的初始值設(shè)置為0.005,當(dāng)將其調(diào)小時(shí)預(yù)測(cè)準(zhǔn)確率出現(xiàn)較大的下降;當(dāng)將學(xué)習(xí)率按一定梯度調(diào)大時(shí),預(yù)測(cè)的準(zhǔn)確率出現(xiàn)好轉(zhuǎn),最好的情況是學(xué)習(xí)率為0.01時(shí),測(cè)試準(zhǔn)確率接近90%,但總體的準(zhǔn)確率基本維持在80%左右。
圖7 昆蟲(chóng)識(shí)別效果示意圖
表1 Adagrad優(yōu)化器的訓(xùn)練結(jié)果
文章基于Tensorflow搭建了卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行昆蟲(chóng)識(shí)別,并重點(diǎn)討論了不同優(yōu)化器的使用和學(xué)習(xí)率的設(shè)置對(duì)模型最終測(cè)試結(jié)果的影響。文章主要對(duì)三種優(yōu)化器進(jìn)行了實(shí)驗(yàn),分別是Adam優(yōu)化器、GD優(yōu)化器和Adagrad優(yōu)化器,并分別設(shè)置了不同的學(xué)習(xí)率。最終發(fā)現(xiàn)Adam優(yōu)化器在學(xué)習(xí)率為0.009時(shí)表現(xiàn)最好,預(yù)測(cè)準(zhǔn)確率達(dá)91%。本次實(shí)驗(yàn)的數(shù)據(jù)集較小,且選擇的卷積神經(jīng)網(wǎng)絡(luò)的深度較淺,在預(yù)測(cè)準(zhǔn)確度方面仍存在很大的提升空間。