在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Yolov5算法解讀

jf_60870435 ? 來源:jf_60870435 ? 作者:jf_60870435 ? 2023-05-17 16:38 ? 次閱讀

yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不斷進行升級迭代。

Yolov5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四個版本。文件中,這幾個模型的結構基本一樣,不同的是depth_multiple模型深度和width_multiple模型寬度這兩個參數

yolov5主要分為輸入端,backbone,Neck,和head(prediction)。backbone是New CSP-Darknet53。Neck層為SPFF和New CSP-PAN。Head層為Yolov3 head。 yolov5 6.0版本的主要架構如下圖所示:

從整體結構圖中,我們可以看到Backbone,neck和head由不同的blocks構成,下面是對于這三個部分,逐一介紹各個blocks。

1. 輸入端:

YOLOv5在輸入端采用了Mosaic數據增強,參考了CutMix數據增強的方法,Mosaic數據增強由原來的兩張圖像提高到四張圖像進行拼接,并對圖像進行隨機縮放,隨機裁剪和隨機排列。使用數據增強可以改善數據集中,小、中、大目標數據不均衡的問題。

Mosaic數據增強的主要步驟為:1. Mosaic 2.Copy paste 3.Random affine(Scale, Translation and Shear) 4.Mixup 5.Albumentations 6. Augment HSV(Hue, Saturation, Value) 7. Random horizontal flip.

采用Mosaic數據增強的方式有幾個優點:1.豐富數據集:隨機使用4張圖像,隨機縮放后隨機拼接,增加很多小目標,大大豐富了數據集,提高了網絡的魯棒性。2.減少GPU占用:隨機拼接的方式讓一張圖像可以計算四張圖像的數據,減少每個batch的數量,即使只有一個GPU,也能得到較好的結果。3.同時通過對識別物體的裁剪,使模型根據局部特征識別物體,有助于被遮擋物體的檢測,從而提升了模型的檢測能力。

2.backbone

在Backbone中,有conv,C3,SPFF是我們需要闡明的。

2.1.Conv模塊
Conv卷積層由卷積,batch normalization和SiLu激活層組成。batch normalization具有防止過擬合,加速收斂的作用。SiLu激活函數是Sigmoid 加權線性組合,SiLU 函數也稱為 swish 函數。
公式:silu(x)=x?σ(x),where σ(x) is the logistic sigmoid. Silu函數處處可導,且連續光滑。Silu并非一個單調的函數,最大的缺點是計算量大。

2.2 C3模塊
C3其結構作用基本相同均為CSP架構,只是在修正單元的選擇上有所不同,其包含了3個標準卷積層,數量由配置文件yaml的n和depth_multiple參數乘積決定。該模塊是對殘差特征進行學習的主要模塊,其結構分為兩支,一支使用了上述指定多個Bottleneck堆疊,另一支僅經過一個基本卷積模塊,最后將兩支進行concat操作。
這個模塊相對于之前版本BottleneckCSP模塊不同的是,經歷過殘差輸出后的卷積模塊被去掉了,concat后的標準卷積模塊中的激活函數也為SiLU。

Bottleneck模塊借鑒了ResNet的殘差結構,其中一路先進行1 ×1卷積將特征圖的通道數減小一半,從而減少計算量,再通過3 ×3卷積提取特征,并且將通道數加倍,其輸入與輸出的通道數是不發生改變的。而另外一路通過shortcut進行殘差連接,與第一路的輸出特征圖相加,從而實現特征融合。
在YOLOv5的Backbone中的Bottleneck都默認使shortcut為True,而在Head中的Bottleneck都不使用shortcut。

2.3. SPPF模塊

SPPF由SPP改進而來,SPP先通過一個標準卷積模塊將輸入通道減半,然后分別做kernel-size為5,9,13的max pooling(對于不同的核大小,padding是自適應的)。對三次最大池化的結果與未進行池化操作的數據進行concat,最終合并后channel數是原來的2倍。

yolo的SPP借鑒了空間金字塔的思想,通過SPP模塊實現了局部特征和全部特征。經過局部特征與全矩特征相融合后,豐富了特征圖的表達能力,有利于待檢測圖像中目標大小差異較大的情況,對yolo這種復雜的多目標檢測的精度有很大的提升。

