国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測

這篇具有很好參考價值的文章主要介紹了深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

????????YOLO系列算法屬于基于回歸的單階段目標(biāo)檢測算法,它將定位與分類兩個任務(wù)整合成一個任務(wù),直接通過CNN網(wǎng)絡(luò)提取全局信息并預(yù)測圖片上的目標(biāo)。給目標(biāo)檢測算法提供了新的解決方案,并且圖片檢測速度準(zhǔn)確率與召回率達(dá)到實(shí)時檢測的要求。其中YOLOv1、YOLO2、YOLOv3是著名學(xué)者Redmon 在2016~2018年分別提出的,網(wǎng)絡(luò)深度逐漸增加的同時,檢測速度與召回率準(zhǔn)確率不斷提升。YOLOv4是俄羅斯學(xué)者Alexey在2020年4月份提出該算法繼承了YOLO3[1]的主干網(wǎng)絡(luò)是Darknet-53并融合了各個目標(biāo)檢測算法中先進(jìn)的結(jié)構(gòu)與技巧,YOLOv4融入了新的主干網(wǎng)絡(luò)CSPDarknet-53l以及數(shù)據(jù)增強(qiáng)技巧和余弦退火訓(xùn)練策略,是此前最先進(jìn)的目標(biāo)檢測算法之一。
????????Yolov5是一系列在COCO數(shù)據(jù)集上預(yù)先訓(xùn)練的對象檢測架構(gòu)和模型,最早于2020年五月提出,代表了uUliayics公司對未來視覺A方法的開源研究,結(jié)合了數(shù)千小時的研究和開發(fā)過程中學(xué)到的經(jīng)驗(yàn)教訓(xùn)和最佳實(shí)踐。
????????Yolov5官方代碼中,給出的目標(biāo)檢測網(wǎng)絡(luò)中一共有4個版本,分別是Yolov5s、Yolovsm、Yolov5l、Yolov5x四個模型。通過調(diào)節(jié)yaml文件中的depth_mutipe和width_multiple就能改變主干網(wǎng)絡(luò)中卷積的寬度和深度,進(jìn)而滿足不同群體對于不同性能的需求。其中Yolov5s模型最小,運(yùn)行最快,但檢測結(jié)果相對較差,而Yolov5x模型最大,運(yùn)行最慢,但檢測效果最佳。Yolov5中的檢測主干網(wǎng)絡(luò)新增了Focus結(jié)構(gòu),SiLU激活函數(shù),SPP結(jié)構(gòu)等等。如下圖所示。

網(wǎng)絡(luò)結(jié)構(gòu)

????????Yolov5的網(wǎng)絡(luò)結(jié)構(gòu)主要分為兩個部分。首先是主干網(wǎng)絡(luò),用于特征提取;其次是檢測網(wǎng)絡(luò),利用主干網(wǎng)絡(luò)接取到的有效特征,進(jìn)行特征的進(jìn)一步增強(qiáng)提取,最后得出分類和定位結(jié)果。
深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

網(wǎng)絡(luò)構(gòu)建

????????網(wǎng)絡(luò)的整體構(gòu)建主要分為Backbone,和Detect兩個部分。其中Backbone負(fù)責(zé)提取圖片的特征圖,而Detect部分負(fù)責(zé)繼續(xù)增強(qiáng)提煉特征并進(jìn)行目標(biāo)的分類和定位工作。

Backbone構(gòu)建

Backbone可以被稱作yolov5的主干特征提取網(wǎng)絡(luò),根據(jù)它的結(jié)構(gòu)以及之前Yolo主干的叫法,我一般叫它CSPDarknet,輸入的圖片首先會在CSPDarknet里面進(jìn)行特征提取,提取到的特征可以被稱作特征層,是輸入圖片的特征集合。在主干部分,我們獲取了三個特征層進(jìn)行下一步網(wǎng)絡(luò)的構(gòu)建,這三個特征層我稱它為有效特征層。
Backbone的結(jié)構(gòu)比較復(fù)雜,我們需要將其拆分講解,這里面包括了Conw模塊,Bottleneck模塊,BottleneckCSP模塊,SPP模塊,F(xiàn)ocus模塊。

