重慶師范大學(xué) 彭明杰
昆蟲的有效識別是農(nóng)林業(yè)病蟲害防治的必要環(huán)節(jié),也是研究和維護(hù)生態(tài)環(huán)境的重要前提。蜻蜓是一種理想型環(huán)境指示昆蟲,蜻蜓的識別研究在環(huán)境檢測和保護(hù)方面有著重要的現(xiàn)實意義。本文使用收集的處于生態(tài)環(huán)境中的蜻蜓數(shù)據(jù)集,采用多模態(tài)深度學(xué)習(xí)網(wǎng)絡(luò)模型設(shè)計思路,構(gòu)建了以SqueezeNet為主干分類網(wǎng)絡(luò)的蜻蜓識別系統(tǒng),識別準(zhǔn)確率高于傳統(tǒng)手工設(shè)計特征的算法,并且避免了傳統(tǒng)算法只能識別標(biāo)本圖片的局限性。
昆蟲的有效識別是農(nóng)林業(yè)病蟲害防治的必要環(huán)節(jié),也是研究和維護(hù)生態(tài)環(huán)境的重要基礎(chǔ)。蜻蜓是一種水陸兩息的昆蟲,因此是一種理想的環(huán)境指示昆蟲,在環(huán)境檢測和保護(hù)領(lǐng)域有著極其重要的研究價值。國內(nèi)外均有蜻蜓識別相關(guān)的研究,但利用機(jī)器學(xué)習(xí)技術(shù)進(jìn)行蜻蜓的自動識別研究還有欠缺。傳統(tǒng)的蜻蜓識別方法是在生物學(xué)專家采集蜻蜓樣本,通過觀察蜻蜓的顏色形狀和形態(tài)結(jié)構(gòu)等特征后,進(jìn)行人為設(shè)計的蜻蜓特征提取,然后與已有的模式照樣本進(jìn)行對照鑒定,從而判斷出蜻蜓的種類。此類方法費(fèi)時費(fèi)力且依賴于蜻蜓識別知識的掌握,極大的限制了蜻蜓識別的普適性。同時其識別準(zhǔn)確率也很低,并且只能識別標(biāo)本圖片,對處于生態(tài)環(huán)境下的蜻蜓沒有識別能力。隨著計算機(jī)視覺和機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,利用神經(jīng)網(wǎng)絡(luò)來進(jìn)行圖像識別的方式在許多圖像分類問題上已取得了很好的效果。但是由于蜻蜓對象與自然環(huán)境緊密結(jié)合,生存環(huán)境復(fù)雜多變,導(dǎo)致蜻蜓的圖像背景對識別任務(wù)造成巨大的干擾,并且蜻蜓各種類之間差異小,一些種類尤其相似,這些原因不僅使得蜻蜓數(shù)據(jù)采集困難,也讓識別蜻蜓具有細(xì)粒度分類的特點(diǎn)。面對以上情況,本文采用多模態(tài)特征融合的方式對數(shù)據(jù)集進(jìn)行處理和特征提取,利用改進(jìn)的SqueezeNet達(dá)到了更好的識別準(zhǔn)確率和較快的識別速率。
對同一物種的不同種類進(jìn)行識別屬于典型的細(xì)粒度識別任務(wù),現(xiàn)今人們已經(jīng)將細(xì)粒度識別作為一個計算機(jī)視覺領(lǐng)域的基礎(chǔ)性問題來討論。在分類學(xué)的邏輯約束下,人為進(jìn)行分類的某一群子類往往因同屬于一個大類而具有較高的相似度,這時區(qū)分各個子類的憑借只能是它們之間存在的一些細(xì)小的差異,這樣的特點(diǎn)使得細(xì)粒度識別任務(wù)更具挑戰(zhàn)性。如圖1所示,以小團(tuán)扇春蜓和巨圓臀大蜓為例,兩者之間可用于區(qū)分的特征主要在于背側(cè)紋的不同,而這種差異是很細(xì)微的。
細(xì)粒度圖像分類隨著深度學(xué)習(xí)的發(fā)展,如今在各個領(lǐng)域都有著廣泛的研究和應(yīng)用需求。在生活中,真正能滿足實際需求的不是區(qū)分“大象和冰箱”之類的粗分類,而是區(qū)分“250ml豆瓣醬和250ml甜面醬”這樣的細(xì)分類。在學(xué)術(shù)上,人們主要構(gòu)建了公共的鳥、狗、花、車、飛機(jī)等公開圖像數(shù)據(jù)集來進(jìn)行細(xì)粒度識別算法的研究。而尤其在生物學(xué)中,有效地識別不同的物種,是進(jìn)行其他研究的重要前提,由此甚至誕生了生物分類學(xué)這一學(xué)科。因此,借助機(jī)器學(xué)習(xí)算法實現(xiàn)低成本的細(xì)粒度圖像識別,對我們的研究和生活都有重要的意義。
圖1 小團(tuán)扇春蜓和巨圓臀大蜓
實驗采用平時比較常見的蜻蜓種類作為研究對象,以野外拍攝、網(wǎng)絡(luò)搜索和向他人索要等方式共采集到12類蜻蜓的圖片,共計1768張圖片,以此作為數(shù)據(jù)集。數(shù)據(jù)集樣本如圖2所示。
圖2 蜻蜓數(shù)據(jù)集
為了更加清晰地將目標(biāo)與背景分離開來,得到目標(biāo)完整的輪廓信息,本文使用富邊緣檢測的方法來對圖片進(jìn)行預(yù)處理。具體步驟為:①首先對輸入的彩色圖像進(jìn)行灰度處理,使用公式(1)來計算灰度值,把RGB圖像轉(zhuǎn)換為灰度圖。其中R,G,B分別表示色彩通道中的紅、綠、藍(lán)三個通道的數(shù)值;
②對訓(xùn)練樣本添加隨機(jī)的椒鹽噪聲以模擬圖像在傳輸、處理等過程中受到的干擾信息,從而增強(qiáng)算法的魯棒性;③再使用中值濾波器對上一個步驟輸出的灰度圖進(jìn)行降噪處理,得到輸出圖像X1;④再使用Sobel算子對圖像X1進(jìn)行邊緣檢測,得到圖像X2;⑤再使用Canny算子對圖像X2進(jìn)行邊緣檢測,得到圖像X3;⑥將上兩個步驟得到的圖像X2與X3進(jìn)行疊加,從而最終獲得富邊緣檢測圖像。處理結(jié)果如圖3所示。
圖3 圖像預(yù)處理過程結(jié)果圖
深度學(xué)習(xí)模型比常規(guī)的算法有著更龐大的計算量,意味著需要更優(yōu)良的設(shè)備,如GPU,TPU等等,隨著智能移動端的發(fā)展,將深度學(xué)習(xí)模型嵌入至移動端設(shè)備成為了現(xiàn)如今的業(yè)界的需求,國內(nèi)外研究者們提出了一系列降低卷積神經(jīng)網(wǎng)絡(luò)計算量的方法,如Andrew Howard等研究者提出的MobileNet(G.Howard,M.Zhu,B.Chen,D.Kalenichenko,W.Wang,T.Weyand,M.Andreetto,H.Adam.Mobilenets:Efficient convolutional neural Networks for mobile vision applications)系列和另一種輕量級的卷積神經(jīng)網(wǎng)絡(luò)SqueezeNet。它利用FireModule模塊降低卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)量,使得其準(zhǔn)確率在與AlexNet的同時參數(shù)量卻僅為后者的五十分之一。另外,單一特征的輸入不利于以復(fù)雜自然環(huán)境為背景的蜻蜓圖片的識別,因此本文提出了一種基于SqueezeNet的多模態(tài)特征輸入的蜻蜓識別網(wǎng)絡(luò)。
本文采用兩種圖像特征作為輸入。一種是蜻蜓的RGB原圖,由可見光攝像頭采集的三通道圖像,第二種是經(jīng)富邊緣檢測處理后的單通道灰度圖像,RGB圖能夠描述物體的表觀,顏色以及部分紋理的信息,而富邊緣檢測后的單通道灰度圖能夠描述物體的形狀,尺度以及空間幾何的信息,因此兩種特征的圖像具備互補(bǔ)性,兩種圖像采用特征融合的方式,輸入圖像是RGB圖像和富邊緣檢測后的單通道灰度圖像,在經(jīng)過2個FireModule之后生成的特征圖在三維空間中沿著第一個維度進(jìn)行拼接,將拼接完的特征圖再經(jīng)過7個FireModule進(jìn)入全連接層。網(wǎng)絡(luò)模型結(jié)構(gòu)圖如圖4所示。
由于數(shù)據(jù)集的每一類的樣本數(shù)量處于非均衡狀態(tài),例如第一類的數(shù)據(jù)有179張,而第二類僅有43張,如表1所示。大范圍的數(shù)據(jù)比例失衡會破壞交叉熵?fù)p失,若是以傳統(tǒng)的損失函數(shù)去構(gòu)造目標(biāo)函數(shù),會導(dǎo)致部分類別發(fā)生欠擬合的情況。
圖4 模型結(jié)構(gòu)圖
而一般而言,常用的多分類交叉熵?fù)p失定義為:
其中pgroundtruth為數(shù)據(jù)集的標(biāo)簽,ppredict為預(yù)測的類別概率。針對數(shù)據(jù)集類別分布不均勻的問題,本文采用Tsung-Yi Lin(Lin T Y,Goyal P,Girshick R,et al.Focal Loss for Dense Object Detection)等研究者提出的Focal Loss損失函數(shù)的方法構(gòu)造蜻蜓識別的目標(biāo)函數(shù)。多分類Focal Loss公式為:
表1 各類蜻蜓樣本數(shù)量表
α和γ是平衡參數(shù),分別用來平衡正樣本與負(fù)樣本數(shù)量比例不均(即類別不均衡)的問題和簡單樣本與復(fù)雜樣本的權(quán)重平衡問題。只設(shè)置α可以平衡正樣本和負(fù)樣本的在訓(xùn)練過程中的權(quán)重問題,但是無法解決簡單樣本與復(fù)雜樣本的權(quán)重問題,因此引入γ參數(shù)來調(diào)節(jié)簡單樣本權(quán)重,使之保持一個動態(tài)降低的速率,當(dāng)γ為0時即為交叉熵?fù)p失函數(shù),后續(xù)實驗結(jié)果也證明使用FocalLoss后整體準(zhǔn)確率有明顯的提升。
本實驗采用Python3.6、TensorFlow-gpu 1.8.0以及Keras2.2.4框架搭建模型。并且采用Cuda8.0、Cudnn為Titan XP GPU提供深度學(xué)習(xí)的驅(qū)動支持。超參數(shù)設(shè)置包括BathchSize為128,學(xué)習(xí)效率為1e-3,權(quán)重衰減率為5e-6,優(yōu)化器采用Adam優(yōu)化器,優(yōu)化器參數(shù)Beta1、Beta2分別設(shè)置為0.9、0.999,迭代次數(shù)為200次。
我們在收集的數(shù)據(jù)集上對不同算法進(jìn)行了對比實驗以驗證本文方法的有效性。將本文提出的方法分別與包括支持向量機(jī)(Support vector machine,SVM)、貝葉斯神經(jīng)網(wǎng)絡(luò)方法(Bayesian neural network,BNN)和殘差網(wǎng)絡(luò)ResNet18(Convolutional neural network)在內(nèi)的三種算法在蜻蜓識別準(zhǔn)確率上進(jìn)行了對比。除本文方法外,其他算法均采用單一特征輸入的方式進(jìn)行實驗,即只使用蜻蜓RGB圖像的顏色直方圖來表征訓(xùn)練樣本的特征圖,SVM算法的核函數(shù)選擇高斯核函數(shù)。不同算法的準(zhǔn)確率結(jié)果如表2所示??梢钥闯?,在使用支持向量機(jī)時,算法對蜻蜓的識別準(zhǔn)確率較低;傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)在小數(shù)據(jù)集上則容易發(fā)生過擬合現(xiàn)象,因此在該方法下的蜻蜓識別準(zhǔn)確率也不高;貝葉斯神經(jīng)網(wǎng)絡(luò)方法與本文方法相似,但因其只使用單一輸入特征,其準(zhǔn)確率也低于本文方法使用多特征融合的多模態(tài)輸入神經(jīng)網(wǎng)絡(luò)??偟膩砜矗疚姆椒ㄅc上述3種算法相比,平均識別準(zhǔn)確率提高了11到35.6個百分點(diǎn),平均提高了23.8個百分點(diǎn)。
圖4 蜻蜓自動識別系統(tǒng)
表2 算法結(jié)果對比圖
將本文訓(xùn)練的網(wǎng)絡(luò)模型搭載在基于python的圖形界面開發(fā)包QT5編寫的GUI上,搭建一個輕便的蜻蜓識別系統(tǒng)。該系統(tǒng)能夠根據(jù)用戶傳入的蜻蜓圖片給出準(zhǔn)確的分類信息,主要分為兩個模塊:輸入模塊與輸出模塊,輸入模塊首先判斷傳入對象是否為蜻蜓,其次對圖像進(jìn)行預(yù)處理,處理完成后對圖像放入網(wǎng)絡(luò)進(jìn)行預(yù)測。輸出模塊主要來自于給出預(yù)測的結(jié)果,判斷蜻蜓所屬類別及其概率,并且給出該類別的蜻蜓示例圖。系統(tǒng)示例圖如圖4所示。
結(jié)論:本文將圖像處理技術(shù)和深度學(xué)習(xí)技術(shù)相結(jié)合,采用多模態(tài)輸入的方式搭建卷積神經(jīng)網(wǎng)絡(luò),有效地實現(xiàn)了蜻蜓圖像的自動識別。實驗主要采用Sony IMX300攝像頭以及通過Google搜索引擎進(jìn)行數(shù)據(jù)的采集,分類上細(xì)分到每個類別中的雄雌性,使用RGB圖與富邊緣檢測圖像處理相結(jié)合的方法,在更加清晰地將目標(biāo)與背景分離開來,得到目標(biāo)完整的輪廓信息的同時,保證了圖片的色彩信息。提出了一種基于SqueezeNet多模態(tài)特征融合的蜻蜓識別網(wǎng)絡(luò)對數(shù)據(jù)進(jìn)行訓(xùn)練,從而對蜻蜓的種類進(jìn)行分類,克服了傳統(tǒng)蜻蜓識別方法中需要通過手工設(shè)計和提取目標(biāo)特征的缺點(diǎn),為蜻蜓鑒別任務(wù)節(jié)省了時間成本。另外,由于圖像的質(zhì)量將直接影響到分類的效果,基于本文算法搭建的蜻蜓識別系統(tǒng)對于質(zhì)量較好的蜻蜓圖片識別率較高,對背景復(fù)雜和模糊的圖像識別率較低,這是值得進(jìn)一步研究的地方。