SPPF(Spatial Pyramid Pooling - Fast )使用3個5×5的最大池化,代替原來的5×5、9×9、13×13最大池化,多個小尺寸池化核級聯代替SPP模塊中單個大尺寸池化核,從而在保留原有功能,即融合不同感受野的特征圖,豐富特征圖的表達能力的情況下,進一步提高了運行速度。

3. Neck

在Neck部分,yolov5主要采用了PANet結構。

PANet在FPN(feature pyramid network)上提取網絡內特征層次結構,FPN中頂部信息流需要通過骨干網絡(Backbone)逐層地往下傳遞,由于層數相對較多,因此計算量比較大(a)。

PANet在FPN的基礎上又引入了一個自底向上(Bottom-up)的路徑。經過自頂向下(Top-down)的特征融合后,再進行自底向上(Bottom-up)的特征融合,這樣底層的位置信息也能夠傳遞到深層,從而增強多個尺度上的定位能力。

(a) FPN backbone. (b) Bottom-up path augmentation. (c) Adaptive feature pooling. (d) Box branch. (e) Fully-connected fusion.

4.Head

4.1 head

Head部分主要用于檢測目標,分別輸出20*20,40*40和80*80的特征圖大小,對應的是32*32,16*16和8*8像素的目標。

YOLOv5的Head對Neck中得到的不同尺度的特征圖分別通過1×1卷積將通道數擴展,擴展后的特征通道數為(類別數量+5)×每個檢測層上的anchor數量。其中5分別對應的是預測框的中心點橫坐標、縱坐標、寬度、高度和置信度,這里的置信度表示預測框的可信度,取值范圍為( 0 , 1 ) ,值越大說明該預測框中越有可能存在目標。
Head中的3個檢測層分別對應Neck中得到的3種不同尺寸的特征圖。特征圖上的每個網格都預設了3個不同寬高比的anchor,可以在特征圖的通道維度上保存所有基于anchor先驗框的位置信息和分類信息,用來預測和回歸目標。
4.2 目標框回歸

YOLOv5的目標框回歸計算公式如下所示:

其中(bx,by,bw,bh)表示預測框的中心點坐標、寬度和高度,(Cx, Cy)表示預測框中心點所在網格的左上角坐標,(tx,ty)表示預測框的中心點相對于網格左上角坐標的偏移量,(tw,th)表示預測框的寬高相對于anchor寬高的縮放比例,表示(pw,ph)先驗框anchor的寬高。
為了將預測框的中心點約束到當前網格中,使用Sigmoid函數處理偏移量,使預測的偏移值保持在(0,1)范圍內。這樣一來,根據目標框回歸計算公式,預測框中心點坐標的偏移量保持在(?0.5,1.5)范圍內,如上圖藍色區域所示。預測框的寬度和高度對于anchor的放縮范圍為(0,4)。

4.3 目標的建立

如上面所述,YOLOv5的每個檢測層上的每個網格都預設了多個anchor先驗框,但并不是每個網格中都存在目標,也并不是每個anchor都適合用來回歸當前目標,因此需要對這些anchor先驗框進行篩選,將其劃分為正樣本和負樣本。本文的正負樣本指的是預測框而不是Ground Truth(人工標注的真實框)。
與YOLOv3/4不同的是,YOLOv5采用的是基于寬高比例的匹配策略,它的大致流程如下:

1. 對于每一個Ground Truth(人工標注的真實框),分別計算它與9種不同anchor的寬與寬的比值(w1/w2, w2/w1)和高與高的比值(h1/h2, h2/h1)。



2. 找到Ground Truth與anchor的寬比(w1/w2, w2/w1)和高比(h1/h2, h2/h1)中的最大值,作為該Ground Truth和anchor的比值。
3. 若Ground Truth和anchor的比值r^max小于設定的比值閾值(超參數中默認為anchor_t = 4.0),那么這個anchor就負責預測這個Ground Truth,這個anchor所回歸得到的預測框就被稱為正樣本,剩余所有的預測框都是負樣本。


通過上述方法,YOLOv5不僅篩選了正負樣本,同時對于部分Ground Truth在單個尺度上匹配了多個anchor來進行預測,總體上增加了一定的正樣本數量。除此以外,YOLOv5還通過以下幾種方法增加正樣本的個數,從而加快收斂速度。