主干網(wǎng)絡(luò) (Backbone)

????????下圖是主干網(wǎng)絡(luò),進(jìn)行特征提取獲得三個有效特征層。其中的核心組件是Conv模塊和C3模塊。C3模塊又是用多個Bottleneck模塊組成。Conv模塊中包含標(biāo)準(zhǔn)化和激活。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

主干網(wǎng)絡(luò)結(jié)構(gòu)圖?

????????Backbone的整體結(jié)構(gòu)如上圖所示,首先輸入的圖像數(shù)據(jù)經(jīng)過focus模塊進(jìn)行切片操作降低圖像的寬高,然后經(jīng)過多輪conv和C3以及一個SPP模塊進(jìn)一步壓縮特征圖的寬高,最終backbone的第5,7,10個模塊輸出的有效特征圖將被Detect部分利用到。

?核心組件

BottleneckCSP

BottleneckCSP是網(wǎng)絡(luò)的核心組件,它在兩個分支里都利用Conv提取特征后,在其中一個分支繼續(xù)使用n*個Botleneck模塊進(jìn)行特征抽象。之后將兩個分支concat之后進(jìn)行卷積。

?深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

?C3模塊結(jié)構(gòu)圖

Bottleneck模塊

????????Bottleneck模塊:標(biāo)準(zhǔn)Bottleneck模塊先將特征通道數(shù)減小再擴(kuò)大(默認(rèn)減小到一半),若需要shortcut操作,則不改變特征通道數(shù)直接將輸入和卷積層的輸出進(jìn)行相加。Botleneck是主干網(wǎng)絡(luò)中的重要組件,是一種類似于resnet中的殘差網(wǎng)絡(luò)結(jié)構(gòu)。這樣做的目的是為了保留部分原始特征,以免一些有意義的特征再網(wǎng)絡(luò)的特征提取階段被忽略。
?

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

?Bottleneck模塊結(jié)構(gòu)圖

Conv模塊

????????Conv模塊:該模塊定義了一個標(biāo)準(zhǔn)的卷積層,其中包含一個Conv2d,一個 BN層,以及一個SiLU(Swish)激活函數(shù)。Conv模塊是網(wǎng)絡(luò)的最基本組成部分,由于現(xiàn)階段的目標(biāo)檢測網(wǎng)絡(luò)深度大,為了防止梯度爆炸或者彌散現(xiàn)象的發(fā)生采取了各種措施,其中Yolov5中使用了Bn層和SiLu激活函數(shù)加以優(yōu)化。其中算法的前期主干網(wǎng)絡(luò)提取特征的部分,卷積的stride為2這樣做的目的是減小特征圖的大小,不斷抽象出有意義的特征的同時減少后續(xù)網(wǎng)絡(luò)的計(jì)算量。與之不同,網(wǎng)絡(luò)后期detect的部分卷積的stride為1,不再減小特征圖的尺寸。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

?Conv模塊結(jié)構(gòu)圖

????????下圖分別是Swish激活函數(shù)和SiLU激活函數(shù),SiLU函數(shù)是Swish激活函數(shù)的一種特殊情況,這類激活函數(shù)具備無上界有下界、平滑、非單調(diào)的特性,在深層模型上效果優(yōu)于ReLU。Swish激活函數(shù)的公式為f(x)=x *σ(βx ) ,SiLU激活函數(shù)的公式為f (x)=x * σ (x)

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

