陳麗娟, 林 菡, 邢婷婷, 陸寶林
福州工商學院, 福建 福州 350700
在動物界中,昆蟲種類最多、數量最大,對農業生產、海關和森林病蟲害防治部門等會造成重大影響[1]。以前的昆蟲分類、鑒定工作主要是依靠昆蟲分類專家來完成的,但是每個專家的工作都比較局限,范圍僅限一個目、一個科甚至一個屬的昆蟲,這樣就出現了對昆蟲識別需求的增多與昆蟲鑒定專家相對較少的局面[2]。將計算機視覺技術應用到農業生產以及昆蟲識別中改善了這一狀況,但是昆蟲識別率較低,如何有效地減少昆蟲識別中一些繁重的工作,改進識別系統,優化識別算法模型,提高昆蟲識別效率,是當前有待解決的問題[1]。
傳統的昆蟲識別方法目前已經被昆蟲圖像識別技術代替。常用的昆蟲識別技術有生物光子檢測法、圖像識別法、取樣檢測法、聲測法和近紅外及高光譜法等。近幾年,人工智能應用到農業生產中,已經有很多研究人員將深度學習技術應用于昆蟲的圖像識別[3],例如周愛明 等[4]提出基于 CaffeNet 的蝴蝶自動識別算法,該算法效果遠好于支持向量機;袁哲明 等[5]提出基于深度學習的輕量化田間昆蟲識別及分類模型,可以應用到田間昆蟲識別,解決復雜的環境帶來的影響;劉姝珺 等[3]提出基于卷積神經網絡和Tensorflow的昆蟲圖像識別研究,結果表明采用不同的優化器可以提高識別準確率。因此本文提出了基于深度脈沖神經網絡的昆蟲識別系統,分析了深度卷積神經網絡(deep convolutional neural networks,DCNN)和脈沖神經網絡(spiking neural networks,SNN)的局限性,結合了兩者的優勢,利用PyCharm和Pytorch搭建了深度脈沖神經網絡模型,應用到昆蟲識別系統中,提高昆蟲識別率,為病蟲害識別問題提供新的思路。
DCNN是一種由多層神經元組成的深度學習模型,解決很多計算機視覺上的問題。該模型主要是由池化、卷積、激活函數等部分組成,其核心是卷積層,可以很好地處理圖像傾斜、扭曲、平移等操作。該模型是將多個神經元聚集起來并含有分層結構,其對應的公式如下。
(1)

卷積層的計算方法就是根據公式:conv=σ(imgMat。W+b),式中:b為偏置值,W為卷積核,σ為激活函數, 。為卷積操作,imgMat為灰度圖像矩陣[6]。本文采用的深度卷積神經網絡模型主要是由輸入層、卷積層、池化層、全連接層和Softmax 分類器構成。
SNN相對于傳統的人工神經網絡,主要特點是使用尖脈沖作為信息傳輸的基本要素,不需要環境的先驗知識,更加接近現實的性能,其神經元模型主要采用累積放電模型(I&F模型),神經元i的膜電位ui(t)對應的積分點火方程如下。
(2)

神經元的放電速率可以根據以下公式計算,式中:t為時間變量,T為時間周期,F為放電速率。
(3)
神經元的膜電壓與產生的相應脈沖序列隨時間變化的關系如圖1所示。圖像的像素表示神經元的輸入,根據公式將像素轉換為相應的電流,然后再由電流轉換為相應的脈沖序列。