跨網格擴充: 如果某個Ground Truth的中心點落在某個檢測層上的某個網格中,除了中心點所在的網格之外,其左、上、右、下4個鄰域的網格中,靠近Ground Truth中心點的兩個網格中的anchor也會參與預測和回歸,即一個目標會由3個網格的anchor進行預測,如下圖所示。


跨分支擴充:YOLOv5的檢測頭包含了3個不同尺度的檢測層,每個檢測層上預設了3種不同長寬比的anchor,假設一個Ground Truth可以和不同尺度的檢測層上的anchor匹配,則這3個檢測層上所有符合條件的anchor都可以用來預測該Ground Truth,即一個目標可以由多個檢測層的多個anchor進行預測。

NMS non-maximum suppression

當我們得到對目標的預測后,一個目標通常會產生很多冗余的預測框。Non-maximum suppression(NMS)其核心思想在于抑制非極大值的目標,去除冗余,從而搜索出局部極大值的目標,找到最優值。

在我們對目標產生預測框后,往往會產生大量冗余的邊界框,因此我們需要去除位置準確率低的邊界框,保留位置準確率高的邊界框。NMS的主要步驟為:
1.對于每個種類的置信度按照從大到小的順序排序,選出置信度最高的邊框。

2.遍歷其余所有剩下的邊界框,計算這些邊界框與置信度最高的邊框的IOU值。如果某一邊界框和置信度最高的邊框IOU閾值大于我們所設定的IOU閾值,這意味著同一個物體被兩個重復的邊界框所預測,則去掉這這個邊框。

3.從未處理的邊框中再選擇一個置信度最高的值,重復第二步的過程,直到選出的邊框不再有與它超過IOU閾值的邊框。

5.損失函數
5.1 總損失

YOLOv5的損失主要由三個部分組成。分類損失,目標損失和定位損失。

Classes loss,分類損失,采用的是BCE loss,只計算正樣本的分類損失。

Objectness loss,置信度損失,采用的依然是BCE loss,指的是網絡預測的目標邊界框與GT Box的CIoU。這里計算的是所有樣本的損失。

Location loss,定位損失,采用的是CIoU loss,只計算正樣本的定位損失。

其中,lambda為平衡系數,分別為0.5,1和0.05。

5.2 定位損失 Location loss

IOU, intersection of Union交并比,它的作用是衡量目標檢測中預測框與真實框的重疊程度。假設預測框為A,真實框為B,則IoU的表達式為

但是當預測框與真實框沒有相交時,IoU不能反映兩者之間的距離,并且此時IoU損失為0,將會影響梯度回傳,從而導致無法訓練。此外,IoU無法精確的反映預測框與真實框的重合度大小。YOLOv5默認使用CIoU來計算邊界框損失。其中DIoU將預測框和真實框之間的距離,重疊率以及尺度等因素都考慮了進去,使得目標框回歸變得更加穩定。CIoU是在DIoU的基礎上,遵循與IoU相同的定義,進一步考慮了Bounding Box的寬和高的比。即將比較對象的形狀屬性編碼為區域(region)屬性;b)維持IoU的尺寸不變性;c) 在重疊對象的情況下確保與IoU的強相關性。

DIoU的損失函數為

其中b和b^gt 分別表示預測框和真實框的中心點,ρ表示兩個中心點之間的歐式距離,c表示預測框和真實框的最小閉包區域的對角線距離,gt是ground truth縮寫

如下圖所示:

CIoU是在DIoU的懲罰項基礎上添加了一個影響因子αv,這個因子將預測框的寬高比和真實框的寬高比考慮進去,即CIoU的損失計算公式為

其中α是權重參數,它的表達式為

v是用來衡量寬高比的一致性,它的表達式為

5.3 分類損失

YOLOv5默認使用二元交叉熵函數來計算分類損失。二元交叉熵函數的定義為

其中y為輸入樣本對應的標簽(正樣本為1,負樣本為0),p為模型預測該輸入樣本為正樣本的概率。假設,交叉熵函數的定義可簡化為

