劉慶


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