王博鑫 李丹
摘 ?要:文章基于YOLOv4進(jìn)行了蛇類檢測。在谷歌的Open Image數(shù)據(jù)集中下載已標(biāo)注蛇類圖片,使用谷歌的Colab平臺進(jìn)行實驗,在Darknet框架下對網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。經(jīng)對比,YOLOv4的最終性能高于常見的onestage檢測算法,相近準(zhǔn)確度下速度快于twostage檢測算法。最終結(jié)果顯示,YOLOv4在識別蛇類圖像時準(zhǔn)確度達(dá)95.55%,平均檢測時間為37 ms,幀處理速率達(dá)27FPS(幀/秒)。該檢測速度和檢測精度滿足大部分背景下蛇類檢測的需求,使蛇類檢測與識別具備了可行性。
關(guān)鍵詞:深度學(xué)習(xí);卷積神經(jīng)網(wǎng)絡(luò);蛇類;YOLOv4;目標(biāo)檢測
中圖分類號:TP391.4 ? ? ? ?文獻(xiàn)標(biāo)識碼:A文章編號:2096-4706(2021)13-0034-03
Snake Image Recognition Based on YOLOv4
WANG Boxin, LI Dan
(School of Computer and Software, Jincheng College of Sichuan University, Chengdu ?611731, China)
Abstract: In this paper, snake detection is carried out based on YOLOv4. Download the marked snake pictures in Google,s Open Image dataset, conduct experiments using Google,s Colab platform, and train the network model under the Darknet framework. After comparison, the final performance of YOLOv4 is higher than the common onestage detection algorithm, and the speed of it is faster than the twotage detection algorithm in the context of similar accuracy. The final results show that the accuracy of YOLOv4 in identifying snake images reaches 95.55%, the average detection time is 37 ms, and the frame processing rate reaches 27 FPS (frames/second).The detection speed and accuracy meet the needs of snake detection in most backgrounds, which makes snake detection and recognition feasible.
Keywords: deep learning; convolutional neural network; snake; YOLOv4; object detection
0 ?引 ?言
蛇是生物種群中常見的爬行動物。我國的蛇類具備高度的種類豐富性和資源豐富性,是蛇類最多的國家之一。但蛇類傷人事件時常發(fā)生,尤其是在野外,所以需要有效的辦法檢測蛇類并預(yù)警?,F(xiàn)在,蛇類的檢測判別基本上依賴于人工來完成,但蛇的棲息環(huán)境并非固定,會因為各種原因變化,且蛇類喜陰涼潮濕,活動地點往往有雜物遮擋,因而檢測判別蛇需要花費許多時間成本以及人工成本,且有一定可能誤判漏判。近年來,深度學(xué)習(xí)作為機器學(xué)習(xí)領(lǐng)域的一個研究方向,進(jìn)步非常迅速?;谏疃葘W(xué)習(xí)的目標(biāo)檢測在諸多領(lǐng)域中都展現(xiàn)出非常好的效果,得到了廣泛應(yīng)用。截至目前,有關(guān)蛇類檢測識別的研究寥寥可數(shù),而深度學(xué)習(xí)中的目標(biāo)檢測是當(dāng)下非常熱門的計算機視覺應(yīng)用,利用它來進(jìn)行蛇類檢測研究非常有前景。
目標(biāo)檢測試圖找到圖像中需要檢測的目標(biāo)并給出它們的類別和位置,由于受到諸多干擾因素(例如不同類目標(biāo)整體外形上的差異、又或者是圖像拍攝時光線、物體覆蓋等要素)的影響,目標(biāo)檢測當(dāng)仁不讓地成為CV領(lǐng)域最有難度的問題之一。目標(biāo)檢測方法大致有兩類:一階檢測算法(onestage)和二階檢測算法(twostage)。twostage目標(biāo)檢測算法首先生成許多候選區(qū)域(即可能包含目標(biāo)的區(qū)域)當(dāng)作樣本,然后再對生成的各個候選區(qū)進(jìn)行檢測劃分,twostage的典型算法有R-CNN[1]、SPP-Net[2]等算法;其次是onestage算法,該類算法直接通過網(wǎng)絡(luò)進(jìn)行特征提取從而預(yù)測目標(biāo)的類別概率和位置坐標(biāo)值,但準(zhǔn)確度相對較低,速度相對更快。
YOLOv4是近年目標(biāo)檢測領(lǐng)域里綜合較好的算法。作為一個onestage算法,它能夠以很快的速度完成檢測同時保持一定的準(zhǔn)確度。簡而言之就是,速度快的沒它準(zhǔn),準(zhǔn)的又沒它快,因此它一出世便引人矚目,因為它能夠在實時檢測中大放異彩。它在原有的目標(biāo)檢測架構(gòu)的基礎(chǔ)上,使用近年來卷積神經(jīng)網(wǎng)絡(luò)領(lǐng)域中最好的優(yōu)化策略,在輸入端、骨干網(wǎng)絡(luò)、激活函數(shù)、損失函數(shù)等諸多方面都有了一定程度的改進(jìn),從而使得其在速度和精度上比起上一代的YOLOv3都獲得了一定程度的提升。
1 ?YOLOv4算法在蛇類檢測中的應(yīng)用
1.1 ?yolov4網(wǎng)絡(luò)框架
YOLOv4以CSPDarknet53特征提取網(wǎng)絡(luò)為主干,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。骨干網(wǎng)絡(luò)即主干特征提取網(wǎng)絡(luò)CSPDarknet53包含一個Darknet卷積塊和5個CSP(Cross Stage Partial)模塊,在各個CSP模塊前有3×3的卷積核,可以加強網(wǎng)絡(luò)的學(xué)習(xí)能力。使用CSPDarknet53結(jié)構(gòu),減少了很多參數(shù),提升了卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,既易于訓(xùn)練又保證了準(zhǔn)確性。
YOLOv4在主干中運用了Mish。為了更高的準(zhǔn)確度和更好的泛化性,應(yīng)當(dāng)使用平滑的激活函數(shù),Mish就是一個平滑的激活函數(shù)。如下式:
f(x)=x·tanh(?(x))
其中,?(x)=1n(1+e^x)。
YOLOv4采用路徑聚合網(wǎng)絡(luò)(PANet)[3]作為頸部、添加空間金字塔池(SPP),采用一系列最大池化,增加了網(wǎng)絡(luò)的感受野且分離并融合目標(biāo)在不同尺度的上下文特征;繼續(xù)使用YOLOv3中的檢測頭作為頭部整合通道,計算損失。YOLOv4采用了幾種數(shù)據(jù)增強方法如Mosaic、自對抗訓(xùn)練等。
Mosaic方法使用4張圖片并以縮放、翻轉(zhuǎn)、裁剪等方法操作后再組合,極大豐富了檢測數(shù)據(jù)集。使檢測目標(biāo)的背景更多樣,從而減少了對特定背景的依賴,具有更好的健壯性;SAT自對抗訓(xùn)練包括兩個階段:首先,神經(jīng)網(wǎng)絡(luò)修改輸入的原圖,然后使用最初的邊界框和類別標(biāo)簽與修改后的新圖像訓(xùn)練,對模型泛化能力的提升和防止過擬合都有幫助。同時采用標(biāo)簽平滑(Label Smoothing)、學(xué)習(xí)率余弦退火衰減(CosineAnnealing)等方法優(yōu)化網(wǎng)絡(luò)的訓(xùn)練過程[4]。
1.2 ?損失函數(shù)
以往的目標(biāo)檢測模型例如YOLOv3的損失函數(shù)MSE(均方誤差)損失函數(shù),是通過預(yù)測框和真實框的中心點坐標(biāo)和長寬信息設(shè)置的。均方誤差損失函數(shù)把檢測框的坐標(biāo)及長寬信息看作獨立變量,但這其實并不恰當(dāng),因為這些信息相互間是有關(guān)系的。解決方法是使用IoU及一系列改進(jìn)的損失函數(shù)來替代均方誤差損失函數(shù)。在YOLOv4網(wǎng)絡(luò)訓(xùn)練時使用了CIoU邊界框回歸損失函數(shù),它在之前IoU系列損失函數(shù)的基礎(chǔ)上增加了對長寬比的懲罰項,用來測量長寬比的一致性。經(jīng)過這個改進(jìn)后,CIoU考慮得更加全面,能夠獲得以下改進(jìn)式:
其中α是權(quán)重函數(shù),v用來度量長寬比的一致性[5]。
相較于傳統(tǒng)目標(biāo)檢測中使用的MSE損失,CIoU較為完美地解決了對檢測目標(biāo)尺寸大小敏感的缺點,將重心放在預(yù)測框與實際框的位置關(guān)系上,增強了目標(biāo)框回歸的穩(wěn)定性,不會出現(xiàn)其他邊界框回歸損失函數(shù)在訓(xùn)練中發(fā)散的問題。
2 ?數(shù)據(jù)采集
考慮到蛇類數(shù)量眾多且較難拍攝的情況,使用谷歌推出的Open ImageDataset。該數(shù)據(jù)集包含數(shù)百萬張已標(biāo)注圖片,擁有6 000個類別的標(biāo)簽,平均每張圖有8個標(biāo)簽,非常適合用在深度學(xué)習(xí)的訓(xùn)練中。下載其中蛇類的圖片,由于是已標(biāo)注的圖片,只需要將其下載整合即可。數(shù)據(jù)集共有1 425張圖像,訓(xùn)練集含1 000張圖像,測試集含425張圖像,分配比例約為7:3,如表1所示。
3 ?實驗與分析
3.1 ?模型訓(xùn)練
本實驗在谷歌Colab平臺上進(jìn)行實驗,在Darknet框架下訓(xùn)練。使用GPU以加速網(wǎng)絡(luò)訓(xùn)練,顯卡是Tesla V100-SXM2-16GB,CUDA版本11.2,最大學(xué)習(xí)率為0.001,且可以在中斷后繼續(xù)訓(xùn)練。圖像輸入大小為608×608,RGB三通道。因為圖片較少,隨機選取1 425張已標(biāo)注數(shù)據(jù)集中1 000張圖片,約為總數(shù)據(jù)集的80%用于訓(xùn)練,余下425張約為總數(shù)據(jù)集的30%用于驗證。
在訓(xùn)練過程中,損失值在0~800次迭代時震蕩較大,大體呈下降趨勢。800~1 850次迭代期間,損失值下降緩慢,逐漸從2左右降至1.2左右。1 850次迭代之后損失值一直在1.2附近小幅波動,迭代2 000次結(jié)束訓(xùn)練時損失值穩(wěn)定在1.2。
3.2 ?訓(xùn)練結(jié)果
實驗中平均每張圖像檢測耗時0.037 1 s,換算為幀數(shù)即檢測速率可達(dá)27 FPS,能夠滿足實時識別蛇類圖像。由實驗可知,整體準(zhǔn)確率可達(dá)95.55%,保持了較高的準(zhǔn)確率,表明網(wǎng)絡(luò)預(yù)測的結(jié)果具備較高可靠性。數(shù)據(jù)集中因部分光線以及雜物遮擋,對準(zhǔn)確率存在一定影響。訓(xùn)練集1 000張,使用實驗平臺將測試圖像輸入網(wǎng)絡(luò)模型進(jìn)行測試,測試效果如圖2所示。
在同樣的數(shù)據(jù)集、設(shè)備和同樣參數(shù)設(shè)定的條件下,與采用YOLOv3[6]和Faster R-CNN[7]網(wǎng)絡(luò)檢測算法對比,如表2所示。
YOLOv4檢測算法的準(zhǔn)確度與二階(twostage)算法Faster R-CNN接近,卻相比其FPS快了11幀/秒。相比于同為一階(onestage)算法的YOLOv3,準(zhǔn)確度提高了2.14%,F(xiàn)PS提升了4幀/ 秒。
4 ?應(yīng)用——蛇類檢測預(yù)警系統(tǒng)
蛇類的檢測識別與預(yù)警對人類群居地區(qū)的安全至關(guān)重要,特別是在部分蛇類常出沒的地區(qū)。近年來,隨著科考人員野外考查的進(jìn)一步開展,我國蛇的種類和數(shù)量不斷增多,在部分地區(qū)經(jīng)常發(fā)生蛇類攻擊人類甚至咬人事件。出于以人為本的理念,不論是毒蛇還是非毒蛇,都建議在蛇類常出沒的高危地區(qū)配置蛇類檢測預(yù)警系統(tǒng)。蛇類喜陰涼、潮濕,行動軌跡難以預(yù)測,容易對人民生命財產(chǎn)安全造成威脅。鑒于由專業(yè)人員進(jìn)行人工檢測的難度大、成本高,且無法安排專業(yè)人員在各個蛇類易出沒的人類居住地區(qū)隨時隨地進(jìn)行人工檢測,故設(shè)計該蛇類檢測模型以應(yīng)用于蛇類檢測識別預(yù)警系統(tǒng)。此模型能夠很好地應(yīng)對復(fù)雜的場景,并且相較于人工檢測,成本大幅降低且可行性大幅提高。如上圖2,在色系相近的背景下也能較好地檢測識別出蛇類。不過被遮擋目標(biāo)的檢測準(zhǔn)確度還有待提升,由于數(shù)據(jù)集較小,數(shù)據(jù)豐富程度也有待增強。
5 ?結(jié) ?論
本文針對國內(nèi)蛇類檢測識別缺失的問題進(jìn)行研究,提出了基于YOLOv4算法的輕量級蛇類圖像檢測識別模型,模型適用范圍囊括了大部分常見蛇類,能夠很好地解決許多場景下蛇類圖像的檢測識別問題?;赮OLOv4目標(biāo)檢測網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測,建立數(shù)據(jù)集并增強數(shù)據(jù),訓(xùn)練模型,提高了模型的準(zhǔn)確度。本文方法比傳統(tǒng)圖像處理方法和過去的蛇類深度學(xué)習(xí)目標(biāo)檢測算法性能更佳,能夠做到實時檢測。但因為已標(biāo)注蛇類圖像數(shù)據(jù)集較少,有一定的局限性。希望后續(xù)能夠增加數(shù)據(jù)集的數(shù)量,相信經(jīng)過更多的訓(xùn)練后,模型的各方面都會有提升。后續(xù)也會繼續(xù)收集數(shù)據(jù)集,對模型進(jìn)行優(yōu)化和完善。
參考文獻(xiàn):
[1] GIRSHICK R,DONAHUE J,DARRELL T,et al. Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation [C]//2014 IEEE Conference on Computer Vision and Pattern Recognition.Columbus:IEEE,2014:580-587.
[2] HE K,ZHANG X Y,REN S Q ,et al. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition [J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2015,37(9):1904-1916.
[3] MEI Y Q,F(xiàn)AN Y C,ZHANG Y L,et al. Pyramid Attention Networks for Image Restoration [EB/OL].[2020-04-28].https://www. researchgate.net/publication/341040607.
[4] BOCHKOVSKIY A,WANG C Y,LIAO H Y M. YOLOv4:Optimal Speed and Accuracy of Object Detection [J/OL].(2020-04-23).arXiv:2004.10934 [cs.CV].https://arxiv.org/abs/2004.10934.
[5] ZHENG Z,WANG P,LIU W,et.al. DongweiRen.Distance-IoULoss:Faster and Better Learning for Bounding Box Regression [C]//Proceedings of the AAAI Conference on Artificial Intelligence.2020,34(7):12993-13000.
[6] REDMON J,F(xiàn)ARHADI A. YOLOv3: An Incremental Improvement [J/OL].(2018-04-08).arXiv:1804.02767 [cs.CV].https://arxiv.org/abs/1804.02767.
[7] REN S,HE K,GIRSHICK R,et al. Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks [J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(6):1137-1149.
作者簡介:王博鑫(2000.04—),男,漢族,四川西昌人,本科在讀,研究方向:軟件工程。