YOLOv5使用二元交叉熵損失函數計算類別概率和目標置信度得分的損失,各個標簽不是互斥的。YOLOv5使用多個獨立的邏輯(logistic)分類器替換softmax函數,以計算輸入屬于特定標簽的可能性。在計算分類損失進行訓練時,對每個標簽使用二元交叉熵損失。這也避免使用softmax函數而降低了計算復雜度。

5.4 置信度損失

每個預測框的置信度表示這個預測框的可靠程度,值越大表示該預測框越可靠,也表示越接近真實框。對于置信度標簽,YOLO之前的版本認為所有存在目標的網格(正樣本)對應的標簽值均為1,其余網格(負樣本)對應的標簽值為0。但是這樣帶來的問題是有些預測框可能只是在目標的周圍,而并不能精準預測框的位置。因此YOLOv5的做法是,根據網格對應的預測框與真實框的CIoU作為該預測框的置信度標簽。與計算分類損失一樣,YOLOv5默認使用二元交叉熵函數來計算置信度損失。

同時,對于目標損失,在不同的預測特征層也給予了不同權重。這些

在源碼中,針對預測小目標的預測特征層采用的權重是4.0,針對預測中等目標的預測特征層采用的權重是1.0,針對預測大目標的預測特征層采用的權重是0.4,作者說這是針對COCO數據集設置的超參數。


【以上信息由艾博檢測整理發布,如有出入請及時指正,如有引用請注明出處,歡迎一起討論,我們一直在關注其發展!專注:CCC/SRRC/CTA/運營商入庫】

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89579
  • 算法
    +關注

    關注

    23

    文章

    4630

    瀏覽量

    93356
  • 預測
    +關注

    關注

    0

    文章

    38

    瀏覽量

    12386
