唐鑫鑫, 陸安江, 彭熙瞬, 高海韜
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院, 貴陽 550025)
社會經(jīng)濟的快速發(fā)展,對生態(tài)環(huán)境資源索取使用過度,自然環(huán)境被嚴(yán)重破壞。 鳥類是自然生態(tài)中重要的一員,據(jù)國際鳥類聯(lián)盟最新調(diào)查研究顯示,全球八分之一的鳥類面臨滅絕的危險,生存狀況日益惡化,數(shù)量下降呈現(xiàn)恐怖趨勢,保護鳥類刻不容緩。目前,鳥類的識別工作仍主要依靠人工先驗知識,時間成本過大。 通過人工智能技術(shù)構(gòu)建一個智能鳥類識別分類系統(tǒng),能夠節(jié)約人力成本,為鳥類保護貢獻(xiàn)一份力量。 鳥類識別算法主要分為兩類:基于部件的多級分類算法和基于端到端的分類算法。 基于部件的多級分類算法代表有Wah最先提出的基于傳統(tǒng)特征的詞包分類模型;Donahue 等人提出的基于CNN 的DeCAF 特征;Zhang 等人提出的自局部檢測到特征提取均采用CNN 架構(gòu)的Partbased R-CNN 等。 基于端到端的分類算法有Fu 等人提出的RA-CNN 模型,基于遞歸神經(jīng)網(wǎng)絡(luò)增強局部注意力及特征表達(dá);Li 等人提出冪歸一化協(xié)方差矩陣MPN-COV;魏秀參提出的基于FCN 學(xué)習(xí)分割模型的Mask-CNN 算法等等。
本文使用改進過的Resnet50 網(wǎng)絡(luò)(稱作DLResnet50)替換SSD 的前置網(wǎng)絡(luò)VGG,對自制的鳥類數(shù)據(jù)集進行目標(biāo)識別檢測分類。
Wei Liu 在ECCV 2016 上提出了SSD 模型。 該模型全稱Single Shot MultiBox Detector,意思為單鏡頭多盒檢測器。 SSD 基于深度學(xué)習(xí),是人工智能下的一種目標(biāo)檢測模型,其前置網(wǎng)絡(luò)為VGG-16,是目前流行的目標(biāo)檢測框架之一。 該算法會在圖片上均勻地產(chǎn)生若干個不同大小的候選框,且其長寬比均不相同,使用卷積層將圖像的特征提取出來,再進行回歸和分類。 SSD 模型網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 SSD 模型網(wǎng)絡(luò)結(jié)構(gòu)圖Fig. 1 Network structure diagram of SSD model
SSD 采用VGG-16 為前置網(wǎng)絡(luò),將VGG-16 的2 個全連接層FC6 和FC7 替換為3×3 卷積Conv6 和1×1 卷積Conv7,將池化層Pool_5 由2×2 池化修改為3×3 池化,移除Dropout 層和全連接層FC8,并添加4 個新的卷積層:Conv8、Conv9、Conv10、Conv1l 。其處理過程中如激活函數(shù)全部采用ReLU,且均在卷積操作結(jié)束后使用,池化操作不使用激活函數(shù),做卷積與池化交替計算,假設(shè)輸入的圖像尺寸為224×224×3,則每一步的計算與圖像尺寸見表1。
表1 VGG16 計算過程圖像變化Tab. 1 Image changes during VGG16 calculation process
最后的輸出圖像與兩層1×1×4 096,一層1×1×1 000進行全連接,即共有3 層全連接層,最后再通過ReLU激勵函數(shù)激活,輸出的預(yù)測結(jié)果可以有1 000 個。
不同特征圖的每個特征點上都有一組默認(rèn)先驗框與之對應(yīng),因此SSD 模型預(yù)測的時候計算默認(rèn)先驗框的位置偏移和置信度。
SSD 的損失函數(shù)值包含兩個部分: 置信度(L) 和定位(L), 而損失函數(shù)就是這兩者的加權(quán)和。 置信度損失L的計算公式(1)如下:
SSD 算法需要計算兩部分,即相應(yīng)的先驗框與目標(biāo)類別的置信度和相應(yīng)的位置回歸。
其中,參數(shù)∈(0,1),表示默認(rèn)框和實際檢測框的匹配是否成功;參數(shù)作用類似于權(quán)重,用來平衡置信損失和位置損失;是分類置信度;代表預(yù)測框;代表真實標(biāo)簽框;是與該類別的校準(zhǔn)框匹配的默認(rèn)框數(shù)量,當(dāng)0 時,說明損失為0。
SSD 的優(yōu)點在于采取多尺度特征融合策略,利用多個卷積層的輸出參與預(yù)測,提升了檢測精度;直接使用默認(rèn)框進行檢測,沒有候選區(qū)域生成的過程,提升了檢測速度。 但對小目標(biāo)的魯棒性差,會有識別不出來的問題。 根據(jù)VGG 網(wǎng)絡(luò)的特性,增加網(wǎng)絡(luò)層數(shù)后提升的效果并不明顯,因為出現(xiàn)了網(wǎng)絡(luò)退化的問題,退化問題阻礙了網(wǎng)絡(luò)收斂,不僅增加了訓(xùn)練誤差,也增加了測試誤差,降低了網(wǎng)絡(luò)精度。
為了提升網(wǎng)絡(luò)訓(xùn)練的識別準(zhǔn)確率,最簡單直接的方式是增加網(wǎng)絡(luò)層數(shù),以增加對目標(biāo)特征的學(xué)習(xí)次數(shù)。 但若只是盲目增加網(wǎng)絡(luò)層數(shù),問題并沒有得到解決;相反地,還會導(dǎo)致錯誤率的突然上升,產(chǎn)生此問題的原因是發(fā)生了梯度消失。
ResNet50 網(wǎng)絡(luò)中提出的殘差結(jié)構(gòu)(Residual Block) 主要目的是解決網(wǎng)絡(luò)退化問題,ResNet50的殘差網(wǎng)絡(luò)學(xué)習(xí)單元如圖2(a)所示。
ResNet50 網(wǎng)絡(luò)由多個殘差模塊構(gòu)建而成,其函數(shù)表達(dá)式為式(4):
其中,為輸入;() 表示殘差映射;() 表示殘差網(wǎng)絡(luò)的特征輸出。
當(dāng)()0 時,表示該卷積層做恒等映射;當(dāng)()0,表示該卷積層學(xué)習(xí)到新的特征信息,從而保證反向傳播時的梯度傳遞,有效解決了網(wǎng)絡(luò)訓(xùn)練過程中存在的梯度消失和網(wǎng)絡(luò)退化問題。
本文對ResNet50 網(wǎng)絡(luò)的改進結(jié)構(gòu)如圖2(b)所示,將改進后ResNet50 的網(wǎng)絡(luò)稱為DL-ResNet50。
圖2 兩個殘差學(xué)習(xí)單元對比Fig. 2 Comparison of two residual learning units
由于ResNet50 網(wǎng)絡(luò)訓(xùn)練過程中易出現(xiàn)過擬合,為了進一步提高該網(wǎng)絡(luò)的識別精度,本文在原網(wǎng)絡(luò)最后一個卷積層后加入Dropout 層和3 層全連接層,用Leaky-relu 函數(shù)取代原網(wǎng)絡(luò)的ReLU 函數(shù)。
加入Dropout 層和3 層全連接層后,可以讓ResNet50 網(wǎng)絡(luò)過擬合的機率有效下降,改善增強模型泛化能力。 當(dāng)網(wǎng)絡(luò)輸入0 時,ReLU 函數(shù)無法更新,從而模型不能訓(xùn)練學(xué)習(xí)特征。 而Leaky-relu函數(shù)在輸入0 時輸出持續(xù)變化,更新權(quán)重繼續(xù)學(xué)習(xí)。 改進的SSD 模型工作流程如圖3 所示。
圖3 改進SSD 模型工作流程Fig. 3 Improved SSD model workflow
本次數(shù)據(jù)集從文獻(xiàn)[12]所記錄的鳥類中隨機選取10 種,分別是黑頸鶴、灰鶴、斑頭雁、黃眉柳鶯、白鷺、大斑啄木鳥、山斑鳩、喜鵲、赤麻鴨以及烏鴉,共計4 830 張圖片,為了保證模型識別效果,防止模型過擬合,對數(shù)據(jù)圖像進行鏡像翻轉(zhuǎn)處理,增加數(shù)據(jù)集數(shù)量,將數(shù)據(jù)集按照模型比例6 ∶4 ∶1 分配劃分為訓(xùn)練集、驗證集、測試集。
為了更好的訓(xùn)練模型,對收集的圖像數(shù)據(jù)灰度化、均衡化以及歸一化處理,如圖4 所示,其中(a)為原圖,(b)表示經(jīng)過加權(quán)均值灰度化的圖,(c)表示經(jīng)過直方圖均衡化后的灰度圖。 對比(b)和(c)可以明顯看出圖中的目標(biāo)與背景的差異變大。 再利用labelImg-master 工具在圖中框出目標(biāo)位置及類型,即可獲取目標(biāo)的像素信息。
圖4 圖片處理對比Fig. 4 Comparison of image processing
本文實驗平臺選取 tensorflow 開源框架,Windows10 系 統(tǒng),python3. 6 編 程 語 言,cuda9. 0,cudnn7.0, NVIDIIA GTX2060 顯卡。
本文實驗以模型損失值曲線變化、平均交并比(Average Intersection Over Union, Avg IOU)以及AP曲線來作為評估依據(jù),分別在SSD、SSD+ResNet50以及SSD+DL-ResNet50 3 個模型下做實驗對比。 3個模型實驗訓(xùn)練參數(shù)一致,訓(xùn)練批次大小為8,迭代300 次,初始學(xué)習(xí)率為0.001,權(quán)值衰減系數(shù)為0.000 5。損失值曲線變化如圖5 所示。
圖5 3 種模型的損失值曲線Fig. 5 Loss value curves of the three models
本文所提算法SSD+DL-ResNet50(紅色線)收斂速度最快且最終損失值最小,穩(wěn)定在1.3 左右。 SSD+ResNet50(綠色線)次之,原SSD 模型最慢損失值也最高,約2.1,本文算法在損失值這一項上降低了約0.8。
在目標(biāo)檢測中常表示預(yù)測框和真實框相交面積與相并面積的比值,比值越接近1 效果越好,公式(5)。
其中,A表示目標(biāo)預(yù)測框面積,表示目標(biāo)真實檢測框的面積。
通過實驗結(jié)果可得3 個模型的交并比變化曲線,如圖6 所示。 由圖6 可知,隨著迭代次數(shù)的增加,3 種模型的交并比值都逐漸增加,但是由紅色線可知本文改進模型DL-ResNet50 SSD 的值均高于綠色線ResNet50 SSD 模型和藍(lán)色線原SSD 模型。
圖6 3 種模型交并比變化曲線Fig. 6 Intersection ratio change curves of the three models
本文選擇準(zhǔn)確率和召回率來作為目標(biāo)檢測的性能評估標(biāo)準(zhǔn),準(zhǔn)確率就是測試檢測正確的目標(biāo)在所有樣本中所占的比例,計算表達(dá)如式(6)。 召回率則表示在所有真實目標(biāo)中被正確檢測出來的占比,計算表達(dá)如式(7)。
其中,表示準(zhǔn)確率;表示召回率;表示模型正確檢測的目標(biāo)個數(shù);表示模型錯誤檢測的目標(biāo)個數(shù);表示模型漏檢的正確目標(biāo)個數(shù)。
實際上, 準(zhǔn)確率和召回率往往是此消彼長,難以兼得,因此將計算得到的、值繪制成曲線圖,綜合考慮曲線下的面積值大小來評估各類別檢測性能,值越大表示模型檢測精度越高,即性能越好,計算公式(8)。
針對多個類別,使用平均值評估模型整體性能,公式(9)。
斑頭雁和灰鶴兩種類別的鳥在原SSD 模型、用ResNet50 替換VGG 網(wǎng)絡(luò)的SSD 模型還有本文提出的改進ResNet50 取代VGG 的SSD 模型下的變化值如圖7 所示。 對比分析,本文所提算法的值更大,模型精確度更高。
SSD、SSD 中已有的VGG 網(wǎng)絡(luò)替換為ResNet50以及改進ResNet50 取代VGG 的SSD 模型下的檢測精度對比見表2,可知本文的改進算法在總體的檢測精度上比原SSD 提升5 個點
表2 3 種模型檢測精度Tab. 2 Detection accuracy of the three models
檢測結(jié)果如圖8 所示,其中(a)是原SSD 模型的檢測結(jié)果,可以看到有些被遮擋的目標(biāo)沒有被檢測到,(b)圖是改進后的SSD 模型檢測結(jié)果,雖然有的被遮擋目標(biāo)也沒有被檢測出,但是增加了2 個目標(biāo)檢測框。
圖7 3 種網(wǎng)絡(luò)的AP 曲線Fig. 7 AP curves of the three networks
圖8 檢測結(jié)果Fig. 8 Detection results
本文提出一種用改進ResNet50 網(wǎng)絡(luò),取代SSD模型的基準(zhǔn)網(wǎng)絡(luò)VGG 的SSD 模型算法對鳥類目標(biāo)進行檢測研究。 通過實驗對比可知,本文提出的算法在模型收斂速度、檢測精度以及多目標(biāo)檢測方面都有改善提升。 本文數(shù)據(jù)集種類只有10 類,因此下一步的研究工作是增加數(shù)據(jù)集種類以及數(shù)量,將算法融合進系統(tǒng)之中,實現(xiàn)一個完整的鳥類識別分類系統(tǒng)。