一文詳解YOLOv5!記得收藏!
來(lái)源:投稿 作者:王同學(xué)
編輯:學(xué)姐

Yolov5詳解
官方源碼倉(cāng)庫(kù):https://github.com/ultralytics/yolov5
0 前言
截止到2022年7月,Yolov5項(xiàng)目已經(jīng)在Github上獲得了28000+個(gè)star,工業(yè)應(yīng)用也十分廣泛,基于Yolov5改進(jìn)的相關(guān)交叉學(xué)科論文也不計(jì)其數(shù),所以了解Yolov5對(duì)找工作還是發(fā)論文都是十分有幫助的。

本篇文章主要針對(duì)Yolov5?6.1版本進(jìn)行詳解
Yolov5提供了10個(gè)不同版本的模型,他們除網(wǎng)絡(luò)的深度和寬度外并無(wú)太大差別

1 網(wǎng)絡(luò)結(jié)構(gòu)
Yolov5主要由以下幾部分組成:
輸入端: Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算
Backbone: New CSP-Darknet53
Neck: SPPF, FPN+PAN
Head: YOLOv3 Head
訓(xùn)練策略:CIoU loss
2 輸入端
2.1 Mosaic數(shù)據(jù)增強(qiáng)
在 YOLOv5 中除了使用最基本的數(shù)據(jù)增強(qiáng)方法外,還使用了 Mosaic 數(shù)據(jù)增強(qiáng)方法,其主要思想就是將1- 4 張圖片進(jìn)行隨機(jī)裁剪、縮放后,再隨機(jī)排列拼接形成一張圖片,實(shí)現(xiàn)豐富數(shù)據(jù)集的同時(shí),增加了小樣本目標(biāo),提升網(wǎng)絡(luò)的訓(xùn)練速度。在進(jìn)行歸一化操作時(shí)會(huì)一次性計(jì)算 4 張圖片的數(shù)據(jù),因此模型對(duì)內(nèi)存的需求降低。

2.2自適應(yīng)錨框計(jì)算
Yolov5每次訓(xùn)練時(shí)會(huì)自適應(yīng)的計(jì)算不同訓(xùn)練集中的最佳錨框值,從而幫助網(wǎng)絡(luò)更快的收斂。

3 Backbone
Yolov5在Backbone和Neck中用了兩種不同的CSP結(jié)構(gòu),具體可參考下圖-Yolov5網(wǎng)絡(luò)結(jié)構(gòu)圖

4 Neck
和Yolov4中一樣,都采用FPN+PAN的結(jié)構(gòu);即除了上采樣外,又增加了一部分下采樣模塊,通過(guò)這種方式可以融合更加豐富的特征

5 Head
在檢測(cè)頭方面依然采用Yolov3的檢測(cè)頭,并沒(méi)有特別的改進(jìn)
6 主要訓(xùn)練策略
CIoU loss:在DIoU的基礎(chǔ)上增加了檢測(cè)框尺度的loss,增加了長(zhǎng)和寬的loss,這樣預(yù)測(cè)框就會(huì)更加的符合真實(shí)框
Multi-scale training(0.5~1.5x):多尺度訓(xùn)練。
Warmup and Cosine LR scheduler:訓(xùn)練前先進(jìn)行Warmup熱身,然后在采用Cosine學(xué)習(xí)率下降策略。
Mixed precision:混合精度訓(xùn)練,能夠減少顯存的占用并且加快訓(xùn)練速度。
7 損失計(jì)算
YOLOv5的損失主要由三個(gè)部分組成:
Classes loss,分類(lèi)損失,采用的是BCE loss,注意只計(jì)算正樣本的分類(lèi)損失。?
Objectness loss,obj損失,采用的依然是BCE loss,注意這里的obj指的是網(wǎng)絡(luò)預(yù)測(cè)的目標(biāo)邊界框與GT Box的CIoU。這里計(jì)算的是所有樣本的obj損失。?
Location loss,定位損失,采用的是CIoU loss,注意只計(jì)算正樣本的定位損失。

在源碼中,針對(duì)預(yù)測(cè)小目標(biāo)的預(yù)測(cè)特征層(P3)采用的權(quán)重是4.0,針對(duì)預(yù)測(cè)中等目標(biāo)的預(yù)測(cè)特征層(P4)采用的權(quán)重是1.0,針對(duì)預(yù)測(cè)大目標(biāo)的預(yù)測(cè)特征層(P5)采用的權(quán)重是0.4,作者說(shuō)這是針對(duì)COCO數(shù)據(jù)集設(shè)置的超參數(shù)。

最后附上一張Yolov5的性能圖,和實(shí)際檢測(cè)效果圖(yolov5s);

YOLO目前已經(jīng)迭代到y(tǒng)olov8了,不過(guò)想要入門(mén),還得要從yolov1開(kāi)始學(xué)起
看下面↓↓,給你們準(zhǔn)備了學(xué)習(xí)資料啦
關(guān)注【學(xué)姐帶你玩AI】公眾號(hào)
回復(fù)“YOLO”獲取論文&代碼數(shù)據(jù)集