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