Swish激活函數(shù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SiLU激活函數(shù)?

Focus模塊?

????????Focus模塊,將輸出的每一個channel進(jìn)行切片后Concat到一起再使用一個標(biāo)準(zhǔn)卷積模塊進(jìn)行輸出。該模塊減小特征圖的長和寬,增加特征圖的深度,以保留各個位置的特征信息,該模塊可以取代步長為2的卷積操作來降低特征尺寸,減小模型計(jì)算量的同時,保留原始信息。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測
Focus模塊結(jié)構(gòu)圖

SPP模塊?

? ? ? ? SPP模塊,包含兩個標(biāo)準(zhǔn)卷積模塊和3個最大池化層。先使用一個標(biāo)準(zhǔn)卷積模塊將通道數(shù)減少,然后將其通過多個不同尺度最大池化層后,將其他與未池化的數(shù)據(jù)Concat到一起,再經(jīng)過一個標(biāo)準(zhǔn)卷積模塊將特征通道數(shù)進(jìn)行修正。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

?SPP模塊結(jié)構(gòu)圖

?檢測網(wǎng)絡(luò)

主要包含兩部分:
????????加強(qiáng)特征提取網(wǎng)絡(luò),在主干部分獲得的三個有效特征層會在這一部分進(jìn)行特征融合,特征融合的目的是結(jié)合不同尺度的特征信息。用于利用backbone提取出的不同深度的特征圖來在小中大三個尺度上對目標(biāo)進(jìn)行分類定位。
????????分類器與回歸器,即Yolo Head。通過主干網(wǎng)絡(luò)和加強(qiáng)特征提取網(wǎng)絡(luò),我們已經(jīng)可以獲得三個加強(qiáng)過的有效特征層。每一個特征層都有寬、高和通道數(shù),此時我們可以將特征圖看作一個又一個特征點(diǎn)的集合,每一個特征點(diǎn)都有通道數(shù)個特征。Yolo Head實(shí)際上所做的工作就是對特征點(diǎn)中的特征進(jìn)行分類和回歸,與以往版本的yolo算法相同,分類和回歸在一個1X1卷積里實(shí)現(xiàn)。

YOLO部分

?

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

????????這部分包含了backobone以及特征增強(qiáng)部分。其中特征增強(qiáng)網(wǎng)絡(luò)結(jié)構(gòu)如圖所示。首先通過backbone網(wǎng)絡(luò)提取出三種不同程度的特征圖feature_map1, feature_map2,feature map3。然后不僅會對特征進(jìn)行上采樣實(shí)現(xiàn)特征融合,還會對特征再次進(jìn)行下采樣實(shí)現(xiàn)特征融合。值得注意的是這里的下采樣使用的是stride為2的conv模塊進(jìn)行代替,這樣做的目的是可以最大程度保留特征圖的語義信息。

DetectionBlock模塊

????????DetectionBlock模塊用于將預(yù)測結(jié)果進(jìn)一步編碼到0到1之間以便計(jì)算損失或進(jìn)行結(jié)果預(yù)測,并按照需求進(jìn)行封裝。

損失函數(shù)

????????損失函數(shù)分為三個部分:
????????第一部分是CIOUloss,它將重疊面積、中心點(diǎn)距離、寬高比同時加入計(jì)算,反映正樣本和對應(yīng)真值框的位置關(guān)系和形狀大小契合程度,該部分越小代表著預(yù)測框的位置信息越準(zhǔn)確。
????????第二部分是置信度損失,計(jì)算所有正樣本置信度和對應(yīng)真值框的置信度標(biāo)簽的二值交叉嫡,以及所有負(fù)樣本的置信度和0之間的二值交叉熵并求和,置信度本身代表預(yù)測框中含有某種目標(biāo)物體并將其框準(zhǔn)的置信程度,置信度損失結(jié)果越小代表預(yù)測框的置信度結(jié)果越準(zhǔn)確。
????????第三部分是類別損失,計(jì)算正樣本和對應(yīng)真值框種類的二值交叉熵并求合,代表的是對于種類判斷的準(zhǔn)確程度,結(jié)果越小代表判斷的越準(zhǔn)確。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

?深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

????????yolov5使用CIOU loss來衡量矩形框的損失。它將重疊面積、中心點(diǎn)距離、寬高比同時加入了計(jì)算。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

損失函數(shù)計(jì)算
????????最終整個損失函數(shù)是將loss l, loss m, loss s三者加權(quán)相加得到整體的損朱函數(shù)后,再利用優(yōu)化器對網(wǎng)絡(luò)的模型參數(shù)進(jìn)行更新。
?

解碼過程

????????對于yolo系列算法來說,它的預(yù)測框都是根據(jù)anchor加上4個參數(shù)來映射到bounding box也就是預(yù)測框,那么具體的映射公式在每個版本的yolo算法都有些許變化,
????????對于給定的anchor而言,本身具有四個值來描述他的位置信息,c _x ,c y p _w p_h分別代表的是anchor默認(rèn)的中心點(diǎn)的橫縱坐標(biāo)和寬高尺寸。而每一個anchor網(wǎng)絡(luò)都會給四個值進(jìn)行預(yù)測,分別是t _x ,t_y ,t _w ,t_h,用于調(diào)整anchor的橫縱坐標(biāo)和寬高。具體公式如下:

?深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

????????????????????????????????????????????????????????????????????????????????????????????????????????????????預(yù)測框解碼示意圖?

????????下圖對比了yolov3和yolov5對于邊界框邊長預(yù)測輸出的解碼效果。yolov5在默認(rèn)放大系數(shù)為2的情況下最多能夠?qū)㈩A(yù)測框的邊長擴(kuò)大到anchor的4倍,而采用yolov3的方式則能夠預(yù)測到無窮大的邊界框,但是這種效果并不是我們期望的,因?yàn)閳D像本身的尺寸有限,多余的值域并不會帶來增益,反而會導(dǎo)致輸入端輕微的噪聲就能對輸出帶來巨大影響,不利于網(wǎng)絡(luò)訓(xùn)練。

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測?

