李奇龍
摘 要:本文基于2018年第三屆中國數(shù)據(jù)挖掘競賽-國際首次蝴蝶識別大賽,提出基于深度學習技術yolov3的蝴蝶種類自動識別技術,包括生態(tài)照片和模式照片的蝴蝶位置自動檢測和物種鑒定。對yolov3的網(wǎng)絡結構進行了微調(diào),采用對比升降、色度升降、均值模糊、上下、左右翻轉七種方式進行數(shù)據(jù)預處理以增強數(shù)據(jù)量,比較了Faster-Rcnn與YOLOV3模型網(wǎng)絡的蝴蝶自動識別系統(tǒng),以recall(召回率)和loss值。為評價指標,實驗結果表明,基于yolov3 深度學習框架的自動識別系統(tǒng)在2s內(nèi)對生態(tài)環(huán)境中的蝴蝶照片能實現(xiàn)自動檢測和物種識別,且模型的mAP(Mean Average Precision)最低值接近70%。
關鍵詞:深度學習;YOLOV3;蝴蝶識別
引言:昆蟲是人類已知的動物界中數(shù)量最為龐大的一個分支,對該類群實現(xiàn)分類、鑒定是一項非常復雜和艱巨的任務,也是昆蟲研究領域需要解決的重要問題之一(李成德,2003)蝴蝶作為昆蟲的一個數(shù)量龐大的重要分支(已知的種類多達14000余種)對其種類的鑒定與識別是長期以來的昆蟲分類研究的重要內(nèi)容之一(周堯,1998)蝴蝶幼蟲期以農(nóng)作物或植物為食,是農(nóng)林業(yè)重要害蟲之一,對人類的生產(chǎn)與生活有嚴重的影響,因此,對蝴蝶的分類與鑒別有著十分重要的意義。目前隨著計算機的普及,人工智能的迅速發(fā)展,為物種分類提供了大量的數(shù)據(jù)和分類方法。本研究在tensorflow框架下,在應用是yolov3模型上,利用遷移學習方法,對其網(wǎng)絡結構進行微調(diào),通過訓練網(wǎng)絡的權重參數(shù)獲得了一個較好的蝴蝶實時自動識別的模型。
1.數(shù)據(jù)與方法
1.1蝴蝶圖像數(shù)據(jù)集
蝴蝶的數(shù)據(jù)一部分來源于第三屆國際數(shù)據(jù)挖掘大賽,數(shù)據(jù)集中包含了5695張蝴蝶的照片,分為生態(tài)照和標本照,其中生態(tài)照(如圖所示)共計1425張,111種,均由大賽組委會提供,是也在單反相機所得的高清照片,生態(tài)照的數(shù)據(jù)分類如圖所示。標本照極為模式照,共計有4270張1176種,包含生態(tài)照的所有種類。分為正本兩面。如圖所示,模式照的數(shù)據(jù)分類如圖所示。另外測試照片由本次大賽的組委會提供的,如圖所示。
1.2數(shù)據(jù)集劃分
根據(jù)大賽組委會的數(shù)據(jù),我們對所有生態(tài)照的蝴蝶位置進行標注在數(shù)據(jù)預處理中,采用對比升降、色度升降、均值模糊、上下、左右翻轉七種方式進行數(shù)據(jù)預處理以增強數(shù)據(jù)量,便于訓練(如圖所示)。數(shù)據(jù)分為訓練集和測試集,訓練集包含模式照片和生態(tài)照,由于很多生態(tài)照樣本的蝴蝶只有一個樣本,所以去掉這類樣本蝴蝶的種類,共計94種蝴蝶,我們最后選取了對應的模式照的94種進行標注。我們將組委會給的圖片全部用于訓練集,通過數(shù)據(jù)的預處理,最后得到()張生態(tài)照和()模式照。測試集數(shù)據(jù)均來自于第三屆數(shù)據(jù)挖掘大賽組委會提供。
2.蝴蝶位置檢測與種類識別方法
2.1模型的選擇
2018年三月Joseph Redmon Ali Farhadi 等人對yolo結構進行改進,提出了yolov3模型,在iou為0.5時,相較于其他結構例如faster cnn和ssd更快更好。
與其他模型對比如下:
因此本研究基于yolov3結構,對其網(wǎng)絡結構進行微調(diào),更加適合蝴蝶種類的識別與定位。由于蝴蝶的圖像特征主要包括顏色、紋理、形態(tài)和局部特征,和全局特征,特征提取較困難,所以選去了更適合對微小物體分類的yolov3模型,為了提高分類的精度,對模型進行了微調(diào)。
2.2訓練模型與過程
YOLOV3 用 dimension clusters 固定 anchor box 來選定邊界框。采用了多次檢測,在三個尺度不同的特征圖上分別設置了3個不同的anchor來進行檢測,特征圖尺度越大,anchor越小。為了提高精度,本實驗講anchor設置為5。神經(jīng)網(wǎng)絡會為每個邊界框預測 4 個坐標:tx、ty、tw、th。如果目標 cell 距離圖像左上角的邊距是(cx, cy),且它對應邊界框的寬和 高為 pw、ph,那么網(wǎng)絡的預測值會是:
在訓練期間,計算方差。如果預測坐標的 ground truth 是 t^*, 那相應的梯度就是 ground truth 值和預測值的差:t^*-t*。
YOLOv3用邏輯回歸預測每個邊界框的objectness score。如果當前預測的邊界框比之前的更好地與ground truth對象重合,那它的分 數(shù)就是1。如果當前的預測不是最好的,但它和ground truth對象重 合到了一定閾值以上,神經(jīng)網(wǎng)絡會忽視這個預測。我們使用的閾值是 0.5。系統(tǒng)只為每個ground truth對象分配一個邊界框。如果 先前的邊界框并未分配給相應對象,那它只是檢測錯了對象,而不會 對坐標或分類預測造成影響。在分類過程中未使用傳統(tǒng)的softmax對每個框進行分類,使用的是單獨的邏輯分類器,用二元交叉熵損失來預測蝴蝶類別。其主要原因是softmax使得咩哥框分配一個類別,而對于蝴蝶的數(shù)據(jù)集,目標可能有重疊的類別標簽,因此softmax不適用于多類標簽分類,且softmax可被多個logistic分類器代替,速度會加快,且準確率不會下降。
在預測方面采用的是跨尺度預測,yolov3提供了3種尺寸不一的邊界框,用以預測boxes,yolov3使用的特征提取模型通過FPN(feature pyramid network)網(wǎng)絡進行改變,(如圖所示)形成金字塔結構,最后得到一個3-d tensor(三維張量編碼)其中包含:bounding box(邊界框)的信息,邊界框中的信息已經(jīng)多少類的預測信息N*N*[3*(4+1+94)]94代表94類物體。
(FPN結構圖)
我們用同樣的網(wǎng)絡設計來預測邊界框的最終尺寸,這個過程其實也有助于分類預測,因為我們可以從早期圖像中篩選出更精細的特征。 在處理本次比賽中采用的聚類方法是K-Means,用以得到bounding box的先驗,選擇9個簇以及3個尺度。然后將這9個簇均勻的分布在這幾個尺度上,在特征提取上,我們使用的是Darknet-53, (Darknet-53是由yolov2,Darknet-19以及這Resnet,并在后面增加了一些shortcut connection)Darknet-53也可以實現(xiàn)每秒最高的測量浮點運算。這意味著網(wǎng)絡 結構可以更好地利用GPU,使其預測效率更高,速度更快。這主要是 因為ResNets的層數(shù)太多,效率不高。 下圖為Darknet-53的結構:
式(1)表示該網(wǎng)絡的多任務的損失函數(shù),即坐標預測、含object的box的confidence預測、不含object的box的confidence預測以及類別預測的和。
整個訓練的流程如圖所示,先對原始蝴蝶數(shù)據(jù)進行數(shù)據(jù)劃分,對數(shù)據(jù)中蝴蝶位置進行人工標注,數(shù)據(jù)進行預處理,增加圖像的數(shù)量,制作成訓練集,進入神經(jīng)網(wǎng)絡進行訓練,參數(shù)的調(diào)試,最后得到最優(yōu)模型。由于訓練集數(shù)據(jù)過于少,為了避免過擬合,采用了 YOLOv3 的 darknet53 進行 fine turn。把 Darknet53 作為特征提取器(Feature Extractor),訓練的時候維持其預訓練權重不變,不對其訓練,只對后面添加的 Detection_net21 進行訓練,所以整個網(wǎng)絡只訓練 21 層, 既提高了訓練效率又避免了過擬合。Detection_net21 網(wǎng)絡結構具體 如圖所示:
訓練過程:
本次實驗采用的是tensorflow模型,所需軟件python3.6及以上,tensorflow框架為1.3及以上。所需系統(tǒng)ubntu16.04.3所需軟件為cdua_8.0.61 cudnn5.1 。再訓練的過程中初使學習率為0.001每20000次訓練后遞減,迭代次數(shù)為80000次。輸出為94類蝴蝶。
最后使用初始化的參數(shù)對訓練圖像進行前向傳播操作,計算誤差,再使用梯度下降算法和反向傳播算法調(diào)整參數(shù),通過不斷的迭代使損失函數(shù)收斂到最小值,講此時訓練出的權值參數(shù)作為蝴蝶分類模型的最終權值參數(shù)。
2.3蝴蝶識別的評價指標
任務一:score=所有覆蓋率的平均值*100%。其中覆蓋率為(A交B)/(A并B), A與 B 分別為參賽隊伍輸出的檢測區(qū)域與大賽官方標注的真值區(qū)域。任務二:score=分類 正確的照片數(shù)/生態(tài)照總數(shù)*100%。R=TP/(TP+FN)
3.實驗結果與分析
任務一的結果為68.42 任務二的結果為70.52
4.結論
通過實驗與對比,我們發(fā)現(xiàn)yolov3在目標檢測與定位上效果更佳,另外本文提出的基于yolov3的深度學習模型,不僅僅可以對蝴蝶樣本進行分類與檢測,還可以用于其他生物等方向,而且yolov3的速度更快。
致謝:
我們特別感謝“第三屆數(shù)據(jù)挖掘大賽—國際首次蝴蝶識別大賽”給我們提供的數(shù)據(jù)集,同時我們也非常感謝yolov3的提出者,因為他們的工作才使得我們的自動識別定位系統(tǒng)得以實現(xiàn)。還要感謝成都理工大學提供的實驗室為我們在做實驗,訓練數(shù)據(jù)提供了保障。
參考文獻:
[1]Redmon J, Farhadi A. YOLOv3: An Incremental Improvement[J]. 2018.
[2]Ren S, He K, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[C]// International Conference on Neural Information Processing Systems. MIT Press, 2015:91-99.
[3]Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[J]. 2015:21-37.
[4]周愛明, 馬鵬鵬, 席天宇,等. 基于深度學習的蝴蝶科級標本圖像自動識別[J]. 昆蟲學報, 2017(11).
[5]Jia Y, Shelhamer E, Donahue J, et al. Caffe: Convolutional Architecture for Fast Feature Embedding[C]// Acm International Conference on Multimedia. ACM, 2014:675-678.
[6]Abadi M, Barham P, Chen J, et al. TensorFlow: a system for large-scale machine learning[J]. 2016.
[7]柴瑞敏, 曹振基. 基于Gabor小波與深度信念網(wǎng)絡的人臉識別方法[J]. 計算機應用, 2014, 34(9):2590-2594.
[8]李彥冬, 郝宗波, 雷航. 卷積神經(jīng)網(wǎng)絡研究綜述[J]. 計算機應用, 2016, 36(9):2508-2515.