<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          YOLO v4:物體檢測的最佳速度和精度

          共 6117字,需瀏覽 13分鐘

           ·

          2020-08-03 20:23


          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達


          您只需看一次(YOLO)是快速、準確的單階段目標檢測器。最近發(fā)布的YOLO v4與其他目標檢測器相比,顯示出非常好的結(jié)果。


          1 介紹


          當今大多數(shù)精確模型都需要使用許多GPU進行大mini-batch的訓練,使用單GPU訓練實際上會使訓練變得緩慢且不切實際。YOLO v4目標檢測器可以在具有較小mini-batch批處理大小的單GPU上進行訓練,使得使用單1080 Ti或2080 Ti GPU訓練出超快速和精確的目標檢測器成為可能。


          YOLO v4在MS COCO數(shù)據(jù)集上實現(xiàn)了實時檢測的最優(yōu)表現(xiàn),在Tesla V100上以65 FPS運行,AP達到43.5%。為了獲得這些結(jié)果,YOLO v4結(jié)合了一些功能,例如加權(quán)殘差連接(WRC)、跨階段部分連接(CSP)、交叉小批量標準化(CmBN)、自對抗訓練(SAT)和Mish激活,Mosaic數(shù)據(jù)增強,DropBlock正則化和CIoU損失。稍后將討論這些功能。


          將YOLOv3的AP和FPS分別提高10%和12%[5](淺藍色區(qū)域的模型被視為實時目標檢測器


          可以看出,EfficientDet D4-D3比YOLO v4具有更好的AP,但是它們在V100 GPU上的運行速度低于30 FPS。另一方面,YOLO能以更高的速度(> 60 FPS)和非常好的精度運行。


          2.目標檢測器一般架構(gòu)


          盡管YOLO是單階段目標檢測器,但也有兩階段目標檢測器,如R-CNN、Fast R-CNN和Faster R-CNN,它們準確但速度慢。我們將專注于單階段目標檢測器,讓我們來看看單階段目標檢測器的主要組件:


          2.1 骨干


          骨干網(wǎng)絡(luò),如ResNet、DenseNetVGG等,被用作特征提取器,它們在圖像分類數(shù)據(jù)集(如ImageNet)上進行了預訓練,然后在檢測數(shù)據(jù)集上進行了微調(diào)。事實證明,這些骨干網(wǎng)絡(luò)隨著層數(shù)的加深能產(chǎn)生具有更高語義的不同級別的特征,對之后的目標檢測發(fā)揮很大作用。


          2.2 頸部


          頸部在骨干和頭部之間的額外層,用于提取骨干網(wǎng)絡(luò)不同階段的不同特征圖,如FPN [1]、PANet[2]、Bi-FPN[3]。YOLO v3使用FPN從主干中提取不同比例的特征。


          什么是特征金字塔網(wǎng)絡(luò)(FPN)?

          通過自上而下的路徑和橫向連接來增強標準卷積網(wǎng)絡(luò),因此該網(wǎng)絡(luò)可以有效地從單分辨率輸入圖像構(gòu)造出豐富的多尺度特征金字塔[4]。

          特征金字塔[1]網(wǎng)絡(luò)用于目標檢測


          (1)每個橫向連接將特征圖從下至上的路徑合并到自上而下的路徑,從而生成不同的金字塔層,在合并特征圖之前,對先前的金字塔層進行2倍上采樣,使兩個特征圖具有相同的空間分辨率大小。

          (2)然后將分類/回歸網(wǎng)絡(luò)(頭部)應(yīng)用于金字塔的每個層,以幫助檢測不同大小的目標。特征金字塔可以應(yīng)用于不同的骨干模型,例如最初的FPN[1]論文使用ResNets,還有許多以不同方式集成FPN的模塊,例如SFAM[7]、ASFF[9]和Bi-FPN[3]。


          四種類型的特征金字塔。


          圖像(a)顯示了如何在Single Shot Detector體系結(jié)構(gòu)(SSD)中從主干中提取特征,上圖還展示了其他三種不同類型的金字塔網(wǎng)絡(luò),它們背后的思想與它們的目的相同:緩解目標實例之間比例變化引起的問題[3]。


          2.3 頭部


          實際負責執(zhí)行邊界框檢測(分類和回歸)的網(wǎng)絡(luò)

          輸出(取決于實現(xiàn)方式):1)4個值描述了預測的邊界框(x,y,h,w);2)k類的概率+ 1(背景額外一個)。

          像YOLO一樣,基于anchor的目標探測器也將頭部應(yīng)用于每個anchor box,其他流行的基于anchor的單階段檢測器包括:Single Shot Detector[6]和RetinaNet[4]。


          下圖結(jié)合了上述三個模塊:



          3.BoF&BoS


          YOLO v4論文的作者[5]區(qū)分了用于提高目標檢測器精度的兩類方法,分析了這兩種類別中的不同方法,以實現(xiàn)具有良好準確性的快速運行的神經(jīng)網(wǎng)絡(luò),這兩個類別是:


          3.1 Bag of freebies(BOF)


          定義:僅改變訓練策略或僅增加訓練成本[5],使目標檢測器獲得更準確性而又不增加推理成本。


          (1)數(shù)據(jù)增強:可以提高模型的泛化能力??梢赃M行光度畸變?nèi)纾赫{(diào)整亮度、飽和度、對比度和噪點,或者對圖像進行幾何變形,例如圖像旋轉(zhuǎn)、裁剪等。這些技術(shù)都是BoF的明顯示例,有助于提升檢測器的準確性。

          幾何變形示例對于對象檢測任務(wù),邊界框也應(yīng)用相同的轉(zhuǎn)換


          其他有趣的技術(shù)可以增強圖像:1)CutOut[8]可以在訓練過程中隨機掩蓋輸入的正方形區(qū)域,可以提高CNN的魯棒性和性能。2)類似地隨機擦除[10]選擇圖像中的矩形區(qū)域并使用隨機值擦除其像素。

          用于目標檢測的隨機擦除示例


          2避免過度擬合的正則化技術(shù)如DropOut、DropConnect和DropBlock?[13]。最后一個實際上在CNN中表現(xiàn)出非常好的結(jié)果,并用于YOLO v4主干中。

          來自DropBlock論文


          (3)回歸網(wǎng)絡(luò)的損失函數(shù)傳統(tǒng)的做法是應(yīng)用均方誤差對坐標進行回歸,如本文所述將這些點視為獨立變量,但未考慮對象本身的完整性。

          IoU [12]損失:考慮了預測邊界框(BBox)和真實邊界框的面積。

          GIoU[11]損失考慮覆蓋區(qū)域之外,考慮了對象的形狀、方向、重疊區(qū)域中心點之間的距離和寬高比。YOLO v4使用CIoU損失作為邊界框的損失,主要是因為與上述提到的其他損失相比,它導致更快的收斂和更好的性能。


          注意:可能引起混亂的一件事是,盡管許多模型將MSE用于BBox回歸損失,但它們使用IoU作為度量標準,而不是如上所述的損失函數(shù)。下圖比較了具有不同IoU損耗的相同模型:

          損失比較


          上述檢測來自Faster R-CNN(Ren等人,2015),該數(shù)據(jù)在相同的MS COCO數(shù)據(jù)集上訓練,并帶有GIoU和CIoU損失??梢宰⒁獾紺IoU的性能要優(yōu)于GIoU。


          3.2? Bag of specials(BOS)


          定義:僅會增加少量推理成本,但可以顯著提升目標檢測器準確性的插件模塊和后處理方法[5]。此類模塊/方法通常包括:引入注意力機制(SE模塊與SAM模塊)、擴大模型感受野范圍并增強特征集成能力等。


          (1)引入注意力機制:主要是channel-wise注意力(如擠壓與激勵模塊SE)和point-wise注意力(如空間注意力模塊SAM)。YOLO v4選擇了空間注意力模塊SAM,但與該模塊最初發(fā)布版本不完全相同,請注意以下幾點:

          原始空間注意模塊[16]

          原始SAM給定一個特征圖F'沿通道執(zhí)行平均池和最大池操作,將它們串聯(lián)起來然后應(yīng)用卷積層(包含S型激活函數(shù))生成注意力圖(Ms),并將其應(yīng)用于原始F'。


          YOLO v4修改的空間注意模塊來源[5]


          YOLO v4修改的SAM:不應(yīng)用最大池化和平均池化,而是F'通過卷積層(包含S型激活函數(shù))得到的結(jié)果與原始特征圖(F')相乘。


          (2)改善感受野:常用模塊是SPP,ASPPRFBYOLO v4使用SPP)。早先討論過的特征金字塔(如SFAM[7],ASFF[9]和Bi-FPN[3])也屬于BoS。


          (3)激活函數(shù)ReLU問世以來,它已經(jīng)有很多變體,如LReLU、PReLU和ReLU6。ReLU6和hard-Swish之類的激活函數(shù)是專門為壓縮網(wǎng)絡(luò)設(shè)計(用于嵌入式設(shè)備),如Google Coral Edge TPU。YOLO v4 在主干中使用了很多Mish [14]激活函數(shù):

          來源[14?]


          事實證明該激活函數(shù)顯示出非常好的結(jié)果。如與使用Swish或ReLU激活函數(shù)的Squeeze Excite網(wǎng)絡(luò)(CIFAR-100數(shù)據(jù)集)Mish激活函數(shù)分別使得測試精度提升0.494%、1.671%[14]。

          其他一些圖形化的激活函數(shù)參考:https://www.desmos.com/calculator/rhx5tl8ygi


          4.YOLO v4設(shè)計


          已經(jīng)討論了用于提高模型精度和目標檢測器不同部分(骨干、頸部、頭部)的方法?,F(xiàn)在我們討論一下YOLO中使用的內(nèi)容。


          (1)骨干:CSPDarknet53用作GPU版本的特征提取網(wǎng)絡(luò)。對于VPU(視覺處理單元),他們考慮使用EfficientNet-lite — MixNet — GhostNet或MobileNetV3。我們重點介紹GPU版本。


          下表顯示了適用于GPU版本的不同候選的主干

          來源[5]

          某些主干檢測相比更適合分類。對于檢測CSPDarknet53優(yōu)于CSPResNext50,對于圖像分類,CSPResNext50優(yōu)于CSPDarknet53。如本文所述用于目標檢測的骨干模型需要更大的輸入網(wǎng)絡(luò)大小以便對小目標也能進行更好的檢測)、更多的層(得到更大的感受野)。


          (2)頸部使用空間金字塔池(SPP)和路徑聚合網(wǎng)絡(luò)(PAN)

          路徑聚合網(wǎng)絡(luò)(PAN)與原始PAN不同,修改后的版本用concat代替addition操作,如下圖

          來源[5]

          最初PAN將N4的尺寸減小到與P5相同的空間尺寸后,將這種縮小N4與P5?相加,所有Pi+ 1和Ni上重復此操作。在YOLO v4中,不是將Pi+1?和Ni加起來,而是concatenate連接起來(如上圖所示)。

          路徑聚合網(wǎng)絡(luò)(PAN)源[2]


          空間金字塔池(SPP)使用不同的核大小k =?{5,9,13}、same填充在19 * 19 * 512特征圖上執(zhí)行最大池化,然后將四個對應(yīng)的特征圖連接起來形成19 * 19 * 2048的特征圖,這增加了頸部的感受野,在推理時間可以忽略不計的情況下提高了模型準確性。

          在yolov4.cfg中觀察到的SPP

          如果您想可視化顯示?yolo中使用的不同層如上圖所示,建議使用https://github.com/lutzroeder/netron(可以使用Web /桌面版本),然后使用它打開yolov4.cfg


          (3)頭部:用法與YOLO v3相同。

          應(yīng)用在不同尺度的YOLO頭部


          部應(yīng)用在網(wǎng)絡(luò)不同尺度特征圖,用于檢測大小不同的物體通道數(shù)為255,因為(80個類別?+ 1個對象?+ 4個坐標)* 3個錨點。


          5. BoF&BoS使用總結(jié)


          和YOLO v4檢測器中使用的BoF和BoS的不同模塊/方法可以總結(jié)如下:


          6. 其他改進


          (1)使用Mosaic的數(shù)據(jù)增強新方法將訓練數(shù)據(jù)集的4張圖像合并為1張圖像:批量歸一化從每層的4張不同的圖像計算激活統(tǒng)計信息[5],因此極大地減少了選擇大型mini-batch批量進行訓練的需求。

          來自[5]的Mosaic數(shù)據(jù)增強

          示例:用于車牌檢測的Mosaic增強


          (2)使用自對抗訓練(SAT):該訓練分為兩個階段,第一階段:神經(jīng)網(wǎng)絡(luò)更改原始圖像,而不是網(wǎng)絡(luò)權(quán)重,以這種方式神經(jīng)網(wǎng)絡(luò)對其自身執(zhí)行對抗攻擊,從而改變原始圖像以產(chǎn)生對圖像上沒有所需物體的欺騙。第二階段:訓練神經(jīng)網(wǎng)絡(luò)以正常方式檢測此修改圖像上的對象。[5]


          7.?Colab Demo


          我制作了一個Colab,您可以在自己的視頻中測試YOLO v4及其微型版本,它使用了在MS COCO上訓練的模型。地址為:https://colab.research.google.com/drive/1PuI9bYeM8O1OA82pI12oGopRJJrLWfs9?usp=sharing


          8. 結(jié)論


          更多詳細信息參考https://arxiv.org/abs/2004.10934。如果您想在自己的數(shù)據(jù)集上進行訓練,請查看官方倉庫https://github.com/AlexeyAB/darknet。


          YOLO v4達到了用于實時目檢測的最新結(jié)果(AP為43.5%),并且能夠在V100 GPU上以65 FPS的速度運行。如果您想降低精度但要提高FPS,請在官方倉庫中查看新的Yolo v4 Tiny版本https://github.com/AlexeyAB/darknet。


          參考


          [1]?Feature Pyramid Networks for Object Detection

          [2]?Path Aggregation Network for Instance Segmentation

          [3]?EfficientDet: Scalable and Efficient Object Detection

          [4]?Focal Loss for Dense Object Detection

          [5]?YOLOv4: Optimal Speed and Accuracy of Object Detection

          [6]?Single Shot MultiBox Detector (SSD)

          [7]?A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

          [8]?Improved Regularization of Convolutional Neural Networks with Cutout

          [9]?Learning Spatial Fusion for Single-Shot Object Detection

          [10]?Random Erasing Data Augmentation

          [11]?Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression

          [12]?UnitBox: An Advanced Object Detection Network

          [13]?DropBlock: A regularization method for convolutional networks

          [14]?Mish: A Self Regularized Non-Monotonic Neural Activation Function

          [15]?Squeeze-and-Excitation Networks

          [16]?CBAM: Convolutional Block Attention Module



          流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~



          瀏覽 84
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜精品久久99热蜜桃剧情介绍 | 人人透人人摸 | 国产精品免费在线 | 伊人影院99 | 亚洲视频观看免费 |