收藏 人收藏

    評論

    相關推薦

    YOLOv5】LabVIEW+YOLOv5快速實現實時物體識別(Object Detection)含源碼

    前面我們給大家介紹了基于LabVIEW+YOLOv3/YOLOv4的物體識別(對象檢測),今天接著上次的內容再來看看YOLOv5。本次主要是和大家分享使用LabVIEW快速實現yolov5
    的頭像 發表于 03-13 16:01 ?2249次閱讀

    YOLOv5】LabVIEW+TensorRT的yolov5部署實戰(含源碼)

    今天主要和大家分享在LabVIEW中使用純TensoRT工具包快速部署并實現yolov5的物體識別
    的頭像 發表于 08-21 22:20 ?1386次閱讀
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b>部署實戰(含源碼)

    在RK3568教學實驗箱上實現基于YOLOV5算法物體識別案例詳解

    一、實驗目的 本節視頻的目的是了解YOLOv5模型的用途及流程,并掌握基于YOLOV5算法實現物體識別的方法。 二、實驗原理 YOLO(You Only Look Once!) YOLOv5
    發表于 12-03 14:56

    龍哥手把手教你學視覺-深度學習YOLOV5

    步數的課程,希望學員學習后能在實際工業項目中落地應用。本次課程將重點講解《YOLOv5》篇,讓沒有任何深度學習基礎的小白學員,通過視頻課程能動手配置好yolov5環境,能利用自己的數據集訓練模型,能
    發表于 09-03 09:39

    怎樣使用PyTorch Hub去加載YOLOv5模型

    在Python>=3.7.0環境中安裝requirements.txt,包括PyTorch>=1.7。模型和數據集從最新的 YOLOv5版本自動下載。簡單示例此示例從
    發表于 07-22 16:02

    如何YOLOv5測試代碼?

    使用文檔“使用 YOLOv5 進行對象檢測”我試圖從文檔第 10 頁訪問以下鏈接(在 i.MX8MP 上部署 yolov5s 的步驟 - NXP 社區) ...但是這樣做時會被拒絕訪問。該文檔沒有說明需要特殊許可才能下載 test.zip 文件。NXP 的人可以提供有關如
    發表于 05-18 06:08

    yolov5模型onnx轉bmodel無法識別出結果如何解決?

    問題描述: 1. yolov5模型pt轉bmodel可以識別出結果。(轉化成功,結果正確) 2. yolov5模型pt轉onnx轉bmodel可以無法識別出結果。(轉化成功,結果沒有) 配置: 1.
    發表于 09-15 07:30

    基于YOLOv5的目標檢測文檔進行的時候出錯如何解決?

    你好: 按Milk-V Duo開發板實戰——基于YOLOv5的目標檢測 安裝好yolov5環境,在執行main.py的時候會出錯,能否幫忙看下 main.py: import torch
    發表于 09-18 07:47

    yolov5訓練部署全鏈路教程

    本教程針對目標檢測算法yolov5的訓練和部署到EASY-EAI-Nano(RV1126)進行說明。
    的頭像 發表于 01-05 18:00 ?3302次閱讀
    <b class='flag-5'>yolov5</b>訓練部署全鏈路教程

    在C++中使用OpenVINO工具包部署YOLOv5模型

    下載并轉換YOLOv5預訓練模型的詳細步驟,請參考:《基于OpenVINO?2022.2和蝰蛇峽谷優化并部署YOLOv5模型》,本文所使用的OpenVINO是2022.3 LTS版。
    的頭像 發表于 02-15 16:53 ?5265次閱讀

    使用旭日X3派的BPU部署Yolov5

    本次主要介紹在旭日x3的BPU中部署yolov5。首先在ubuntu20.04安裝yolov5,并運行yolov5并使用pytoch的pt模型文件轉ONNX。
    的頭像 發表于 04-26 14:20 ?969次閱讀
    使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>

    【教程】yolov5訓練部署全鏈路教程

    本教程針對目標檢測算法yolov5的訓練和部署到EASY-EAI-Nano(RV1126)進行說明,而數據標注方法可以參考我們往期的文章《Labelimg的安裝與使用》。
    的頭像 發表于 01-29 15:25 ?3544次閱讀
    【教程】<b class='flag-5'>yolov5</b>訓練部署全鏈路教程

    yolov5和YOLOX正負樣本分配策略

    整體上在正負樣本分配中,yolov7的策略算是yolov5和YOLOX的結合。因此本文先從yolov5和YOLOX正負樣本分配策略分析入手,后引入到YOLOv7的解析中。
    發表于 08-14 11:45 ?2352次閱讀
    <b class='flag-5'>yolov5</b>和YOLOX正負樣本分配策略

    YOLOv5網絡結構訓練策略詳解

    前面已經講過了Yolov5模型目標檢測和分類模型訓練流程,這一篇講解一下yolov5模型結構,數據增強,以及訓練策略。
    的頭像 發表于 09-11 11:15 ?2386次閱讀
    <b class='flag-5'>YOLOv5</b>網絡結構訓練策略詳解

    YOLOv5的原理、結構、特點和應用

    YOLOv5(You Only Look Once version 5)是一種基于深度學習的實時目標檢測算法,它屬于卷積神經網絡(CNN)的范疇。下面我將詳細介紹YOLOv5的原理、結
    的頭像 發表于 07-03 09:23 ?6901次閱讀
    主站蜘蛛池模板: 8888四色奇米在线观看不卡 | 欧美日韩国产一区二区 | 日日夜夜狠狠干 | 女人张开腿让男人捅爽 | seetube18日本第一次 | bt天堂bt在线网 | 四虎国产精品永久在线 | 人人艹人人艹 | 九九草在线观看 | 5月色婷婷| 日本在线视频不卡 | 精品啪啪| 在线观看播放视频www | 黄色一级毛片网站 | 天天看黄色 | 网红和老师啪啪对白清晰 | 在线播放一区二区精品产 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕av一区二区三区 | 国模张文静啪啪私拍337p | 欧美日a| 国产一级免费视频 | 一区二区三区免费视频播放器 | 啪啪啦资源站永久 | 午夜国产片 | 四虎永久在线日韩精品观看 | 人人干免费 | 萌白酱白丝护士服喷水铁牛tv | 成年色黄大色黄大片 视频 成年视频xxxxx免费播放软件 | 天天操夜| 亚洲综合情 | 黄色免费网站在线播放 | 亚洲成人网在线 | 人人免费人人专区 | 操一操干一干 | av2014天堂网| 男女交性高清视频无遮挡 | 亚洲毛片网站 | 婷婷激情小说 | 三级毛片免费 | 免费人成网站 |