劉慶
摘要:隨著人工智能的發(fā)展,其中的深度學(xué)習(xí)極大地推動了計算機(jī)視覺的發(fā)展。? 目標(biāo)檢測作為計算機(jī)視覺中的一個重要分支,在街道場景檢測以及城市交通管控中也有著重要作用。文章中采用yolov5s目標(biāo)檢測算法,實現(xiàn)了街道場景中目標(biāo)的檢測,首先分析了目標(biāo)檢測算法的類型以及文章中所用到目標(biāo)檢測算法的發(fā)展和框架。通過yolov5s對標(biāo)注好了的數(shù)據(jù)集進(jìn)行訓(xùn)練,然后利用yolov5s目標(biāo)檢測算法進(jìn)行檢測,從實驗結(jié)果可以看出yolov5s對小目標(biāo)檢測以及多目標(biāo)檢測有比較好的效果,并且準(zhǔn)確率較高,速度較快。
關(guān)鍵詞:深度學(xué)習(xí);目標(biāo)檢測;yolov5s;街道場景檢測
中圖分類號:TP311? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)09-0096-03
1 引言
近幾年,隨著計算機(jī)視覺的迅速發(fā)展,目標(biāo)檢測作為計算機(jī)視覺中的一個基本問題,也得到了很大的發(fā)展,已經(jīng)應(yīng)用到了智能交通、智慧醫(yī)療等領(lǐng)域,特別是在疫情期間隨處可見的基于目標(biāo)檢測的紅外熱像儀,并且在日常的超市自助付款中也有用到。目標(biāo)檢測主要任務(wù)是在圖像或圖像序列中對目標(biāo)進(jìn)行精確分類和定位[1]。分類這一部分的任務(wù)是在獲取輸入圖片時,判斷一下圖片中是否存在我們想要檢測的物體,如果存在,那么就會輸出一系列帶有置信度分?jǐn)?shù)的標(biāo)簽,主要是用來表示我們想要檢測的物體在輸入圖像中的概率。定位這一部分的任務(wù)是確定輸入圖片中我們想要檢測的物體的位置以及所占范圍的大小,并且輸出目標(biāo)物體的外邊框范圍。目標(biāo)檢測算法分為兩大類,一類是傳統(tǒng)的目標(biāo)檢測算法,另一類是基于深度學(xué)習(xí)的目標(biāo)檢測算法。傳統(tǒng)的目標(biāo)檢測算法存在檢測難度大,不準(zhǔn)確等特性,基于深度學(xué)習(xí)目標(biāo)檢測算法具有準(zhǔn)確率高、速度快等特性。所以近年來,基于深度學(xué)習(xí)的目標(biāo)檢測算法往往應(yīng)用范圍較大一些。并且基于深度學(xué)習(xí)的目標(biāo)檢測算法分為兩大類,一種是單階段的目標(biāo)檢測算法,另一種是雙階段的目標(biāo)檢測算法。單階段的目標(biāo)檢測算法檢測速度較快,這是它最大的一個優(yōu)點,雙階段目標(biāo)檢測算法相對來說檢測準(zhǔn)確率較高,兩種方法各有利弊,所以要在不同的應(yīng)用中選擇合適的方法實現(xiàn)目標(biāo)檢測。yolov5目標(biāo)檢測算法憑借其優(yōu)秀的檢測速度和精度,已經(jīng)廣泛應(yīng)用于醫(yī)學(xué)圖像、行人檢測、車輛檢測等實際應(yīng)用中[2]。文章中將詳細(xì)介紹利用單階段的目標(biāo)檢測算法yolov5s實現(xiàn)街道場景的檢測,因為是對小目標(biāo)和多目標(biāo)進(jìn)行檢測,并且yolov5s實現(xiàn)的街道場景檢測效果基本滿足應(yīng)用需求。
2 傳統(tǒng)目標(biāo)檢測算法與基于深度學(xué)習(xí)的目標(biāo)檢測算法
2.1 傳統(tǒng)目標(biāo)檢測算法
目標(biāo)檢測的任務(wù)就是把存在的目標(biāo)從圖片中找到并識別出來。傳統(tǒng)目標(biāo)檢測算法代表有V-J檢測器、HOG+SVM方法以及DMP方法。V-J檢測器用于人臉檢測,HOG+SVM方法用于行人檢測,而DMP方法更是傳統(tǒng)目標(biāo)檢測算法的巔峰之作,它采用了“分而治之”的檢測思想,并且為了加快檢測速度,設(shè)計了將檢測模型“編譯”成一個更快的模型,實現(xiàn)了級聯(lián)結(jié)構(gòu),在不犧牲任何精度的情況下實現(xiàn)了超過十倍的加速度,雖然目前的對象檢測器在檢測精度上遠(yuǎn)遠(yuǎn)超過了DMP,但是其中也有很多值得我們學(xué)習(xí)的地方。傳統(tǒng)的目標(biāo)檢測算法可以概括為三個部分,分別是區(qū)域選擇、特征提取、分類器。區(qū)域選擇部分主要就是用來對檢測的目標(biāo)位置進(jìn)行定位,由于被檢測的目標(biāo)可能會出現(xiàn)在圖像中的任何一個位置,并且被檢測的目標(biāo)的長寬比例、大小也不能輕易確定。所以采取的是利用滑動窗口機(jī)制對整幅圖像進(jìn)行遍歷,這樣就需要設(shè)置不同的尺度,不同的長寬比等,所以這部分存在很多缺點,例如時間復(fù)雜度過高,產(chǎn)生的冗余窗口相對較多等。這些缺點也會對后面的特征提取與分類這兩部分產(chǎn)生不好的影響。并且這種機(jī)制對于長寬比浮動較大的多類別目標(biāo)檢測效果不是很好,因為滑動窗口遍歷也不一定能得到很好的區(qū)域。特征提取過程中,由于目標(biāo)的形態(tài)多樣以及光照因素的影響等等,導(dǎo)致人工手動設(shè)置特征的方法存在魯棒性不好、檢測精度低等問題。這兩大缺點使得傳統(tǒng)的目標(biāo)檢測算法使用范圍很小,目前目標(biāo)檢測問題都會采用深度學(xué)習(xí)相關(guān)的目標(biāo)檢測算法。
2.2 基于深度學(xué)習(xí)的目標(biāo)檢測算法
基于深度學(xué)習(xí)的目標(biāo)檢測算法分為兩大類,一類是單階段目標(biāo)檢測算法,另一類是雙階段目標(biāo)檢測算法。單階段的目標(biāo)檢測算法在實現(xiàn)目標(biāo)檢測過程中不會產(chǎn)生候選框,而是直接把目標(biāo)邊框的定位問題轉(zhuǎn)化為回歸問題來處理,單階段的目標(biāo)檢測算法是以YOLO、SDD、RetinaNet等為代表的基于回歸分析的檢測算法[3]。單階段目標(biāo)檢測算法只需一次提取特征就可以實現(xiàn)目標(biāo)檢測,因此優(yōu)點是檢測速度快。雙階段目標(biāo)檢測算法是將檢測過程分為兩個階段,第一個階段是利用某些算法生成一系列的候選框,作為樣本,第二個階段是通過卷積神經(jīng)網(wǎng)絡(luò)對第一個階段生成的樣本進(jìn)行分類,這種類型的目標(biāo)檢測的代表算法有RCNN、SSPnet等。由于這兩種目標(biāo)檢測算法的差異,前者在檢測速度上占優(yōu),后者在檢測的準(zhǔn)確率和定位精度上占優(yōu)。近年來,yolov算法發(fā)展迅速,不僅實現(xiàn)了檢測速度快,檢測的精度也在逐步提高。所以文章中采用yolov5s算法實現(xiàn)街道場景檢測,主要是對小目標(biāo)以及多目標(biāo)進(jìn)行檢測,采用yolov5s是因為其網(wǎng)絡(luò)模型較為簡單、檢測速度快,準(zhǔn)確率也能滿足基本要求。
3 yolov算法的發(fā)展歷程
在yolov提出之前,R-CNN系列的算法在目標(biāo)檢測領(lǐng)域被廣泛應(yīng)用,R-CNN檢測算法最大的一個優(yōu)點是檢測精度高,但是它是一種雙階段的目標(biāo)檢測算法,這使得它的檢測速度滿足不了實時性這一個要求,因此設(shè)計一種檢測速度更快的目標(biāo)檢測算法成為目標(biāo)檢測領(lǐng)域的主要任務(wù)。由此提出了yolov1算法,yolov1的主干網(wǎng)絡(luò)是VGG-16,它是一種單階段的目標(biāo)檢測算法,核心思想就是將目標(biāo)檢測轉(zhuǎn)化為一個回歸問題,利用整張圖片作為網(wǎng)絡(luò)的輸入,經(jīng)過一個神經(jīng)網(wǎng)絡(luò),得到邊界框的位置以及其所屬的類別。yolov1算法檢測速度十分快,實時檢測效果也比較好,遷移能力強,可以應(yīng)用到其他新領(lǐng)域,但是對于密集目標(biāo)和小目標(biāo)檢測效果不太好,并且沒有采用Faster RCNN的錨框機(jī)制,增加了訓(xùn)練難度。因此推出了yolov2,yolov2是yolov1的升級版。引入了BN層,以及anchor機(jī)制,移除了全連接層,丟棄pooling層,防止信息丟失[4]。并且提出了一個新的網(wǎng)絡(luò)Darknet-19,提高了分類精度,并且該網(wǎng)絡(luò)適應(yīng)多種尺寸圖片的輸入。yolov2雖然解決了模型訓(xùn)練困難,泛化能力差等問題,但是使用了預(yù)訓(xùn)練,遷移比較難,小目標(biāo)召回率不高,密集目標(biāo)檢測效果差。繼而提出了yolov3,yolov3引進(jìn)了多尺度預(yù)測,采用了多標(biāo)簽分類,使用了Darknet-53網(wǎng)絡(luò),分類器也拋棄了原先使用的Softmax分類器,并且分類損失采用二分類交叉損失熵,這使得yolov3的目標(biāo)檢測效果比yolov2更好。并且yolov3借用了殘差網(wǎng)絡(luò),進(jìn)行了多尺度檢測,跨尺度特征融合,使得對小目標(biāo)檢測的精度進(jìn)一步得到了提升。但是由于yolov3的模型較復(fù)雜,所以對于中,大型目標(biāo)檢測沒有很好的效果。后來又推出了yolov4,yolov4采用了CSPDarknet53網(wǎng)絡(luò)結(jié)構(gòu),使用了Mosaic數(shù)據(jù)增強,采用Mish激活函數(shù)等等。這使得其在檢測速度和檢測精度之間取得了權(quán)衡,但是檢測精度也有待提高。后來推出了yolov5,yolov5采用了CSPDarknet53+Focus網(wǎng)絡(luò)結(jié)構(gòu),增加了正樣本,加快了訓(xùn)練速度,實現(xiàn)了自適應(yīng)圖片縮放等等,使得yolov5模型小,檢測速度高,靈活性高。雖然無論在速度和精度上yolov5已經(jīng)算比較好的一種目標(biāo)檢測算法,但性能依舊有待提高。
4 yolov5s的網(wǎng)絡(luò)結(jié)構(gòu)
本文采用的是yolov5s的網(wǎng)絡(luò)模型,yolov5目標(biāo)檢測算法包括yolov5s、yolov5m、yolov5l、yolov5x四個網(wǎng)絡(luò)模型。網(wǎng)絡(luò)模型復(fù)雜程度以及網(wǎng)絡(luò)模型的深度和寬度依次遞增,網(wǎng)絡(luò)的特征提取能力也逐漸增強,目標(biāo)檢測的精度也是隨著網(wǎng)絡(luò)模型的復(fù)雜程度不斷提高,但是目標(biāo)檢測所用的時間也逐漸增加的。yolov5s是yolov5系列中深度最小、特征圖寬度最小的網(wǎng)絡(luò),實現(xiàn)起來較為簡單。文中采用這個網(wǎng)絡(luò)模型使得街道場景檢測速度比較快且檢測精度滿足基本需求。 yolov5s網(wǎng)絡(luò)結(jié)構(gòu)包括四個部分,分別是輸入端、Backbone、Neck、輸出端,如圖1所示。
yolov5s的主要組成部分
(1)輸入端
yolov5s的輸入端通過對圖片進(jìn)行翻轉(zhuǎn)、縮放、色域變化等等操作,并且把原數(shù)據(jù)和增強數(shù)據(jù)拼接傳入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)[5],采用了自適應(yīng)錨框計算,以獲取合適的錨框,也采用了自適應(yīng)圖片縮放,減少了模型的計算量,也提高了對小目標(biāo)的檢測效果。
(2)Backbone
這部分融合了其他檢測算法中的一些新思路,主要包括Focus結(jié)構(gòu)、CSP結(jié)構(gòu)以及SPP模塊。Focus模塊的作用就是圖片進(jìn)入Backbone前,對圖片進(jìn)行切片操作[6],切片操作是一個非常重要的部分,以yolov5s模型為例,切片過程如下:首先將608*608*3的原始圖片輸入Focus結(jié)構(gòu),進(jìn)行切片操作之后,會變成304*304*12的特征圖,然后把特征圖經(jīng)過一次32個卷積核的卷積操作,就會變成304*304*32的特征圖,這就是切片操作的過程。切片之后進(jìn)行卷積操作,就會得到二倍下采樣特征圖,這個特征圖是沒有信息丟失的。圖片經(jīng)過Focus模塊之后,最直觀的就是起到了下采樣的作用,但是和常用的卷積下采樣不一樣,計算量和參數(shù)量更加復(fù)雜,經(jīng)過改進(jìn)后,參數(shù)量變少了,達(dá)到了提速的效果。yolov5s的網(wǎng)絡(luò)模型設(shè)置了兩種新的CSP結(jié)構(gòu),主干網(wǎng)絡(luò)采用CSP1_1結(jié)構(gòu)和CSP1_3結(jié)構(gòu),頸部采用CSP2_1結(jié)構(gòu)[7]。CSP結(jié)構(gòu)的實現(xiàn)減少了計算瓶頸,減少了內(nèi)存消耗。SPP模塊借鑒了一種空間金字塔的思想,通過SPP模塊實現(xiàn)了局部特征和全部特征,極大地豐富了特征圖的表達(dá)能力。這對于yolov5實現(xiàn)復(fù)雜的多目標(biāo)檢測十分有利,并且檢測精度也有了很大的提升。
(3)Neck
Neck是目標(biāo)檢測網(wǎng)絡(luò)在Backbone與最后的Head輸出層之間插入的一層,yolov5s中的Neck結(jié)構(gòu)采用了FPN+PAN結(jié)構(gòu)。yolov4中的Neck部分也采用了和yolov5一樣的結(jié)構(gòu),但是yolov4中的Neck部分全都是普通的卷積操作,但是在yolov5中的Neck結(jié)構(gòu)中,采用了CSPnet設(shè)計的CSP2結(jié)構(gòu),這種結(jié)構(gòu)對網(wǎng)絡(luò)特征融合的能力的提高十分有利。FPN采用向下采樣,PAN采用向上采樣,將高層的特征信息通過上采樣的方式進(jìn)行傳遞融合,就會得到進(jìn)行預(yù)測的特征圖,這種方式進(jìn)一步提高了特征提取能力[8]。從而將獲得的更有效的信息傳輸?shù)筋A(yù)測層。
(4)輸出端
輸出端包括了Bounding box損失函數(shù)和nms非極大值抑制。yolov5s中采用GIOU_LOSS作為Bounding box的損失函數(shù),在目標(biāo)檢測的后處理過程中,針對很多目標(biāo)框的篩選,通常需要進(jìn)行nms操作。采用nms算法把GIOU_LOSS貢獻(xiàn)值不是最大的預(yù)測結(jié)果都去除,然后將概率最大的預(yù)測結(jié)果輸出,生成邊界框并且預(yù)測其所屬類別。
5 實驗結(jié)果及分析
本次實驗主要環(huán)境有window10、pycharm、pytorch等等,數(shù)據(jù)集采用的是coco數(shù)據(jù)集。主要是利用yolov5s目標(biāo)檢測算法實現(xiàn)街道場景檢測,實現(xiàn)的效果圖如下。
從實驗結(jié)果可以看出,利用yolov5s目標(biāo)檢測算法對街道場景進(jìn)行檢測,是因為其網(wǎng)絡(luò)模型小,使得檢測速度比較快,并且檢測的準(zhǔn)確性也能滿足基本需求。圖中有人和車以及石柱這些目標(biāo),可以看出yolov5s目標(biāo)檢測算法在小目標(biāo)檢測和多目標(biāo)檢測中有著比較好的檢測效果。如果采用yolov5m、yolov5l或者yolov5x作為目標(biāo)檢測算法,檢測的準(zhǔn)確性會逐步提高,檢測所用的時間也會逐漸增加。文章采用yolov5s目標(biāo)檢測算法主要是為了追求檢測速度快,并且準(zhǔn)確性也基本滿足需求。
參考文獻(xiàn):
[1] 董文軒,梁宏濤,劉國柱,等.深度卷積應(yīng)用于目標(biāo)檢測算法綜述[J/OL].計算機(jī)科學(xué)與探索:1-20[2022-02-24].http://kns.cnki.net/kcms/detail/11.5602.TP.20220129.1108.004.html.
[2] 黃振龍,吳林煌.基于Yolov5s和Dlib的視頻人臉識別[J].電腦知識與技術(shù),2021,17(32):94-96.
[3] 許德剛,王露,李凡.深度學(xué)習(xí)的典型目標(biāo)檢測算法研究綜述[J].計算機(jī)工程與應(yīng)用,2021,57(8):10-25.
[4] 李成.基于改進(jìn)YOLOv5的小目標(biāo)檢測算法研究[J].長江信息通信,2021,34(9):30-33.
[5] 楊曉玲,蔡雅雯.基于yolov5s的行人檢測系統(tǒng)及實現(xiàn)[J].電腦與信息技術(shù),2022,30(1):28-30.
[6] 劉彥清.基于YOLO系列的目標(biāo)檢測改進(jìn)算法[D].長春:吉林大學(xué),2021.
[7]張錦,屈佩琪,孫程,等.基于改進(jìn)YOLOv5的安全帽佩戴檢測方法[J/OL].計算機(jī)應(yīng)用:1-11[2022-02-24].http://kns.cnki.net/kcms/detail/51.1307.TP.20210908.1727.002.html.
[8] 彭雅坤,曹伊寧,劉曉群.基于YOLOv5s的滑雪人員檢測研究[J].長江信息通信,2021,34(8):24-26.
【通聯(lián)編輯:梁書】