安徽理工大學電氣與信息工程學院 楊高坤
目前,隨著目標檢測算法取得的重大突破,目標檢測技術已經代替了很多枯燥簡單的勞動,并且取得了很好的效果。其中主要分為基于備選框并對備選框進行判斷的雙階段的目標檢測方法,還有一種是把輸出框和分類作為一個回歸問題的單階段目標檢測方法,總結了單階段法目標檢測的各種特點及優(yōu)缺點。最后針對不同的算法和改進的方法進行總結。
Pierre S.等人提出了早期的單階段目標檢測模型Overfeat,該模型將圖像分類、定位、檢測三個任務放到一個框架中。由于Overfeat框架需要大量的已標記的樣本,并且檢測的精度不是很高,所以Joseph Redmon等人提出了YOLO框架,YOLO框架的缺點也比較明顯,比如小目標難以檢測、召回率低、精確性低等等問題,所有又有了后面的YOLOv2、YOLOv3、YOLOv4、SSD等其它的框架。
圖1 YOLO網絡結構
YOLO將物體檢測作為回歸問題求解。
YOLO模型采用回歸分析的方法計算出多個滑動窗口的位置和置信度。YOLO網絡結構如圖1所示。
YOLO的優(yōu)點:(1)對比其他的雙階段法目標檢測,YOLO的檢測速度相當的快。(2)不同于其他的目標檢測算法,YOLO的輸入是一整張圖片,在檢測時很好的利用了整體的信息,不容易在背景上預測出錯誤的物體信息。(3)通用性強,不僅可以檢測動物、植物等,對于藝術品也一樣的適用。
YOLO的缺點:(1)在進行卷積與池化的過程中,特征丟失比較嚴重就會導致精度下降。(2)因為一個grid cell只能預測2個物體,因此對小物體的檢測效果不好。
YOLOv2的出現彌補了YOLOv1的一些缺點,在保持檢測速度的同時提高檢測的精度和定位準確度,改進如下:
(1)批量規(guī)范化:對數據進行預處理,對每一層數據進行加工。
(2)高分辨率分類器:第一步利用Image net訓練集進行高分辨率的預訓練,而且這種方法對于精度的提高是很明顯的。
(3)采用了新網絡:YOLOv2包含了19個卷積層和5個最大池化層。
(4)維度聚類:還是針對錨定框,發(fā)現錨定框的個數為5時IOU的匹配度最高。
(5)多尺度預測:通過不同的分辨率圖片來訓練提高網絡的適應性。
相對于YOLO算法,SSD有兩點改進:
圖2 SSD框架與YOLO框架對比圖
圖3 YOLOv3網絡結構圖
圖4 YOLOv4網絡結構圖
(1)SSD提取了不同尺度的特征圖來做檢測,利用特征圖的大小不同來提取大小不一的物體,這種方式可以可以有效的解決小物體檢測不出來的問題。
(2)該算法采用了不同尺度和長寬比的先驗框,通過這些長寬比不同的先驗框可以有效地解決檢測物體的大小和形狀不規(guī)則的問題。SSD框架與YOLO框架對比如圖2所示。
該算法的缺點總結:(1)需要手動設置先驗框的最大最小值和寬高比,這樣導致調試的時候會遇到一些麻煩;(2)對于小目標的召回率不是很高,存在提取不充分的原因。
YOLOv3以YOLOv1和YOLOv2為基礎進行了一些改進,特別是針對小目標檢測加強了識別能力。
(1)調整了網絡結構:Darknet-53在網絡中加入了殘差模塊,解決了網絡的梯度問題。
(2)利用三個不同的特征圖進行目標檢測,而且這三層特征圖來自不同的卷積層的輸出。
(3)使用Kmeans聚類的方法來決定錨定框的尺寸大?。簽槊糠N下采樣尺寸設定3種先驗框,這樣一共就有九種尺寸的先驗框,然后就會選擇合適的先驗框選擇位置。
(4)選擇了新的對象分類,由原來的softmax換成了logistic。YOLOv3的優(yōu)點在于:通過對YOLOv3算法的改進,主要提升了對小物體的檢測精度,同時它的檢測速度并沒有因此降低。
YOLOv4與YOLOv3的差別我們可以直接從圖3與圖4所示中看出差異。
(1)主干網絡的改進:將原來的Darknet53改為CSPDarknet53,在網絡結構中加入了CSP結構,而且激活函數換成了Mish激活函數。
(2)對特征提取過程進行了加強:添加了SPP,PANet結構。
(3)在數據預處理階段加入Mosaic方法。
(4)在損失函數中做了改進使用了CIOU作為回歸Loss。
根據僅對比YOLOv3和YOLOv4,在COCO數據集上,同樣的FPS等于83左右時,YOLOv4的AP是43,而YOLOv3是33,直接上漲了10個百分點。
基于SSD算法小目標行人檢測的改進方法:
(1)改進SSD網絡結構
圖5 經過改進的SSD結構圖
改進的SSD是將全連接層替換為卷積層后的VGG16,然后利用新添加的卷積層組成多尺度特征層,稱之為SSD Layer。經過改進的SSD結構融如圖5所示。
(2)反卷積與特征融合
反卷積和融合操作中所有批歸一BN層的作用都是增強網絡的魯棒性,防止網絡中權重偏置溢出。
Tiny YOLOv3是YOLOV3的簡化版本,卷積層數大幅減少,模型結構簡單,不需占用大量內存,是目前最快的目標實時檢測算法,但檢測精度較低,尤其是在行人等小目標檢測。為了提高精度,我們可以通過以下的方法來改進算法:
(1)通過構造反殘差塊來增加網絡的深度;
(2)網絡模型的改進:改進的網絡由12個反殘差塊構成,通過反殘差塊,擴張?zhí)卣鲌D通道提取高維特征,再進行通道降維,得
到特征圖。在原網絡兩尺度預測目標的基礎上增加一上采樣層upsample,形成52×52、26×26、13×13三尺度預測,進一步提高目標檢測準確率。
(3)改進損失函數:根據實際情況,可以通過GIOU代替IOU來提升損失函數的位置誤差。
由于現代社會的快速發(fā)展,對于圖像處理的要求越來越高,目標檢測的方法也越來越多,加上對深度學習的不斷探索,目標檢測的方法也發(fā)生了質變,本綜述主要講述了單階段法目標檢測的方法。隨著新的框架被不斷的提出來,面對具體問題的算法框架也越來多,這時候我們如何選擇合適的算法框架變得尤為重要。
截至到目前,Ultralytics公司開源了YOLOv5,離上一次YOLOv4發(fā)布不到50天。而且這一次的YOLOv5是完全基于PyTorch實現的,這一次的YOLOv5更加的小巧,更加的快,可以達到140幀/s。YOLOv5的出現,帶給了目標檢測的一大進步,通過算法的不斷改進和成熟,目標檢測一定會有巨大的價值實現。