作者:Juan R. Terven 、Diana M. Cordova-Esparaza
摘要:YOLO已經成為機器人、無人駕駛汽車和視頻監(jiān)控應用的核心實時物體檢測系統(tǒng)。我們對YOLO的演變進行了全面的分析,研究了從最初的YOLO到YOLOv8每次迭代的創(chuàng)新和貢獻。我們首先描述了標準指標和后處理;然后,我們討論了每個模型的網絡結構和訓練技巧的主要變化。最后,我們總結了YOLO發(fā)展的基本經驗,并提供了對其未來的看法,強調了提高實時物體檢測系統(tǒng)的潛在研究方向。
1. 簡介
實時物體檢測已經成為眾多應用中的一個重要組成部分,橫跨自主車輛、機器人、視頻監(jiān)控和增強現(xiàn)實等各個領域。在各種物體檢測算法中,YOLO(You?Only?Look?Once)框架因其在速度和準確性方面的顯著平衡而脫穎而出,能夠快速、可靠地識別圖像中的物體。自成立以來,YOLO系列已經經歷了多次迭代,每次都是在以前的版本基礎上解決局限性并提高性能(見圖1)。本文旨在全面回顧YOLO框架的發(fā)展,從最初的YOLOv1到最新的YOLOv8,闡釋每個版本的關鍵創(chuàng)新、差異和改進。
本文首先探討了原始YOLO模型的基本概念和架構,這為YOLO系列的后續(xù)進展奠定了基礎。隨后,我們深入探討了從YOLOv2到YOLOv8每個版本中引入的改進和提高。這些改進包括各個方面,如網絡設計、損失函數(shù)的修改、錨框的調整和輸入分辨率的擴展。通過研究這些發(fā)展,對YOLO框架的演變及其對物體檢測的影響有一個整體的理解。
除了討論每個YOLO版本的具體進展外,本文還強調了在整個框架的發(fā)展過程中出現(xiàn)的速度和準確性之間的權衡問題。這強調了在選擇最合適的YOLO模型時,考慮具體應用的背景和要求的重要性。最后,我們設想了YOLO框架的未來方向,觸及了進一步研究和發(fā)展的潛在途徑,這將塑造實時物體檢測系統(tǒng)的持續(xù)進展。
2.?YOLO在不同領域的應用
YOLO的實時物體檢測能力在自主車輛系統(tǒng)中是非常寶貴的,能夠快速識別和跟蹤各種物體,如車輛、行人[1, 2]、自行車和其他障礙物[3, 4, 5, 6]。這些能力已被應用于許多領域,包括用于監(jiān)控的視頻序列中的動作識別[7][8]、體育分析[9]和人機交互[10]。
YOLO模型已被用于農業(yè),以檢測和分類作物[11,?12]、害蟲和疾病[13],協(xié)助精準農業(yè)技術和自動化耕作過程。它們還被用于生物識別、安全和面部識別系統(tǒng)中的面部檢測任務[14, 15]。
在醫(yī)學領域,YOLO已被用于癌癥檢測[16,?17]、皮膚分割[18]和藥片識別[19],從而提高診斷的準確性和更有效的治療過程。在遙感領域,它已被用于衛(wèi)星和航空圖像中的物體檢測和分類,有助于土地利用繪圖、城市規(guī)劃和環(huán)境監(jiān)測[20, 21,?22,?23]。
安防系統(tǒng)已經將YOLO模型整合到視頻資料的實時監(jiān)控和分析中,允許快速檢測可疑活動[24]、社會距離和臉部面具檢測[25]。這些模型還被應用于表面檢測,以檢測缺陷和異常,加強制造和生產過程的質量控制[26, 27,?28]。
在交通應用中,YOLO模型已被用于車牌檢測[29]和交通標志識別[30]等任務,促進了智能交通系統(tǒng)和交通管理解決方案的發(fā)展。它們已被用于野生動物檢測和監(jiān)測,以識別瀕危物種,用于生物多樣性保護和生態(tài)系統(tǒng)管理[31]。最后,YOLO已被廣泛用于機器人應用[32, 33]和無人機的物體檢測[34,?35]。
3. 物體檢測指標和非極大值抑制(NMS)
平均精度(AP),傳統(tǒng)上稱為平均精度(mAP),是評價物體檢測模型性能的常用指標。它測量所有類別的平均精度,提供一個單一的數(shù)值來比較不同的模型。COCO數(shù)據集沒有對AP和AP進行區(qū)分。在本文的其余部分,我們將把這個指標稱為AP。
在YOLOv1和YOLOv2中,用于訓練和基準測試的數(shù)據集是PASCAL?VOC?2007和VOC?2012[36]。然而,從YOLOv3開始,使用的數(shù)據集是微軟COCO(Common?Objects?in?Context)[37]。對于這些數(shù)據集,AP的計算方法是不同的。以下各節(jié)將討論AP背后的原理,并解釋它是如何計算的。
3.1?AP
AP指標是基于精度-召回指標,處理多個對象類別,并使用Intersection?over?Union(IoU)定義一個積極的預測。
Precision和Recall:精確率衡量的是模型正面預測的準確性,而召回率衡量的是模型正確識別的實際正面案例的比例。精確率和召回率之間通常有一個權衡;例如,增加檢測到的對象的數(shù)量(更高的召回率)會導致更多的假陽性(更低的精確率)。為了考慮到這種權衡,AP指標包含了精度-召回曲線,該曲線將精度與不同置信度閾值的召回率作了對比。這個指標通過考慮精度-召回曲線下的面積,對精度和召回進行了平衡的評估。
處理多個物體類別:物體檢測模型必須識別和定位圖像中的多個物體類別。AP指標通過單獨計算每個類別的平均精度(AP),然后取所有類別中這些AP的平均值來解決這個問題(這就是為什么它也被稱為平均平均精度)。這種方法確保了對每個類別的模型性能進行單獨評估,從而對模型的整體性能提供了更全面的評估。
IoU:物體檢測的目的是通過預測邊界框來準確定位圖像中的物體。AP指標包含了 "聯(lián)合體上的交集"(IoU)措施,以評估預測的邊界盒的質量。IoU是預測界線盒和地面真實界線盒的交集面積與聯(lián)合面積之比(見圖2)。它衡量的是地面實況和預測邊界盒之間的重疊程度。COCO基準考慮了多個IoU閾值,以評估模型在不同定位精度水平上的表現(xiàn)。
3.2 計算AP
在VOC和COCO數(shù)據集中,AP的計算方法是不同的。在這一節(jié)中,我們將描述它是如何在每個數(shù)據集上計算的。
VOC數(shù)據集
這個數(shù)據集包括20個物體類別。為了計算VOC中的AP,我們遵循以下步驟:
- 對于每個類別,通過改變模型預測的置信度閾值,計算出精確-召回曲線
- 使用精度-召回曲線的內插11點抽樣,計算每個類別的平均精度(AP)
- 通過取所有20個類別中的AP的平均值來計算最終的平均精度(AP)
COCO數(shù)據集
這個數(shù)據集包括80個對象類別,并使用更復雜的方法來計算AP。它沒有使用11點插值,而是使用101點插值,也就是說,它計算了從0到1的101個召回閾值的精度,增量為0.01。另外,AP是通過對多個IoU值進行平均而不是只對一個IoU值進行平均得到的,除了一個常見的AP指標,即AP50????,它是單個IoU閾值為0.5的AP。COCO中計算AP的步驟如下:
- 對于每個類別,通過改變模型預測的置信度閾值,計算出精確-召回曲線
- 使用101-recall閾值計算每個類別的平均精度(AP)
- 在不同的交叉聯(lián)合(IoU)閾值下計算AP,通常從0.5到0.95,步長為0.05。更高的IoU閾值需要更準確的預測才能被認為是真陽性
- 對于每個IoU閾值,取所有80個類別的AP的平均值
- 最后,通過平均每個IoU閾值計算的AP值來計算總體AP
AP計算的差異使得我們很難直接比較兩個數(shù)據集的物體檢測模型的性能。目前的標準使用COCO?AP,因為它對一個模型在不同的IoU閾值下的表現(xiàn)有更精細的評估。
3.3?非極大值抑制 (NMS)
非極大值抑制(NMS)是物體檢測算法中使用的一種后處理技術,用于減少重疊邊界盒的數(shù)量,提高整體檢測質量。物體檢測算法通常會在同一物體周圍產生多個具有不同置信度分數(shù)的邊界框。NMS過濾掉多余的和不相關的邊界盒,只保留最準確的邊界盒。算法1描述了該程序。圖3顯示了一個包含多個重疊邊界框的物體檢測模型的典型輸出和NMS之后的輸出。
4.?YOLO: You Only Look Once
Joseph?Redmon等人的YOLO發(fā)表在CVPR?2016[38]。它首次提出了一種實時的端到端物體檢測方法。YOLO這個名字代表了 "你只看一次",指的是它是與之前的方法相比,YOLO只需通過一次網絡就能完成檢測任務,而之前的方法要么使用滑動窗口,要么使用分類器,每個圖像需要運行數(shù)百次或數(shù)千次,更先進的方法則將任務分為兩步,第一步檢測有物體或候選框的可能區(qū)域,第二步對候選框進行分類。另外,YOLO使用了一個更直接的輸出,只基于回歸來預測檢測輸出,而Fast?R-CNN[39]則使用了兩個單獨的輸出,一個是概率的分類,一個是方框坐標的回歸。
4.1?YOLOv1如何工作?
YOLOv1通過同時檢測所有的邊界框,統(tǒng)一了物體檢測步驟。為了實現(xiàn)這一目標,YOLO將輸入圖像劃每個邊界框的預測由五個值組成:Pc、bx、by、bh、bw?,其中Pc是bounding box的置信度分數(shù),反映了模型對bbox包含物體的置信度以及bbox的精確程度。bx和by坐標是方框相對于網格單元的中心,bh和bw是方框相對于整個圖像的高度和寬度。YOLO的輸出是一個S×S×(B×5+C)的張量,可以選擇用非最大抑制(NMS)?來去除重復的檢測結果。
在最初的YOLO論文中,作者使用了PASCAL??VOC數(shù)據集[36],該數(shù)據集包含20個(C??=?20);一個7×7(S?=?7)網格最多預測兩個類(B?=?2),輸出7×7×30預測結果。
?YOLOv1在PASCAL?VOC2007數(shù)據集上取得了63.4的平均精度(AP)。
4.2?YOLOv1網絡架構
YOLOv1架構包括24個卷積層,然后是兩個全連接層,用于預測bbox坐標和概率。除了最后一個層使用線性激活函數(shù)外,所有層都使用了漏整流線性單元激活[40]。受GoogLeNet[41]和Network?in?Network[42]?的啟發(fā),YOLO使用1×1卷積層來減少特征圖的數(shù)量并保持相對較低的參數(shù)數(shù)量。作為激活層,表1描述了YOLOv1的架構。作者還介紹了一個更輕的模型,稱為快速YOLO,由九個卷積層組成。
4.3?YOLOv1訓練
作者使用ImageNet數(shù)據集[43]在224x224的分辨率下對YOLO的前20層進行了預訓練。然后,他們用隨機初始化的權重增加了最后四層,并在448x448的分辨率下用PASCAL VOC 2007和VOC 2012數(shù)據集[36]對模型進行了微調,以增加細節(jié),實現(xiàn)更準確的物體檢測。對于增強,作者使用了最多為輸入圖像大小20%的隨機縮放和平移,以及HSV色彩空間中上端系數(shù)為1.5的隨機曝光和飽和度。
YOLOv1使用了一個由多個和平方誤差組成的損失函數(shù),如圖5所示。在該損失函數(shù)中、 λcoord = 5是一個比例因子,賦予邊界框預測更多的重要性,而λnoobj = 0.5是一個比例因子,降低不包含物體的框的重要性。λnoobj = 0.5是一個比例因子,它降低了不包含物體的bbox的重要性。
4.4?YOLOv1優(yōu)缺點
YOLO的簡單結構,加上其新穎的全圖像單次回歸,使其比現(xiàn)有的物體檢測器快得多,允許實時性能。然而,雖然YOLO的表現(xiàn)比任何物體檢測器都快,但與最先進的方法如快速R-CNN[39]相比,定位誤差更大。造成這種限制的主要原因有三個:
- 它在網格單元中最多只能檢測到兩個相同類別的物體,限制了它預測附近物體的能力
- 它在預測訓練數(shù)據中未見的長寬比物體時很吃力
- 由于下采樣層,它只能從粗略的物體特征中學習
5.?YOLOv2:更好、更快、更強
YOLOv2由Joseph?Redmon和Ali?Farhadi發(fā)表在CVPR?2017[44]。它包括了對原始YOLO的一些改進,使其更好,保持相同的速度,也更強大,能夠檢測9000個類別!這些改進有以下幾點:
- 在所有卷積層上的批量歸一化改善了收斂性,并作為一個正則器來減少過擬合;
- 高分辨率分類器,和YOLOv1一樣,他們在ImageNet 以224x224的分辨率對模型進行了預訓練。然而,這一次,他們在分辨率為448 x 448的ImageNet上對模型進行了10次微調,提高了網絡在高分辨率輸入下的性能;
- 完全卷積。他們去掉了密集層,采用了全卷積架構;
- 使用Anchor來預測邊界盒。他們使用一組先驗框Anchor,這些Anchor具有預定義的形狀,用于匹配物體的原型形狀,如圖6所示。每個網格單元都定義了多個Anchor,系統(tǒng)預測每個Anchor的坐標和類別。網絡輸出的大小與每個網格單元的Anchor數(shù)量成正比;
- 維度聚類。挑選好的Anchor有助于網絡學習預測更準確的邊界盒。作者對訓練中的邊界盒進行了k-means聚類,以找到好的先驗。他們選擇了五個Anchor,在召回率和模型復雜性之間進行了良好的權衡;
- 直接預測位置。與其他預測偏移量的方法不同[45],YOLOv2遵循同樣的理念,預測了相對于網格單元的位置坐標。網絡為每個單元預測了五個bounding box,每個bounding box有五個值tx?, ty?, tw?, th?, to?,其中to?相當于YOLOv1的Pc,最終得到的bounding box坐標如圖7所示;
- 細粒度的特征。與YOLOv1相比,YOLOv2去掉了一個池化層,對于416×416的輸入圖像,得到13×13的特征圖,結構細節(jié)見圖表2;
- 多尺度訓練。由于YOLOv2不使用全連接層,輸入可以是不同的尺寸。為了使YOLOv2對不同的輸入尺寸具有魯棒性,作者隨機訓練模型,每十批改變輸入尺寸(從320?× 320到608?× 608)。
通過所有這些改進,YOLOv2在PASCAL?VOC2007數(shù)據集上取得了78.6%的平均精度(AP),而YOLOv1則取得了63.4%。
5.1?YOLOv2架構
YOLOv2使用的骨干架構被稱為Darknet-19,包含19個卷積層和5個maxpooling層。與YOLOv1的架構類似,它受到Network in Network[42]的啟發(fā),在3×3之間使用1×1 3×3之間的卷積,以減少參數(shù)的數(shù)量。此外,如上所述,他們使用批量歸一化來規(guī)范化并幫助收斂。
5.2?YOLO9000是一個更強大的YOLOv2
作者在同一篇論文中介紹了一種訓練聯(lián)合分類和檢測的方法。它使用來自COCO[37]的檢測標記數(shù)據來學習bounding box坐標,并使用來自ImageNet的分類數(shù)據來增加它能檢測的類別數(shù)量。在訓練過程中,他們將這兩個數(shù)據集結合起來,這樣當使用檢測訓練圖像時,它反向傳播檢測網絡,而當使用分類訓練圖像時,它反向傳播架構的分類部分。結果是一個能夠檢測超過9000個類別的YOLO模型,因此被稱為YOLO9000。?
6. YOLOv3
YOLOv3[46]于2018年由Joseph?Redmon和Ali?Farhadi發(fā)表在ArXiv。它包括重大的變化和更大的架構,以便在保持實時性能的同時與最先進的技術接軌。在下文中,我們描述了相對于YOLOv2的變化。
- bounding box預測。與YOLOv2一樣,該網絡為每個bounding box預測四個坐標tx、ty、tw和th;然而,這次YOLOv3使用邏輯回歸為每個bounding box預測一個目標分數(shù)。這個分數(shù)與ground truth重合度最高的Anchor來說是1,對于其他Anchor來說是0。與Faster R-CNN[45]相比,YOLOv3只為每個ground truth分配一個Anchor。另外,如果沒有為一個對象分配Anchor,它只會產生分類損失,而不會產生定位損失或置信度損失;
- 類預測。他們沒有使用softmax進行分類,而是使用二元交叉熵來訓練獨立的logistic分類器,并將問題作為多標簽分類來提出。這種變化允許給同一個bounding box分配多個標簽,這可能發(fā)生在一些標簽重疊的復雜數(shù)據集上[47]。例如,同一個物體可以是一個人和一個男人;
- 新的骨干網絡。YOLOv3的特點是一個更大的特征提取器,由53個卷積層組成,帶有Res殘余連接。第6.1節(jié)更詳細地描述了該架構;
- 空間金字塔池(SPP)。 雖然在論文中沒有提到,但作者還在骨干中加入了一個改進的SPP塊[48],它連接了多個最大集合輸出,而沒有子采樣(stride = 1),每個內核大小不同的k×k,其中k=1、5、9、13,允許更大的感受野。這個版本被稱為稱為YOLOv3-spp,是表現(xiàn)最好的版本,將AP50提高了2.7%;
- 多尺度預測。與特征金字塔網絡[49]類似,YOLOv3在三個不同尺度上預測三個bounding box。第6.2節(jié)描述了多尺度預測機制的更多細節(jié);
- Bounding box先驗。與YOLOv2一樣, 作者也使用k-means來確定Anchor的bounding box預設。不同的是, 在YOLOv2中,他們每個單元共使用了五個先驗盒,而在YOLOv3中,他們使用了三個不同尺度的先驗盒。
6.1?YOLOv3架構
YOLOv3中提出的架構主干被稱為Darknet-53。它用全連接層取代了所有的max-pooling層,并增加了Res殘差連接。總的來說,它包含53個卷積層。圖8顯示了該架構的細節(jié)。
Darknet-53骨干網獲得了與ResNet-152相當?shù)腡op-1和Top-5的準確率,但速度幾乎為2倍。
6.2??YOLOv3多尺度預測
除了更大的結構,YOLOv3的一個基本特征是多尺度預測,即在多個網格尺寸下的預測。這有助于獲得更精細的方框,并大大改善了對小物體的預測,而這正是YOLO以前版本的主要弱點之一。
圖9所示的多尺度檢測架構的工作原理如下:第一個標記為y1的輸出相當于YOLOv2的輸出,其中一個13×13的網格定義了輸出。第二個輸出y2是由串聯(lián)后的輸出與(Res × 8)后的輸出相連接。這些特征圖有不同的尺寸,即13×13和26×26,所以在連接之前有一個上采樣操作。最后,使用一個上采樣操作,第三個輸出y3將26×26的特征圖與52×52的特征圖連接起來。對于有80個類別的COCO數(shù)據集,每個尺度提供了一個形狀為N×N×[3×(4+1+80)]的輸出張量。其中N×N是特征圖(或網格單元)的大小,3表示每個單元的方框,4+1包括四個坐標和置信度得分。4+1包括四個坐標和置信度得分。
6.3? YOLOv3結果
當YOLOv3發(fā)布時,物體檢測的基準已經從PASCAL?VOC變成了Microsoft?COCO[37]。因此,從這里開始,?所有的YOLO都在MS?COCO數(shù)據集中進行評估。YOLOv3-spp在20FPS的情況下,平均精度AP為36.2%,?AP50?為60.6%,達到了當時的最先進水平,速度快了2倍。
7.?Backbone, Neck和Head
這時,物體檢測器的結構開始被描述為三個部分:Backbone, Neck和Head。圖10顯示了一個高層次的Backbone, Neck?和?Head圖。
?Backbone負責從輸入圖像中提取有用的特征。它通常是一個卷積神經網絡(CNN),在大規(guī)模的圖像分類任務中訓練,如ImageNet。骨干網在不同的尺度上捕捉層次化的特征,在較早的層中提取低層次的特征(如邊緣和紋理),在較深的層中提取高層次的特征(如物體部分和語義信息)。
Neck是連接Backbone和Head的一個中間部件。它聚集并細化骨干網提取的特征,通常側重于加強不同尺度的空間和語義信息。頸部可能包括額外的卷積層、特征金字塔網絡(FPN)[49],或其他機制,以提高特征的代表性。
Head是物體檢測器的最后組成部分;它負責根據Backbone和Neck提供的特征進行預測。它通常由一個或多個特定任務的子網絡組成,執(zhí)行分類、定位,以及最近的實例分割和姿勢估計。頭部處理頸部提供的特征,為每個候選物體產生預測。最后,一個后處理步驟,如非極大值抑制(NMS),過濾掉重疊的預測,只保留置信度最高的檢測。
在其余的YOLO模型中,我們將使用Backbone, Neck和Head來描述架構。
8. YOLOv4
兩年過去了,YOLO沒有新版本。直到2020年4月,Alexey?Bochkovskiy、Chien-Yao?Wang和Hong-Yuan?Mark?Liao在ArXiv發(fā)布了YOLOv4[50]的論文。起初,不同的作者提出一個新的YOLO "官方 "版本讓人感覺很奇怪;然而,YOLOv4保持了相同的YOLO理念——實時、開源、端到端和DarkNet框架——而且改進非常令人滿意,社區(qū)迅速接受了這個版本作為官方的YOLOv4。
YOLOv4試圖通過試驗許多被歸類為bag-of-freebies和bag-of-specials的變化來找到最佳平衡。bag-of-freebies是指只改變訓練策略和增加訓練成本但不增加推理時間的方法,最常見的是數(shù)據增強。另一方面,bag-of-specials是指稍微增加推理成本但顯著提高準確率的方法。這些方法的例子有擴大感受野[48,?51,?52],結合特征[53,?49,?54,?55],以及后處理[56,?40,?57,?58]等等。
我們將YOLOv4的主要變化總結為以下幾點:
- 一個帶有bag-of-specials集成的增強型架構。作者嘗試了多種骨干架構, 如ResNeXt50[59]?、EfficientNet-B3[60]和Darknet-53。表現(xiàn)最好的架構是對Darknet-53的修改,采用跨階段部分連接(CSPNet)[61],以Mish激活函數(shù)[57]作為骨干(見圖11)。對于頸部,他們使用了YOLOv3-spp中的修改版空間金字塔集合(SPP)[48]和YOLOv3中的多尺度預測,但用修改版的路徑聚合網絡(PANet)[62]代替FPN,以及修改的空間注意模塊(SAM)[63]。最后,對于檢測頭,他們使用YOLOv3中的錨。因此,該模型被稱為CSPDarknet53-PANet-SPP。添加到Darknet-53中的跨階段部分連接(CSP)有助于減少模型的計算量,同時保持相同的精度。與YOLOv3-spp中一樣,SPP塊在不影響推理速度的情況下增加了感受野。修改后的PANet版本將特征串聯(lián)起來,而不是像原PANet論文中那樣將其添加;
- bag-of-freebies的高級訓練方法。除了常規(guī)的增強,如隨機亮度、對比度、縮放、裁剪、翻轉和旋轉,作者還實現(xiàn)了馬賽克增強,將四張圖像合并為一張,允許檢測其通常背景之外的物體,同時也減少了對大批量正?;男∨康男枨蟆τ谡齽t化, 他們使用了DropBlock[64]?, 作為Dropout[65]的替代品,但用于卷積神經網絡以及類標簽平滑[66,?67]。對于檢測器,他們增加了CIoU?損失[68]和Cross?mini-bath?normalization?(CmBN),用于收集整個批次的統(tǒng)計數(shù)據,而不是像常規(guī)批次歸一化中的單個小批次[69];
- 自我對抗性訓練(SAT)。為了使模型對擾動更加穩(wěn)健,對輸入的圖像進行對抗性攻擊,以創(chuàng)造一個欺騙性,即gound truth不在圖像中,但保持原始標簽以檢測正確的對象;
- 用遺傳算法進行超參數(shù)優(yōu)化。為了找到用于訓練的最佳超參數(shù),他們在前10%的時期使用遺傳算法,并使用余弦退火調度器[70]來改變訓練期間的學習率。它開始緩慢地降低學習率,然后在訓練過程的一半時快速降低,最后略微降低。
?表3列出了骨干網和檢測器的最終選擇的BoF和BoS。
8.1?YOLOv4結果
在MS?COCO數(shù)據集test-dev?2017上進行評估,YOLOv4在NVIDIA?V100上實現(xiàn)了43.5%的AP和65.7%的AP50,速度超過了50?FPS。
9. YOLOv5
YOLOv5[72]是在YOLOv4之后幾個月于2020年由Glenn?Jocher發(fā)布。在寫這篇文章時,還沒有關于YOLOv5的科學論文,但從代碼中,我們知道它使用了YOLOv4部分描述的許多改進,主要區(qū)別是它是用Pytorch而不是Darknet開發(fā)的。YOLOv5是開源的,由Ultralytics積極維護,有250多個貢獻者,并經常有新的改進。YOLOv5很容易使用、培訓和部署。Ultralytics提供了一個iOS和Android的移動版本,以及許多用于標簽、培訓和部署的集成。
YOLOv5?提供了五個版本: YOLOv5n(?納米級)、YOLOv5s(?小型)、YOLOv5m(?中型)、YOLOv5l(大型)和YOLOv5x(特大型)。
在撰寫本文時,YOLOv5發(fā)布的版本是7.0版,包括能夠進行分類和實例分割的YOLOv5版本。
9.1?YOLOv5結果
在MS?COCO數(shù)據集test-dev?2017上進行評估,YOLOv5x在圖像大小為640像素的情況下實現(xiàn)了50.7%的AP。使用32?個批次的大小,它在NVIDIA?V100?上可以達到200?FPS?的速度。使用更大的輸入尺寸1536?像素,?YOLOv5實現(xiàn)了55.8%的AP。
10. Scaled-YOLOv4
在YOLOv4?的一年后, 同一作者在CVPR?2021?上展示了Scaled-YOLOv4?[73]?。與YOLOv4?不同, Scaled?YOLOv4是在Pytorch而不是Darknet中開發(fā)的。主要的創(chuàng)新之處在于引入了擴大和縮小的技術。擴大規(guī)模意味著以降低速度為代價來制作一個增加精度的模型;另一方面,縮小規(guī)模需要制作一個增加速度而犧牲精度的模型。此外,按比例縮小的模型需要更少的計算能力,可以在嵌入式系統(tǒng)上運行。
縮小的架構被稱為YOLOv4-tiny;它是為低端GPU設計的,在Jetson?TX2上能以46?FPS運行,在RTX2080Ti上能以440?FPS運行,在MS?COCO上達到22%的AP。
擴大的模型架構被稱為YOLOv4-large,其中包括三種不同尺寸的P5、P6和P7。這個架構是為云計算GPU設計的,取得了最先進的性能,超過了所有以前的模型[74,?75,?76],在MS?COCO上的AP為56%。
11. YOLOR
YOLOR[77]由YOLOv4的同一研究小組于2021年5月發(fā)表在ArXiv。它代表著你只學習一個表征。在這篇論文中,作者采用了一種不同的方法;他們開發(fā)了一種多任務學習方法,旨在通過學習一般的表征和使用子網絡來創(chuàng)建特定任務的表征,為各種任務(如分類、檢測、姿勢估計)創(chuàng)建一個單一的模型。洞察到傳統(tǒng)的聯(lián)合學習方法經常導致次優(yōu)特征的產生,YOLOR旨在通過編碼神經網絡的隱性知識來克服這一問題,以應用于多個任務,類似于人類使用過去的經驗來處理新問題。結果顯示,將隱性知識引入神經網絡有利于所有的任務。
在MS?COCO數(shù)據集test-dev?2017上進行評估,YOLOR在NVIDIA?V100上以30?FPS的速度取得了55.4%的AP和73.3%的AP50。
12. YOLOX
YOLOX[78]于2021年7月發(fā)表在ArXiv上,由Megvii?Technology的研究團隊開發(fā)。它以Pytorch為基礎,以Ultralytics的YOLOV3為起點,有五個主要變化:無錨結構、多陽性、解耦頭、高級標簽分配和強增強。它取得了最先進的結果。
2021年,在Tesla?V100上以50.1%的AP和68.9%的FPS實現(xiàn)了速度和準確性的最佳平衡。在下文中,我們描述了YOLOX相對于YOLOv3的五個主要變化:
- 無錨(Anchor-free)。自YOLOv2以來,所有后續(xù)的YOLO版本都是基于錨點的檢測器。YOLOX受到CornerNet[79]、CenterNet[80]和FCOS[81]等最先進的無錨物體檢測器的啟發(fā),回到了一個無錨結構,簡化了訓練和解碼過程。與YOLOv3基線相比,無錨的AP增加了0.9;
- 多重正樣本(Multi positives)。為了彌補因缺乏錨點而產生的巨大不平衡,作者使用了中心采樣[81],他們將中心3×3的區(qū)域作為正例區(qū)域。這種方法使AP增加了2.1點;
- 解耦頭(Decoupled head)。在[82,?83]中顯示,分類置信度和定位精度之間可能存在錯位。由于這個原因,YOLOX將這兩者分離成兩個頭(如圖12所示),一個用于分類任務,另一個用于回歸任務,將AP提高了1.1?分,并加快了模型收斂。
- 高級標簽分配。在[84]中,有研究表明,當多個對象的bounding box重疊時,ground truth標簽分配可能存在模糊性,并將分配程序表述為最佳傳輸(OT)問題。YOLOX在這項工作的啟發(fā)下,提出了一個簡化的版本,稱為simOTA。這一變化使AP增加了2.3分;
- 強化增強。YOLOX使用MixUP[85]和Mosaic增強。作者發(fā)現(xiàn),在使用這些增強后,ImageNet預訓練不再有好處。強勢增強使AP增加了2.4分;
13. YOLOv6
YOLOv6[86]于2022年9月由美團視覺人工智能部發(fā)布在ArXiv。與YOLOv4和YOLOv5類似,它為工業(yè)應用提供了各種不同尺寸的模型。跟隨基于錨點的方法[78,?81]的趨勢,YOLOv6采用了無錨點的檢測器。該模型的主要創(chuàng)新之處總結如下:
- 一個基于RepVGG[87]的新骨架,稱為EfficientRep,比以前的YOLO骨架使用更高的并行性。對于頸部, 他們使用PAN[62]?增強了RepBlocks[87]?或CSPStackRep[61]Blocks?, 用于大型模型。而受YOLOX的啟發(fā),他們開發(fā)了一個高效的解耦頭;
- 使用TOOD[88]中介紹的任務排列學習方法進行標簽分配;
- 新的分類和回歸損失。他們使用了一個分類VariFocal損失[89]和一個SIoU[90]/GIoU回歸損失;
- 一個用于回歸和分類任務的自我蒸餾策略;
- 使用RepOptimizer[92]和信道明智蒸餾[93]的檢測量化方案,有助于實現(xiàn)更快的檢測器。
13.1?YOLOv6結果
在MS?COCO數(shù)據集test-dev?2017上進行評估,YOLOv6-L在NVIDIA?Tesla?T4上實現(xiàn)了52.5%的AP和70%的AP50?,速度約為50 FPS。
14. YOLOv7
YOLOv7[94]由YOLOv4和YOLOR的同一作者于2022年7月發(fā)表在ArXiv。當時,在5?FPS到160?FPS的范圍內,它的速度和準確度超過了所有已知的物體檢測器。與YOLOv4一樣,它只使用MS?COCO數(shù)據集進行訓練,沒有預訓練的骨干。YOLOv7提出了一些架構上的變化和一系列的免費包,在不影響推理速度的情況下提高了準確率,只影響了訓練時間。
YOLOv7的架構變化是:
- 擴展高效層聚合網絡(E-ELAN)。ELAN[95]是一種策略,通過控制最短的最長梯度路徑,讓深度模型更有效地學習和收斂。YOLOv7提出的E-ELAN適用于具有無限疊加計算塊的模型。E-ELAN通過洗牌和合并cardinality結合不同組的特征,在不破壞原始梯度路徑的情況下增強網絡的學習;
- 基于串聯(lián)的模型的模型縮放??s放通過調整一些模型屬性來生成不同大小的模型。YOLOv7的架構是一個基于串聯(lián)的架構,其中標準的縮放技術,如深度縮放,導致過渡層的輸入通道和輸出通道之間的比例變化,這反過來又導致了模型的硬件使用量的減少。YOLOv7提出了一種新的基于串聯(lián)模型的縮放策略,其中塊的深度和寬度以相同的因素進行縮放,以保持模型的最佳結構。
YOLOv7中使用的bag-of-freebies包括:
- 計劃中的重新參數(shù)化卷積。和YOLOv6一樣,YOLOv7的架構也是受到重新參數(shù)化卷積(RepConv)?的啟發(fā)[87]。然而,他們發(fā)現(xiàn)RepConv中的身份連接破壞了ResNet[53]中的殘差和DenseNet[96]中的串聯(lián)。出于這個原因,他們刪除了身份連接,并稱之為RepConvN;
- 對輔助頭進行粗略的標簽分配,對主導頭進行精細的標簽分配。主導頭負責最終輸出,而輔助頭則協(xié)助訓練;
- conv-bn-activation中的批量歸一化。這將批量歸一化的平均值和方差整合到推理階段的卷積層的偏置和權重中;
- YOLOR[77]中啟發(fā)的隱性知識;
- 指數(shù)移動平均線作為最終推斷模型。
14.1?與YOLOv4和YOLOR的比較
在這一節(jié)中,我們強調了YOLOv7與同一作者以前開發(fā)的YOLO模型相比的改進之處。
與YOLOv4相比,YOLOv7實現(xiàn)了參數(shù)減少75%,計算量減少36%,同時平均精度(AP)提高了1.5%。與YOLOv4-tiny相比,YOLOv7-tiny設法將參數(shù)和計算量分別減少39%和49%,同時保持相同的AP。最后,與YOLOR相比,YOLOv7的參數(shù)數(shù)量和計算量分別減少了43%和15%,同時AP也略微增加了0.4%。
14.2?YOLOv7結果
在MS?COCO數(shù)據集test-dev?2017上評估,YOLOv7-E6在輸入尺寸為1280像素的情況下,在NVIDIA?V100上取得了55.9%的AP和73.5%的AP50?,速度為50 FPS。
15. DAMO-YOLO
DAMO-YOLO[97]由阿里巴巴集團于2022年11月發(fā)表在ArXiv。受到當前技術的啟發(fā),DAMO-YOLO包括以下內容:
- 一個神經架構搜索(NAS)。他們使用了阿里巴巴開發(fā)的一種叫做MAE-NAS[98]的方法來自動尋找一個有效的架構;
- 一個大的頸部。受GiraffeDet[99]、CSPNet[61]和ELAN[95]的啟發(fā),作者設計了一個可以實時工作的脖子,稱為Efficient-RepGFPN;
- 一個小頭。作者發(fā)現(xiàn),大頭和小頭能產生更好的性能,他們只留下一個線性層用于分類,一個用于回歸。他們把這種方法稱為ZeroHead;
- AlignedOTA標簽分配。動態(tài)標簽分配方法,如OTA[84]和TOOD[88],由于比靜態(tài)方法有明顯的改進,已經得到普及。然而,分類和回歸之間的錯位仍然是一個問題,部分原因是分類和回歸損失之間的不平衡。為了解決這個問題,他們的AlignOTA方法在分類成本中引入了焦點損失[75],并使用預測和ground truth的IoU作為軟標簽,使每個目標都能選擇對齊的樣本,并從全局角度解決這個問題;
- 知識的提煉。他們提出的策略包括兩個階段:教師在第一階段指導學生,學生在第二階段獨立進行微調。此外,他們在蒸餾方法中加入了兩項增強功能:對齊模塊,它將學生的特征調整為與教師的特征相同的分辨率,以及通道動態(tài)溫度,它將教師和學生的特征歸一化,以減少實際價值差異的影響;
作者生成了名為DAMO-YOLO-Tiny/Small/Medium的比例模型,在NVIDIA?V100上,最佳模型在233?FPS下的AP達到了50.0%。
16. YOLOv8
YOLOv8[100]由開發(fā)YOLOv5的公司Ultralytics于2023年1月發(fā)布。由于在撰寫本文時,還沒有關于YOLOv8的論文,我們需要深入了解與其他YOLO版本相比的架構決策。按照目前的趨勢,YOLOv8是無錨的,減少了箱體預測的數(shù)量,加快了非極大值抑制(NMS)的速度。此外,YOLOv8在訓練過程中使用了馬賽克增強功能;但是,由于已經發(fā)現(xiàn)如果在整個訓練過程中使用這種增強功能可能是有害的,所以在最后10個epoch中禁用了這種功能。
YOLOv8可以從命令行界面(CLI)運行,也可以作為一個PIP包安裝。此外,它還配備了多個用于貼標、培訓和部署的集成。
YOLOv8?提供了五個版本: YOLOv8n(?納米級)、YOLOv8s(?小型)、YOLOv8m(?中型)、YOLOv8l(大型)和YOLOv8x(特大型)。
16.1?YOLOv8結果
在MS?COCO數(shù)據集test-dev?2017上進行評估,YOLOv8x在圖像大小為640像素的情況下實現(xiàn)了53.9%的AP(?相比之下,YOLOv5在相同的輸入大小上為50.7%),在NVIDIA?A100和TensorRT上的速度為280?FPS。
17. PP-YOLO、PP-YOLOv2和PP-YOLOE
PP-YOLO模型一直在與我們描述的YOLO模型平行發(fā)展。然而,我們決定將它們歸為一個部分,因為它們從YOLOv3開始,一直在逐步改進以前的PP-YOLO版本。盡管如此,這些模型在YOLO的發(fā)展過程中還是很有影響力的。與YOLOv4和YOLOv5相似的PP-YOLO[76]是基于YOLOv3的。它于2020年7月由百度公司的研究人員發(fā)表在ArXiv上。該作者使用了PaddlePaddle[101]深度學習平臺,因此它的PP名稱。遵循我們從YOLOv4開始看到的趨勢,PP-YOLO增加了十個現(xiàn)有的技巧來提高檢測器的準確性,保持速度不變。根據作者的說法,本文的目的不是要介紹一個新的物體檢測器,而是要展示如何一步一步地建立一個更好的檢測器。PP-YOLO使用的大部分技巧都與YOLOv4中使用的技巧不同,重合的技巧使用了不同的實現(xiàn)。PP-YOLO關于YOLOv3的變化是:
- ResNet50-vd骨干網取代了DarkNet-53骨干網,其架構在最后階段增加了可去形成的卷積[102],并提煉出預訓練模型,在ImageNet上具有更高的分類精度。這個架構被稱為ResNet5-vd-dcn;
- 更大的批次規(guī)模以提高訓練的穩(wěn)定性,他們從64個到192個,同時更新了訓練計劃和學習率;
- 對訓練過的參數(shù)保持移動平均數(shù),并使用它們來代替最終的訓練值;
- DropBlock只適用于FPN;
- 在另一個分支中增加了一個IoU損失,以及用于邊界盒回歸的L1損失;
- 增加了一個IoU預測分支,以衡量定位精度和IoU感知損失。在推理過程中,YOLOv3乘以分類概率和客觀性分數(shù)來計算最終的檢測結果,PP-YOLO也乘以預測的IoU來考慮定位精度;
- 類似于YOLOv4的網格敏感方法被用來改善網格邊界的包圍盒中心預測;
- 矩陣NMS[103]被使用,它可以并行運行,使得它比傳統(tǒng)的NMS更快;
- CoordConv[104]用于FPN的1×1卷積,并用于檢測頭的第一個卷積層。CoordConv允許網絡學;
- 空間金字塔集合法只用于頂部特征圖,以增加骨干的感受野。
17.1?PP-YOLO的增量和預處理
PP-YOLO使用了以下增強和預處理:
- 混合訓練[85],權重從Beta(α,?β)分布中取樣,其中α?= 1.5,β?= 1.5;
- 隨機色彩失真;
- 隨機展開;
- 隨機裁剪和隨機翻轉,概率為0.5;
- RGB通道的z-score規(guī)范化,其平均值為[0.485, 0.456, 0.406],標準偏差為
[0 . 229 , 0 . 224 , 0 . 225];
-
從[320,?352,?384,?416,?448,?480,?512,?544,?576,?608]中均勻地抽取多種圖像尺寸。
17.2?PP-YOLO結果
在MS?COCO數(shù)據集test-dev?2017上進行評估,PP-YOLO在NVIDIA?V100上取得了45.9%的AP和65.2%的AP50,73?FPS。
17.3?PP-YOLOv2
PP-YOLOv2[105]于2021年4月發(fā)表在ArXiv上,對PP-YOLO增加了四項改進,在NVIDIA?V100上69FPS時,性能從45.9%AP提高到49.5%AP。PP-YOLOv2關于PP-YOLO的變化如下:
- 骨干網從ResNet50改為ResNet101;
- 路徑聚合網絡(PAN)而不是類似于YOLOv4的FPN;
- Mish激活函數(shù)。與YOLOv4和YOLOv5不同,他們只在檢測頸部應用mish激活函數(shù),以保持骨干的ReLU不變;
- 較大的輸入尺寸有助于提高小物體的性能。他們將最大的輸入尺寸從608擴大到768,并將每個GPU?的批量大小從24張圖像減少到12張。輸入尺寸從[320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640,?672, 704, 736, 768]中均勻抽取;
- 一個修改過的IoU意識到的分支。他們修改了使用軟標簽格式而不是軟權重格式的IoU意識到的損失計算方法。
17.4 PP-YOLOE
PP-YOLOE[106]于2022年3月在ArXiv發(fā)表。它在PP-YOLOv2的基礎上增加了改進,在NVIDIA?V100上實現(xiàn)了51.4%的AP,78.1?FPS的性能。PP-YOLOE關于PP-YOLOv2的主要變化是:
- 無錨。在[81,?80,?79,?78]的工作推動下,PP-YOLOE使用了一個無錨的架構;
- 高效任務排列頭(ET-head)。與YOLOX的分類頭和位置頭解耦不同,PP-YOLOE反而使用了基于TOOD的單一頭,以提高速度和準確性;
- 任務對準學習(TAL)。YOLOX是第一個提出任務錯位問題的人,在這種情況下,分類置信度和定位準確度并不一致。為了減少這個問題,PP-YOLOE實施了TOOD[88]中提出的TAL,其中包括動態(tài)標簽分配與任務對齊損失相結合;
- 新的骨干和頸部。受TreeNet[107]的啟發(fā),作者用RepResBlocks修改了骨干和頸部的結構,結合了剩余和密集連接;
- Varifocal(VFL)和Distribution?focal?loss(DFL)。VFL[89]使用目標分數(shù)對陽性樣本的損失進行加權,對那些具有高IoU的樣本給予更高的權重。這在訓練過程中優(yōu)先考慮了高質量的樣本。同樣,兩者都使用IoU意識到的分類分數(shù)(IACS)作為目標,允許分類和定位質量的聯(lián)合學習,導致訓練和推理之間的一致性。另一方面,DFL[108]將Focal?Loss從離散標簽擴展到連續(xù)標簽,使結合質量估計和類別預測的改進表征成功優(yōu)化。這使得真實數(shù)據中的靈活分布得到了準確的描述,消除了不一致的風險。
和以前的YOLO版本一樣,作者通過改變背脊和頸部的寬度和深度,生成了多個比例的模型。這些模型被稱為PP-YOLOE-s(小型)、PP-YOLOE-m(中型)、PP-YOLOE-l(大型)和PP-YOLOE-x(特大型)。
18. 討論
本文研究了15個YOLO版本,從最初的YOLO模型到最新的YOLOv8。表4提供了所討論的YOLO版本的概況從這個表中,我們可以確定幾個關鍵的模式:
- 錨Anchor:最初的YOLO模型相對簡單,沒有采用錨點,而最先進的模型則依賴于帶有錨點的兩階段檢測器。YOLOv2采用了錨點,從而提高了邊界盒的預測精度。這種趨勢持續(xù)了五年,直到YOLOX引入了一個無錨的方法,取得了最先進的結果。從那時起,隨后的YOLO版本已經放棄了錨的使用;
- 框架:最初,YOLO是使用Darknet框架開發(fā)的,后續(xù)版本也是如此。然而,當Ultralytics將YOLOv3?移植到PyTorch時,其余的YOLO版本都是使用PyTorch開發(fā)的,導致了增強功能的激增。另一個利用的深度學習語言是PaddlePaddle,一個最初由百度開發(fā)的開源框架;
- 骨干Backbone:YOLO模型的骨干架構隨著時間的推移發(fā)生了重大變化。從由簡單的卷積層和最大集合層組成的Darknet架構開始,后來的模型在YOLOv4中加入了跨階段部分連接(CSP),在YOLOv6和YOLOv7中加入了重新參數(shù)化,并在DAMO-YOLO中加入了神經架構搜索;
- 性能:雖然YOLO模型的性能隨著時間的推移有所提高,但值得注意的是,它們往往優(yōu)先考慮平衡速度和準確性,而不是只關注準確性。這種權衡是YOLO框架的一個重要方面,允許在各種應用中進行實時物體檢測。
18.1?在速度和準確性之間進行權衡
YOLO系列的物體檢測模型一直專注于平衡速度和精度,旨在提供實時性能而不犧牲檢測結果的質量。隨著YOLO框架在各種迭代中的發(fā)展,這種權衡一直是一個反復出現(xiàn)的主題,每個版本都試圖以不同的方式優(yōu)化這些相互競爭的目標。在最初的YOLO模型中,主要重點是實現(xiàn)高速物體檢測。該模型利用單一的卷積神經網絡(CNN)直接預測輸入圖像中的物體位置和類別,實現(xiàn)實時處理。然而,這種對速度的強調導致了準確性的妥協(xié),主要是在處理小物體或具有重疊邊界盒的物體時。
隨后的YOLO版本在保持框架的實時性的同時,引入了完善和增強功能來解決這些限制。例如,YOLOv2(?YOLO9000)引入了錨定框和穿透層,以改善物體的定位,從而提高精確度。此外,YOLOv3通過采用多尺度特征提取架構增強了模型的性能,允許在不同尺度上進行更好的物體檢測。
隨著YOLO框架的發(fā)展,速度和準確性之間的權衡變得更加微妙。YOLOv4和YOLOv5等模型引入了創(chuàng)新,如新的網絡主干、改進的數(shù)據增強技術和優(yōu)化的訓練策略。這些發(fā)展導致了準確度的顯著提高,但并沒有大幅影響模型的實時性能。
從Scaled?YOLOv4開始,所有官方的YOLO模型都對速度和精度之間的權衡進行了微調,提供不同的模型比例以適應特定的應用和硬件要求。例如,這些版本通常提供為邊緣設備優(yōu)化的輕量級模型,用精度換取降低的計算復雜性和更快的處理時間。
19?YOLO的未來
隨著YOLO框架的不斷發(fā)展,我們預計以下趨勢和可能性將決定未來的發(fā)展:
納入最新技術。研究人員和開發(fā)人員將繼續(xù)利用深度學習、數(shù)據增強和訓練技術的最先進方法來完善YOLO架構。這種持續(xù)的創(chuàng)新過程可能會提高模型的性能、穩(wěn)健性和效率。
基準的演變。目前用于評估物體探測模型的基準,即COCO?2017,最終可能會被一個更先進、更具挑戰(zhàn)性的基準所取代。這反映了前兩個YOLO版本中使用的VOC?2007基準的轉變,反映了隨著模型越來越復雜和準確,需要更多的基準。
YOLO模型和應用的激增。隨著YOLO框架的發(fā)展,我們預計每年發(fā)布的YOLO模型的數(shù)量會增加,同時應用也會相應地擴大。隨著該框架變得更加通用和強大,它可能會被應用于更多不同的領域,從家用電器設備到自動駕駛汽車。
擴展到新的領域。YOLO模型有可能將其能力擴展到物體檢測和分割之外,分支到視頻中的物體跟蹤和三維關鍵點估計等領域。隨著這些模型的發(fā)展,它們可能成為解決更廣泛的計算機視覺任務的新解決方案的基礎。
對不同硬件的適應性。YOLO模型將進一步跨越硬件平臺,從物聯(lián)網設備到高性能計算集群。這種適應性將使YOLO模型能夠在各種情況下部署,這取決于應用程序的要求和限制。此外,通過定制模型以適應不同的硬件規(guī)格,YOLO可以被更多的用戶和行業(yè)所接受和使用。
Reference:文章來源:http://www.zghlxwxcb.cn/news/detail-439555.html
《A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 TO YOLOV8 AND BEYOND 》文章來源地址http://www.zghlxwxcb.cn/news/detail-439555.html
到了這里,關于從YOLOv1到YOLOv8的YOLO系列最新綜述【2023年4月】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!