文章目錄本文詳細介紹了從YOLOv1-YOLOv9的網絡結構,以及各個版本之間的迭代。 YOLOv1-YOLOv8之間的對比如下表所示:
一、YOLO算法的核心思想YOLO系列的核心思想就是把目標檢測轉變為一個回歸問題,利用整張圖片作為網絡的輸入,通過神經網絡,得到邊界框的位置及其所屬的類別。 1. YOLO系列算法的步驟(1)劃分圖像:YOLO將輸入圖像劃分為一個固定大小的網格。 (2)預測邊界框和類別:對于每個網格,YOLO預測出固定數量(通常為5個或3個) 的邊界框。每個邊界框由5個主要屬性描述:邊界框的位置(中心坐標和寬高)和邊界框包含的目標的置信度(confidence)。此外,每個邊界框還預測目標的類別。 (3)單次前向傳遞:YOLO通過一個卷積神經網絡(CNN)進行單次前向傳遞,同時預測所有邊界框的位置和類別。相比于其他目標檢測算法,如基于滑動窗口或區域提議的方法,YOLO具有更快的速度,因為它只需要一次前向傳遞即可完成預測。 (4)損失函數:YOLO使用多任務損失函數來訓練網絡。該損失函數包括位置損失、置信度損失和類別損失。位置損失衡量預測邊界框和真實邊界框之間的位置差異。置信度損失衡量邊界框是否正確地預測了目標,并懲罰背景框的置信度。類別損失衡量目標類別的預測準確性。 (5)非最大抑制(Non-Maximum Suppression):在預測的邊界框中,可能存在多個相互重疊的框,代表同一個目標。為了消除冗余的邊界框,YOLO使用非最大抑制算法,根據置信度和重疊程度篩選出最佳的邊界框。 2. Backbone、Neck和Head物體檢測器的結構開始被描述為三個部分:Backbone, Neck和Head。下圖顯示了一個高層次的Backbone, Neck 和 Head圖。 Backbone負責從輸入圖像中提取有用的特征。它通常是一個卷積神經網絡(CNN),在大規模的圖像分類任務中訓練,如IamgeNet。骨干網絡在不同尺度上捕捉層次化的特征,在較早的層中提取低層次的特征(如邊緣和紋理),在較深的層中提取高層次的特征(如物體部分和語義信息)。 Neck是連接Backbone和Head的一個中間部件。它聚集并細化骨干網提取的特征,通常側重于加強不同尺度的空間和語義信息。頸部可能包括額外的卷積層、特征金字塔(FPN)或其他機制,以提高特征的代表性。 Head是物體檢測器的最后組成部分。它負責根據Backbone和Neck提供的特征進行預測。它通常由一個或多個特定任務的子網絡組成,執行分類、定位,以及最近的實例分割和姿勢估計。頭部處理頸部提供的特征,為每個候選物產生預測。最后,一個后處理步驟,如非極大值抑制(NMS),過濾掉重疊的預測,只保留置信度最高的檢測。 二、YOLO系列的算法1. YOLOv1(2016)(論文地址:https:///pdf/1506.02640.pdf) 1.1 模型介紹在YOLOv1提出之前,R-CNN系列算法在目標檢測領域中獨占鰲頭。R-CNN系列檢測精度高,但是由于其網絡結構是雙階段(two-stage)的特點,使得它的檢測速度不能滿足實時性,飽受詬病。為了打破這一僵局,涉及一種速度更快的目標檢測器是大勢所趨。 2016年,Joseph Redmon、Santosh Divvala、Ross Girshick等人提出了一種單階段(one-stage)的目標檢測網絡。它的檢測速度非???,每秒可以處理45幀圖片,能夠輕松地實時運行。由于其速度之快和其使用的特殊方法,作者將其取名為:You Only Look Once(也就是我們常說的YOLO的全稱),并將該成果發表在了CVPR2016上,從而引起了廣泛地關注。 YOLO的核心思想就是把目標檢測轉變成一個回歸問題,利用整張圖作為網絡的輸入,僅僅經過一個神經網絡,得到bounding box(邊界框)的位置及其所屬的類別。 1.2 網絡結構現在看來,YOLOv1的網絡結構十分清晰,是一種傳統的one-stage的卷積神經網絡:
1.3 實現細節(1)檢測策略 YOLOv1采用的是“分而治之”的策略,將一張圖片平均分成7x7個網格,每個網格分別負責預測中心點落在該網格內的目標。在Faster R-CNN中,是通過一個RPN來獲得目標的感興趣區域,這種方法精度高,但是需要額外再訓練一個RPN網絡,這無疑增加了訓練的負擔。在YOLOv1中,通過劃分得到了7x7個網格,這49個網格就相當于是目標的感興趣區域。通過這種方式,我們就不需要再額外設計一個RPN網絡,這正是YOLOv1作為單階段網絡的簡單快捷之處。 具體實現過程如下: ①. 將一副圖像分成 ②. 每個網格都要預測B個bounding box,每個bounding box要預測 ③. 每個網格還要預測一個類別信息,記為C個類。 ④. 總的來說, 在實際過程中,YOLOv1把一張圖片劃分為了7x7個網格,并且每個網格預測2個Box(Box1和Box2),20個類別。所以實際上,S=7,B=2,C=20。那么網絡輸出的shape也就是: (2)目標損失函數 損失由三部分組成,分別是:坐標預測損失、置信度預測損失、類別預測損失。
1.4 性能表現(1)優點
(2)局限性
2. YOLOv2(2016)(論文地址:https:///pdf/1612.08242.pdf#page=4.24) 2.1 改進部分YOLOv2Joseph Redmon和Ali Farhadi發表在CVPR 2017。它包括了對原始YOLO的一些改進,保持相同的速度,也更強大,能夠檢測9000個類別,這些改進有以下幾點: (1)在所有卷積層上的批量歸一化改善了收斂性,并作為一個正則器來減少過擬合; (2)高分辨率分類器,和YOLOv1一樣,他們在ImageNet以224x224的分辨率對模型進行了預訓練。然而,這一次,他們在分辨率為448x448的ImageNet上對模型進行了10次微調,提高了網絡在高分辨率輸入下的性能; (3)完全卷積。它們去掉了密集層,采用了全卷積架構。 (4)使用Anchor來預測邊界盒。他們使用一組先驗框Anchor,這些Anchor具有預定義的形狀,用于匹配物體的原型形狀,如圖6所示,每個網格單元都定義了多個Anchor,系統預測每個Anchor的坐標和類別。網絡輸出的大小與每個網格單元的Anchor數量成正比。 (5)維度聚類。挑選好的Anchor有助于網絡學習預測更準確的邊界盒。作者對訓練中的邊界盒進行了k-means聚類,以找到更好的先驗。他們選擇了五個Anchor,在召回率和模型復雜性之間進行了良好的權衡。 (6)直接預測位置。與其他預測偏移量的方法不同,YOLOv2遵循同樣的理念,預測了相對于網格單元的位置坐標,網絡為每個單元預測了五個bounding box,每個bounding box有五個值 (7)細粒度的特征。與YOLOv1相比,YOLOv2去掉了一個池化層,對于416x416的輸入圖像,得到13x13的特征圖。 (8)多尺度訓練。由于YOLOv2不使用全連接層,輸入可以是不同的尺寸。為了使YOLOv2對不同的輸入尺寸具有魯棒性,作者隨機訓練模型,每10批改變尺寸(從320x320到608x608)。 2.2 網絡結構YOLOv2 采用 Darknet-19 作為特征提取網絡,其整體結構如下: 改進后的YOLOv2:Darknet-19,總結如下: ①. 與VGG相似,使用了很多3x3卷積核;并且每一次池化后,下一層經過卷積之后的通道數=池化輸出的通道 x 2。 ②. 在每一層卷積后,都增加了BN層進行預處理。 ③. 采用了降維的思想,把1x1的卷積置于3x3之間,用來壓縮特征。 ④. 在網絡最后的輸出上增加了一個global average pooling層。 ⑤. 整體上采用了19個卷積層,5個池化層。 為了更好的說明,將Darknet-19與YOLOv1、VGG16網絡進行對比:
2.3 性能表現在VOC2007數據集上進行測試,YOLOv2在速度為67fps時,精度可以達到76.8的mAP;在速度為40fps時,精度可以達到78.6的mAP 。可以很好的在速度和精度之間進行權衡。下圖是YOLOv1在加入各種改進方法后,檢測性能的改變??梢娫诮涍^多種改進方法后,YOLOv2在原基礎上檢測精度具有很大的提升。 相對于YOLOv1而言,不足之處在于,沒有進行多尺度特征的結合預測,傳遞模塊(Pass-Through Module)的使用在提升細粒度特征的同時也對特征的空間,分布產生了一定影響,以及對小目標的檢測能力沒有明顯提升。 3. YOLOv3 (2018)(論文地址:https:///pdf/1804.02767.pdf) 3.1 模型介紹2018年,作者Redmon又在YOLOv2的基礎上做了一些改進。特征提取部分采用Darknet-53網絡結構代替原來的Darknet-19,利用特征金字塔網絡結構實現了多尺度檢測,分類方法使用邏輯回歸代替了softmax,在兼顧實用性的同時保證了目標檢測的準確性。 從YOLOv1到YOLOv3,每一代性能的提升都與backbone(骨干網絡)的改進密切相關。在YOLOv3中,作者不僅提供了darknet-53,還提供了輕量級的tiny-darknet。如果你想檢測精度與速度兼備,可以選擇darknet-53作為backbone;如果你想達到更快的檢測速度,精度方面可以妥協。那么tiny-darknet是你很好的選擇。總之,YOLOv3的靈活性使得它在實際工程中得到很多人的青睞。 3.2 網絡結構相比于 YOLOv2 的 骨干網絡,YOLOv3 進行了較大的改進。借助殘差網絡的思想,YOLOv3 將原來的 darknet-19 改進為darknet-53。論文中給出的整體結構如下: Darknet-53主要由1x1和3x3的卷積層組成,每個卷積層之后包含一個批量歸一化層和一個Leaky ReLU,加入這兩部分的目的是為了防止過擬合。卷積層、BN層以及LeakyReLU共同組成Darknet-53的基本CBL。因為在Darknet-53中共包含53個這樣的CBL,所以稱其為Darkent-53。 為了更加清晰地了解Darknet-53的網絡結構,可以看下面這張圖: (圖片來源:jiangdabai) 為了更好的理解此圖,下面對主要單元進行說明:
與Darknet-19相比,Darknet-53主要做了如下改進:
3.3 改進部分(1)輸入端
(2)主干網絡 YOLOv3的主干網絡Darknet-53包含卷積層(Convolutional Layer)、殘差層(Residual Layer)、特征融合層(Feature Fusion Layer),網絡層數的加深提高了檢測精度,大量殘差網絡模塊的引入減少了由網絡層數加深引起的梯度下降問題,金字塔池化模塊的引入可以實現多尺寸的輸入和統一尺寸的輸出。 (3)頸部網絡 YOLOv3的頸部網絡是FPN(多尺度檢測,特征融合),FPN(Feature Pyramid Network)是一種用于目標檢測和語義分割任務的特征金字塔網絡結構。它的設計目的是解決單尺度特征提取網絡在處理不同尺度目標時的困難。
(4)輸出端 YOLOv3在輸出的改進是多標簽預測(softmax函數變為logistics分類器)。在YOLOv1中,通常使用softmax函數作為分類器的激活函數,將每個類別的輸出轉化為概率分布。 然而,對于YOLOv3這樣的多標簽檢測任務,一個目標可能屬于多個類別,使用softmax函數會導致多個類別的概率之和超過1,不符合多標簽問題的要求。因此,在YOLOv3中,采用了logistic分類器作為分類器的激活函數。 logistic分類器將每個類別的輸出視為獨立的二分類問題,對每個類別使用sigmoid函數進行激活。sigmoid函數將輸出限制在0到1之間,表示每個類別的存在概率。 3.4 性能表現如下圖所示,是各種先進的目標檢測算法在COCO數據集上測試結果。很明顯,在滿足檢測精度差不都的情況下,YOLOv3具有更快的推理速度。 如下表所示,對不同的單階段和兩階段網絡進行了測試。通過對比發現,YOLOv3達到了與當前先進檢測器的同樣的水平。檢測精度最高的是單階段網絡RetinaNet,但是YOLOv3的推理速度比RetinaNet快得多。 4. YOLOv4(2020)(論文地址:https:///pdf/2004.10934.pdf) 4.1 模型介紹從YOLOv3后,YOLO沒有新版本。直到2020年4月,Alexey Bochkovskiy、Chien-Yao Wang和Hong-Yuan Mark Liao在ArXiv發布了YOLOv4[50]的論文。起初,不同的作者提出一個新的YOLO "官方 "版本讓人感覺很奇怪;然而,YOLOv4保持了相同的YOLO理念——實時、開源、端到端和DarkNet框架——而且改進非常令人滿意,社區迅速接受了這個版本作為官方的YOLOv4。 YOLOv4的獨特之處在于: 是一個高效而強大的目標檢測網絡。它使我們每個人都可以使用GTX 1080Ti 或2080Ti的GPU來訓練一個超快速和精確的目標檢測器。 在論文中,驗證了大量先進的技巧對目標檢測性能的影響。 對當前先進的目標檢測方法進行了改進,使之更有效,并且更適合在單GPU上訓練;這些改進包括CBN、PAN、SAM等。 4.2 網絡結構(圖片來源:jiangdabai) 先詳細介紹一下YOLOv4的基本組件:
YOLOv4 = CSPDarknet53(主干) + SPP附加模塊(頸) + PANet路徑聚合(頸) + YOLOv3(頭部) 4.3 改進部分(1)輸入端 無明顯變化。 (2)主干網絡
(3)頸部網絡
(4)輸出端 ?在YOLOv4中,確實引入了一種新的距離度量指標,稱為CIOU。 CIOU是一種改進的目標檢測損失函數,用于衡量預測框和真實框之間的距離。CIOU是DIoU的進一步擴展,除了考慮框的位置和形狀之間的距離外,還引入了一個附加的參數用于衡量框的長寬比例的一致性。 CIOU的計算公式如下: CIOU損失是通過最小化CIOU來優化目標檢測模型。它可以作為定位損失函數的一部分,用于衡量預測框的定位準確性。通過CIOU損失的引入,YOLOv4可以更好地優化邊界框的位置、形狀和長寬比例,從而提高目標檢測的準確性和魯棒性。 4.4 性能表現如下圖所示,在COCO目標檢測數據集上,對當前各種先進的目標檢測器進行了測試。可以發現,YOLOv4的檢測速度比EfficientDet快兩倍,性能相當。同時,將YOLOv3的AP和FPS分別提高10%和12%,吊打YOLOv3! 綜合以上分析,總結出YOLOv4帶給我們的優點有:
5. YOLOv5(2020)(代碼地址:https://github.com/ultralytics/yolov5) 5.1 模型介紹YOLOv5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四個版本。文件中,這幾個模型的結構基本一樣,不同的是depth_multiple模型深度和width_multiple模型寬度這兩個參數。就和我們買衣服的尺碼大小排序一樣,YOLOv5s網絡是YOLOv5系列中深度最小、特征圖的寬度最小的網絡。其他三種都是在此基礎上不斷加深,不斷加寬。 5.2 網絡結構(圖片來源:jiangdabai)
基本組件:
5.3 改進部分(1)輸入端 無明顯變化。 (2)主干網絡
(3)頸部網絡 無明顯變化。 (4)輸出端 無明顯變化。 5.4 性能表現在COCO數據集上,當輸入原圖的尺寸是:640x640時,YOLOv5的5個不同版本的模型的檢測數據如下: 在COCO數據集上,當輸入原圖的尺寸是:1280x1280時,YOLOv5的5個不同版本的模型的檢測數據如下: 從上表可得知,從YOLOv5n到YOLOv5x,這五個YOLOv5模型的檢測精度逐漸上升,檢測速度逐漸下降。根據項目要求,用戶可以選擇合適的模型,來實現精度與速度的最佳權衡! 6. YOLOX(2021)(論文地址:https:///pdf/2107.08430.pdf) (代碼地址:https://github.com/Megvii-BaseDetection/YOLOX?tab=readme-ov-file) 6.1 模型介紹YOLOX在YOLO系列的基礎上做了一系列的工作,其主要貢獻在于:在YOLOv3的基礎上,引入了Decoupled Head,Data Aug,Anchor Free和SimOTA樣本匹配的方法,構建了一種anchor-free的端到端目標檢測框架,并且達到了一流的檢測水平。 此外,本文提出的 YOLOX-L 模型在視頻感知挑戰賽(CVPR 2021年自動駕駛研討會)上獲得了第一名。作者還提供了支持ONNX、TensorRT、NCNN和Openvino的部署版本 為什么提出YOLOX: 目標檢測分為Anchor Based和Anchor Free兩種方式。 在Yolov3、Yolov4、Yolov5中,通常都是采用 Anchor Based的方式,來提取目標框。 Yolox 將 Anchor free 的方式引入到Yolo系列中,使用anchor free方法有如下好處:
假設feature map的尺度為80x80,anchor based方法在Feature Map上,每個單元格一般設置三個不同尺寸大小的錨框,因此產生3x80x80=19200個預測框。而使用anchor free的方法,僅產生80x80=6400個預測框,降低了計算量。
anchor free方法的預測框只有anchor based方法的1/3,而預測框中大部分是負樣本,因此anchor free方法可以減少負樣本數,進一步緩解了正負樣本不平衡問題。
anchor based方法的anchor box的尺度是一個超參數,不同的超參數設置會影響模型性能。anchor free方法避免了這一點。 6.2 網絡結構(圖片來源:jiangdabai)
6.3 改進部分
6.4 性能表現YOLOX的性能超越了YOLOV5,YOLOX-X的AP值達到了51.2,超過YOLOV5-X 0.8個百分點,此外模型推理速度和參數量都具有比較大的優勢。 7. YOLOv6(2022)(論文地址:https:///pdf/2209.02976.pdf) (代碼地址:https://github.com/meituan/YOLOv6/) 7.1 模型介紹YOLOv6于2022年9月由美團視覺人工智能部發布在ArXiv。與YOLOv4和YOLOv5類似,它為工業應用提供了各種不同尺寸的模型。跟隨基于錨點的方法的趨勢,YOLOv6采用了無錨點的檢測器。 YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet 搭建,采用了多分支的方式和殘差結構。對于 GPU 等硬件來說,這種結構會一定程度上增加延時,同時減小內存帶寬利用率。因此,YOLOv6對Backbone 和 Neck 都進行了重新設計,Head層沿用了YOLOX中的Decoupled Head并稍作修改。相當于YOLOv5而言,v6對網絡模型結構進行了大量的更改。 7.2 網絡結構(圖片來源:cainiaoxiaoqiao) 由上圖所示,從整體上看,YOLOv6的網絡結構與YOLOv4、YOLOv5是很相似的,尤其是backbone和neck部分,但是其中的實現模塊是有變化的;但最大的不同在于Head部分,采用的是YOLOX的hHead方式,將分類和回歸分為兩個支路,進行了解耦操作。 7.3 改進部分(1)輸入端 無錨框,取消了YOLOv1到YOLOv5一直沿用的錨框。 (2)主干網絡 YOLOv6的Backbone的實現的基本模塊為RVB1_X結構,其全程為RepVGGBlock_X,表示由多個RepVGGBlock組成。 RepVGGBlock是RepVGG網絡的重復模塊,由多個RepVGGConv模塊組成。每個RepVGGBlock由兩個RepVGGConv模塊組成,第一個RepVGGConv是一個3x3卷積操作,而第二個RepVGGConv是一個1x1卷積操作。 這兩個卷積模塊之間使用了批歸一BatchNorm)和ReLU激活函數。RepVGGConv模塊是RepVGG網絡中的基本卷積模塊,由一個卷積層、批歸一化和ReLU激活函數組成。這樣的設計使得RepVGGBlock具有較強的表達能力,并且可以適應不同的特征提取需求。 RepVGGBlock在RepVGG網絡中被重復堆疊多次,形成了深層的網絡結構。通過堆疊多個RepVGGBlock,可以提高網絡的表示能力和復雜度,從而實現更準確的特征提取和目標識別。 (3)頸部網絡 PANet結構類似更換為RepVGGBlock結構。 (4)輸出端 YOLOv6對檢測頭進行了解耦,分開了邊框與類別的分類過程。 7.4 性能表現YOLOv6 的檢測精度和速度均優于以前最先進的模型,同時設計了 8 種縮放模型為不同場景中的工業應用定制不同規模的網絡模型,可以檢測不同尺度的圖像從而提高檢測效果,其部署簡單、計算量較低,適用于實時檢測。并且支持在不同平臺上面的部署,簡化工程部署的適配工作。但檢測準確率其同時期的其他先進算法相比較低。 下表為與 COCO 2017 val 上其他 YOLO 系列的比較。FPS 和延遲是在使用 TensorRT 的 Tesla T4 上以 FP16 精確度測量的。我們的所有模型都在沒有預訓練或任何外部數據的情況下訓練了 300 個epoch。在輸入分辨率為 640×640 的情況下,我們對模型的準確性和速度性能進行了評估。'?'表示所提出的自蒸餾方法是傾斜化的。?"表示通過官方代碼發布的模型的重新評估結果。 8. YOLOv7(2022)(論文地址:https:///pdf/2207.02696.pdf) (代碼地址:https://github.com/WongKinYiu/yolov7) 8.1 模型介紹YOLOv7由YOLOv4和YOLOR的同一作者于2022年7月發表在ArXiv。當時,在5 FPS到160 FPS的范圍內,它的速度和準確度超過了所有已知的物體檢測器。與YOLOv4一樣,它只使用MS COCO數據集進行訓練,沒有預訓練的骨干。YOLOv7提出了一些架構上的變化和一系列的免費包,在不影響推理速度的情況下提高了準確率,只影響了訓練時間。 8.2 網絡結構首先對輸入的圖片 resize 為 640x640 大小,輸入到 backbone 網絡中,然后經 head 層網絡輸出三層不同 size 大小的 **feature map**,經過 Rep 和 conv輸出預測結果,這里以 coco 為例子,輸出為 80 個類別,然后每個輸出(x ,y, w, h, o) 即坐標位置和前后背景,3 是指的 anchor 數量,因此每一層的輸出為 (80+5)x3 = 255再乘上 feature map 的大小就是最終的輸出了。 8.3 改進部分(1)輸入端 與YOLOv5類似。 (2)主干網絡 Backbone為骨干網絡由CBS、ELAN、MP-1組成。
(3)頸部網絡 該網絡主要包括SPPCSPC、ELANW、UPSample三個子模塊和Cat結構,其中,SPPCSPC模塊用于提高特征提取的效率和準確率;ELANW模塊相比于ELAN模塊增加了兩個拼接操作;UPSample模塊用于實現不同層次特征的高效融合;Cat結構旨在進一步優化卷積層的效果。 (4)輸出端 與YOLOv6類似。檢測頭負責網絡最終的預測輸出,針對Neck處理后的特征信息進行解耦,采用重參數化模塊對Neck輸出的三種不同尺寸的特征進行通道數調整,再經過1x1的卷積操作,得出目標物體的位置、置信度和類別的預測。 8.4 性能表現??YOLOv7 算法提出了基于級聯的模型縮放策略從而生成不同尺寸的模型,減少參數量和計算量,可以進行實時目標檢測,在大數據集進行訓練檢測有較高精度且整體檢測性能有所提升。但是其網絡架構也相對復雜進行訓練測試需要大量計算資源,且對小目標和密集場景的檢測效果較差。 9. YOLOv8(2023)(代碼地址:https://github.com/ultralytics/ultralytics) 9.1 模型介紹YOLOv8 與YOLOv5出自同一個團隊,是一款前沿、最先進(SOTA)的模型,基于先前 YOLOv5版本的成功,引入了新功能和改進,進一步提升性能和靈活性。 YOLOv8是一種尖端的、最先進的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基礎上,并引入了新的功能和改進,以進一步提高性能和靈活性。YOLOv8 旨在快速、準確且易于使用,這也使其成為對象檢測、圖像分割和圖像分類任務的絕佳選擇。具體創新包括一個新的骨干網絡、一個新的 Ancher-Free 檢測頭和一個新的損失函數,還支持YOLO以往版本,方便不同版本切換和性能對比。 YOLOv8 有 5 個不同模型大小的預訓練模型:n、s、m、l 和 x。關注下面的參數個數和COCO mAP(準確率),可以看到準確率比YOLOv5有了很大的提升。特別是 l 和 x,它們是大模型尺寸,在減少參數數量的同時提高了精度。 9.2 網絡結構整體結構上與YOLOv5類似: CSPDarknet(主干) + PAN-FPN(頸) + Decoupled-Head(輸出頭部),但是在各模塊的細節上有一些改進,并且整體上是基于anchor-free的思想,這與yolov5也有著本質上的不同。 9.3 改進部分(1)輸入端 與YOLOv7類似。 (2)主干網絡 Backbone部分采用的結構為Darknet53,其中包括基本卷積單元Conv、實現局部特征和全局特征的Feature Map級別的融合的空間金字塔池化模塊SPPF、增加網絡的深度和感受野,提高特征提取能力的C2F模塊。 (3)頸部網絡 與YOLOv5類似。 (4)輸出端 在損失函數計算方面,采用了Task AlignedAssigner正樣本分配策略。由分類損失VFL(Varifocal Loss)和回歸損失CIOU(Complete-IOU)+DFL(Deep Feature Loss)兩部分的三個損失函數加權組合而成。 9.4 性能表現YOLOv8 的檢測、分割和姿態模型在 COCO 數據集上進行預訓練,而分類模型在 ImageNet 數據集上進行預訓練。在首次使用時,模型會自動從最新的 Ultralytics 發布版本中下載。 YOLOv8共提供了5中不同大小的模型選擇,方便開發者在性能和精度之前進行平衡。以下以YOLOv8的目標檢測模型為例: YOLOv8的分割模型也提供了5中不同大小的模型選擇: 從下圖我們可以看到,YOLOv8 在目標檢測和實例分割任務上的性能都很好:
(圖片來源:YOLOv8來了!) 10. YOLOv9(2024)(論文地址:https:///pdf/2402.13616.pdf) (代碼地址:https://github.com/WongKinYiu/yolov9) 10.1 模型介紹YOLOv9是原YOLOv7團隊打造,提出了可編程梯度信息(PGI)的概念來應對深度網絡實現多個目標所需的各種變化。 PGI可以為目標任務計算目標函數提供完整的輸入信息,從而獲得可靠的梯度信息來更新網絡權值。此外,還設計了一種新的輕量級網絡架構——基于梯度路徑規劃的通用高效層聚合網絡(GELAN)。 GELAN的架構證實了PGI在輕量級模型上取得了優異的結果。 10.2 網絡結構下圖展示了不同網絡架構的隨機初始權重輸出特征圖的可視化結果:(a) 輸入圖像,(b) PlainNet,(c) ResNet,(d) CSPNet,和 (e) 提議的GELAN。從這些可視化結果中,我們可以看出在不同的架構中,提供給目標函數用以計算損失的信息在不同程度上有所丟失,而提議的GELAN架構能夠保留最完整的信息,并為計算目標函數提供最可靠的梯度信息。 具體來說,輸入圖像(a)是原始未處理的圖像。接下來的四個圖像(b-e)分別展示了當這個輸入圖像通過不同的網絡架構時,在網絡的某一層上的特征圖。這些特征圖通過網絡層的權重隨機初始化得到,旨在展示網絡在處理數據時的特征提取能力。圖中的顏色變化代表特征的激活程度,激活程度越高,說明網絡對于圖像的某一部分特征越敏感。
10.3 主要貢獻
核心算法:(具體參考:http://t./1LWuY) (1)可編程梯度信息(PGI) 為了解決上述問題,論文提出了一種新的輔助監督框架,稱為可編程梯度信息(PGI),如圖3(d)所示。 PGI主要包括三個組成部分:主分支、輔助可逆分支、多級輔助信息。 從圖3(d)中我們可以看出,PGI的推理過程僅使用主分支,因此不需要任何額外的推理成本。至于其他兩個組件,它們僅用于訓練階段而不在推理階段,用于解決或減緩深度學習方法中的幾個重要問題:
(2)GELAN 通過結合采用梯度路徑規劃設計的兩種神經網絡架構CSPNet 和ELAN ,論文設計了兼顧輕量級、推理速度和準確性的廣義高效層聚合網絡(GELAN)。其整體架構如圖 4 所示。論文將最初僅使用卷積層堆疊的 ELAN 的功能推廣到可以使用任何計算塊的新架構。 10.4 性能表現我們基于YOLOv7和Dynamic YOLOv7分別構建了YOLOv9的通用和擴展版本。在網絡架構設計中,我們用GELAN替換了ELAN,GELAN使用CSPNet塊作為計算塊,并計劃采用RepConv。我們還簡化了下采樣模塊,并優化了無錨點的預測頭。至于PGI的輔助損失部分,我們完全遵循了YOLOv7的輔助頭設置。 如表1所示,與輕量級和中型模型YOLO MS相比,YOLOv9的參數減少了約10%,計算量減少了5~15%,但AP仍然有0.4~0.6%的提升。與 YOLOv7 AF 相比,YOLOv9-C 的參數減少了 42%,計算量減少了 22%,但達到了相同的 AP(53%)。與YOLOv8-X相比,YOLOv9-E參數減少16%,計算量減少27%,AP顯著提升1.7%。上述對比結果表明,論文提出的YOLOv9與現有方法相比在各方面都有顯著改進。 參考: https://www.cnblogs.com/cvlinke/p/16496988.html |
|