圖1 膜電壓與脈沖序列關系圖
結合2種神經網絡的特點搭建的深度脈沖神經網絡可以降低深度模型的功耗,提高模型的泛化能力,具有編碼為脈沖序列的深度學習能力。根據2種神經網絡神經元模型特點,對DSNN 神經元進行轉換,轉換的主要原因是IAF(integrate and fire)神經元不含任何泄漏項和不應期[7]。轉換方法是將對等的積分點火IAF神經元由帶有ReLu激活函數的傳統神經網絡的神經元代替,ReLu神經元的輸出公式如下所示[6]。
(4)
式中:wi表示神經元i的權重,xi表示輸入。
IAF神經元是一種特殊的神經元,該神經元只追蹤膜潛能值的變化,當膜潛能值超過設定的閾值時則產生脈沖,隨后膜潛能值會被重置為0。IAF神經元關于時間t的函數如下所示。
(5)
式中:t為放電時間,ui表示神經元i的膜電位,wi表示突觸前與突觸后神經元i之間的連接值,xi表示輸入。
因為該部分并沒有引入神經元動力學中的任何泄漏項,所以神經元的輸出脈沖就依賴于閾值的設置。為了實現近無損的轉換,DSNN需要找到一種合適的閾值設定方法,因為ReLu函數的性質是當突觸前與突觸后神經元之間的連接為負值時,積分點火神經元會把所有輸出活動的神經元的膜潛能重置為 0[7]。
轉換過程中還要考慮傳統神經網絡到SNN的轉換,因為該過程中有一個很關鍵的操作就是對偏置項的處理。在傳統的神經網絡中偏置項可以調整神經元的輸出,幫助神經元更快地學習,更好地擬合數據,優化參數空間,幫助神經網絡處理不平衡的數據集等。而 SNN在實際應用中并不存在偏置項,因此在轉換過程中,為了確保能夠實現對等神經元的轉換,對于偏置項最簡單的處理方式就是直接把傳統神經網絡中的偏置項b設為0[7]。
構建昆蟲物種圖像數據集,采集昆蟲圖像,標注樣本的類別和目標位置,用于訓練算法模型;進行昆蟲圖像預處理,通過圖像傾斜校正、灰度增強、圖像去噪等方法對昆蟲圖像進行預處理;對處理后的圖像利用SNN進行邊緣特征提取,將昆蟲對象與背景分割出來,定位昆蟲對象;采用適合昆蟲圖像的特征提取方法,獲取其形態特征數據,如顏色、紋理、游程長度、灰度共生矩陣和形狀不變矩等,這些綜合特征提取有利于昆蟲圖像的識別;結合深度神經網絡和脈沖神經網絡的特點,搭建深度脈沖神經網絡模型,進行昆蟲圖像的訓練和測試。利用PyCharm和PyTorch搭建的昆蟲識別系統的框架,可以為算法提供接口,支持其他模型的部署和測試。系統流程如圖2所示。

圖2 昆蟲識別系統流程
本文主要利用脈沖神經網絡模型對昆蟲圖像進行邊緣特征提取,定位昆蟲對象。該模型結構如圖3所示。利用感受野和脈沖神經元進行邊緣特征提取,模型主要有3層。

圖3 脈沖神經網絡模型
第1層輸入層。1個光感接受器對應圖像的1個像素。
第2層中間層。有4種類型的神經元(N1、N2、N3、N4)對應4種不同方向的感受野,在突觸連接中的X代表興奮性突觸,Δ代表抑制性突觸,其中突觸權重矩陣相當于在感受野RFrept中檢測邊緣的一個濾波器。神經元N1有突觸權重矩陣Wup,能夠響應上邊緣;神經元N2有突觸權重矩陣Wdown,能夠響應下邊緣;神經元N3有突觸權重矩陣Wleft,能夠響應左邊緣;神經元N4有突觸權重矩陣Wright,能夠響應右邊緣。
第3層輸出層。每一個神經元(x′,y′)累積來自中間層的4個神經元矩陣的輸出,然后響應位于感受野RFrept任意方向的邊緣。通過繪制輸出層的脈沖頻率圖,就可以得到對應輸入圖像的邊緣圖[8]。
利用PyCharm和PyTorch框架搭建了深度脈沖神經網絡模型,首先進行模型訓練,實例化模型、損失函數和優化器等,在控制臺的輸出結果中,可以看到隨著迭代次數的增加,損失值在不斷地降低,精確性也在提高。模型訓練如圖4所示。

圖4 模型訓練圖
加載訓練好的模型進行測試識別,對1 000張昆蟲圖像進行識別,在不同的迭代次數下本系統的識別率不同,確定最佳的迭代次數,有958張可以成功識別,42張錯誤識別,可以得出本系統的最佳識別率為95.8%,誤識率為4.2%。分析誤識率的原因可能是圖像背景太復雜、數據集不夠全面、特征提取分析不夠全面精準、模型訓練不夠等。由于深度脈沖神經網絡模型只是訓練已知的物種,不能對未知的類別進行識別和檢測,因此遇到數據集中不存在的昆蟲物種,也沒辦法識別出來。
本文主要介紹了基于深度脈沖神經網絡的昆蟲識別系統,分別對昆蟲對象定位和深度脈沖神經網絡模型訓練及測試進行了詳細的分析。該識別技術具有廣泛的應用前景,可以應用于植物病蟲害預測預報及其防治,幫助農業工作者進行昆蟲識別,從而實現病蟲害的及時發現,也能夠幫助昆蟲學家更快、更好地判別昆蟲種類,從而實現植物病蟲害的及時防治。由于客觀條件和時間的限制,本文提出的系統目前所能識別的昆蟲種類仍然非常有限,有很多方面需要進一步提高。