解碼效果對比?

YOLOv5總體實(shí)現(xiàn)

????????包含了網(wǎng)絡(luò)的全部結(jié)構(gòu),其輸出為預(yù)測值的編碼結(jié)果。圖像首先經(jīng)過backoone網(wǎng)絡(luò)提取到三個有效特征層,然后經(jīng)過YOLO模塊得到三個特征增強(qiáng)有效特征層。最后利用detectionblock得到分類、定位的編碼結(jié)果。
?

模型訓(xùn)練

????????接下來進(jìn)行模型訓(xùn)練,yolov5模型訓(xùn)練可以分為:定義損失函數(shù)、優(yōu)化器以及加載預(yù)訓(xùn)練模型并進(jìn)行訓(xùn)練。

損失函數(shù)

????????通過YoloLossBlock模塊可以根據(jù)輸入的's' , 'm','l'對三個尺度的預(yù)測結(jié)果分別定義不同的損失函數(shù)。首先定義IOU模塊以及GIOU模塊。IOU實(shí)際上就是預(yù)測框與真實(shí)框的交并比值。IOU損失函數(shù)就是1-IOU,用來反映預(yù)測框與真實(shí)框的重合程度。

GIOU是IOU的升級版,想要計(jì)算GIOU,要經(jīng)過—下三個步驟:
(1)首先對于兩個需要計(jì)算IOU的對象A和B,找到一個最小的集合C能囊括A和B

(2)然后按照常規(guī)先計(jì)算A和B的IOU

(3)使用IOU減去{ (集合C中既不屬于A也不屬于B的部分)/集合C的總面積}

也就是說,GIOU最大只能和IOU相等,不會大于IOU,同時,其最小值也不會小于-1,當(dāng)且僅當(dāng)兩BOX a和b相隔很遠(yuǎn)且ICU為時才接近-1。由此可知,GiOU位于區(qū)間(-1,1]內(nèi)。這樣GIOU的大小就可以很好的衡量box的預(yù)測準(zhǔn)確與否,同時也解決了IOU為零時的優(yōu)化方向問題,使得GIOU盡可能大就好并且它也具有IOU原本的尺度不變性的優(yōu)點(diǎn)。


深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測

深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測,YOLO目標(biāo)檢測,人工智能前沿,深度學(xué)習(xí),YOLO,目標(biāo)檢測?

網(wǎng)絡(luò)訓(xùn)練前的基本設(shè)置

·選擇算法的版本包括s、m、l、x,這里使用s版本。
·定義優(yōu)化器,這里使用nn.Momentum優(yōu)化器,原理可以參考論文on the importance of initialization and momentum in deep learming
·對模型進(jìn)行初始化。
·對模型進(jìn)行預(yù)訓(xùn)練模型加載。
·完成數(shù)據(jù)集的加載。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-836992.html

到了這里,關(guān)于深度學(xué)習(xí)基礎(chǔ)——YOLOv5目標(biāo)檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包