日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【目标检测】yolo系列:从yolov1到yolov5之YOLOv3详解及复现

發(fā)布時(shí)間:2023/11/27 生活经验 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【目标检测】yolo系列:从yolov1到yolov5之YOLOv3详解及复现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在v1、v2的原理和技巧介紹之后,v3除了網(wǎng)絡(luò)結(jié)構(gòu),其余的改變并不多。本文著重描述yolov3的原理細(xì)節(jié)。

相關(guān)閱讀:
論文:YOLOv3: An Incremental Improvement
源碼:https://github.com/ultralytics/yolov3

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

1.1 backbone:Darknet-53

Yolov3使用Darknet-53作為整個(gè)網(wǎng)絡(luò)的分類骨干部分。backbone部分由Yolov2時(shí)期的Darknet-19進(jìn)化至Darknet-53,加深了網(wǎng)絡(luò)層數(shù),引入了Resnet中的跨層加和操作

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

借鑒Yolo三部曲解讀——Yolov3

主要結(jié)構(gòu)

Yolov3是一個(gè)全卷積網(wǎng)絡(luò),只有卷積層,大量使用殘差的跳層連接,并且為了降低池化帶來的梯度負(fù)面效果,作者直接摒棄了POOLing,通過調(diào)節(jié)卷積步長(zhǎng)控制輸出特征圖的尺寸,即用conv的stride來實(shí)現(xiàn)降采樣。所以對(duì)于輸入圖片尺寸沒有特別限制。

下圖流程圖中,輸入圖片以256??256??3作為樣例。

思想

Yolov3借鑒了金字塔特征圖思想,小尺寸特征圖用于檢測(cè)大尺寸物體,而大尺寸特征圖檢測(cè)小尺寸物體。特征圖的輸出維度為N??N??[3??(4+1+80)] ,N??N為輸出特征圖格點(diǎn)數(shù),一共3個(gè)Anchor框,每個(gè)框有4維預(yù)測(cè)框數(shù)值txt_xtx?, tyt_yty?, twt_wtw?, tht_hth?,1維預(yù)測(cè)框置信度,80維物體類別數(shù)。所以第一層特征圖的輸出維度為8??8??255。

輸出

Yolov3總共輸出3個(gè)特征圖,第一個(gè)特征圖下采樣32倍,第二個(gè)特征圖下采樣16倍,第三個(gè)下采樣8倍。輸入圖像經(jīng)過Darknet-53(無全連接層),再經(jīng)過Yoloblock生成的特征圖被當(dāng)作兩用,第一用為經(jīng)過33卷積層、11卷積之后生成特征圖一第二用為經(jīng)過1*1卷積層加上采樣層,與Darnet-53網(wǎng)絡(luò)的中間層輸出結(jié)果進(jìn)行拼接,產(chǎn)生特征圖二。同樣的循環(huán)之后產(chǎn)生特征圖三。

concat操作

concat操作與加和操作的區(qū)別

  • 加和操作來源于ResNet思想,將輸入的特征圖,與輸出特征圖對(duì)應(yīng)維度進(jìn)行相加,即 y = f(x) + x;
  • concat操作源于DenseNet網(wǎng)絡(luò)的設(shè)計(jì)思路,將特征圖按照通道維度直接進(jìn)行拼接,例如8??8??16的特征圖與8??8??16的特征圖拼接后生成8??8??32的特征圖。

上采樣層

上采樣層(upsample):作用是將小尺寸特征圖通過插值等方法,生成大尺寸圖像。例如使用最近鄰插值算法,將88的圖像變換為1616。上采樣層不改變特征圖的通道數(shù)。為了加強(qiáng)算法對(duì)小目標(biāo)檢測(cè)的精確度,YOLOv3中采用類似FPN的upsample和融合做法(最后融合了3個(gè)scale,其他兩個(gè)scale的大小分別是26×26和52×52),在多個(gè)scale的feature map上做檢測(cè)。

  • 縮小圖像(或稱為下采樣(subsampled),如池化)的主要目的有兩個(gè):使得圖像符合顯示區(qū)域的大小;生成對(duì)應(yīng)圖像的縮略圖。
  • 放大圖像(或稱為上采樣(upSampling)或圖像插值(interpolating))的主要目的是放大原圖像,從而可以顯示在更高分辨率的顯示設(shè)備上。

總結(jié):Yolo的整個(gè)網(wǎng)絡(luò),吸取了Resnet、Densenet、FPN的精髓,可以說是融合了目標(biāo)檢測(cè)當(dāng)前業(yè)界最有效的全部技巧。

2. Yolo輸出特征圖解碼(前向過程)

根據(jù)不同的輸入尺寸,會(huì)得到不同大小的輸出特征圖,以上圖為例,輸入圖片256 × 256 × 3為例,輸出的特征圖為8 × 8 × 255、16 × 16 × 255、32 × 32 × 255。在Yolov3的設(shè)計(jì)中,每個(gè)特征圖的每個(gè)格子中,都配置3個(gè)不同的先驗(yàn)框,所以最后三個(gè)特征圖,這里暫且reshape為8 × 8 × 3 × 85、16 × 16 × 3 × 85、32 × 32 × 3 × 85,這樣更容易理解,在代碼中也是reshape成這樣之后更容易操作。

三張?zhí)卣鲌D就是整個(gè)Yolo輸出的檢測(cè)結(jié)果,檢測(cè)框位置(4維)、檢測(cè)置信度(1維)、類別(80維)都在其中,加起來正好是85維。特征圖最后的維度85,代表的就是這些信息,而特征圖其他維度N × N × 3,N × N代表了檢測(cè)框的參考位置信息,3是3個(gè)不同尺度的先驗(yàn)框。下面詳細(xì)描述怎么將檢測(cè)信息解碼出來:

先驗(yàn)框

在Yolov1中,網(wǎng)絡(luò)直接回歸檢測(cè)框的寬、高,這樣效果有限。所以在Yolov2中,改為了回歸基于先驗(yàn)框的變化值,這樣網(wǎng)絡(luò)的學(xué)習(xí)難度降低,整體精度提升不小。
Yolov3沿用了Yolov2中關(guān)于先驗(yàn)框的技巧,并且使用k-means對(duì)數(shù)據(jù)集中的標(biāo)簽框進(jìn)行聚類,得到類別中心點(diǎn)的9個(gè)框,作為先驗(yàn)框。在COCO數(shù)據(jù)集中(原始圖片全部resize為416 × 416),九個(gè)框分別是 (10×13),(16×30),(33×23),(30×61),(62×45),(59× 119), (116 × 90), (156 × 198),(373 × 326) ,順序?yàn)閣 × h。

注:先驗(yàn)框只與檢測(cè)框的w、h有關(guān),與x、y無關(guān)。

檢測(cè)框解碼

有了先驗(yàn)框與輸出特征圖,就可以解碼檢測(cè)框 x,y,w,h。
bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=phethb_x = \sigma(t_x) + c_x \\ b_y = \sigma(t_y) + c_y \\ b_w = {p_w}e^{t_w} \\ b_h = {p_h}e^{t_h} bx?=σ(tx?)+cx?by?=σ(ty?)+cy?bw?=pw?etw?bh?=ph?eth?
如下圖所示, σ(tx),σ(ty)\sigma(t_x), \sigma(t_y)σ(tx?),σ(ty?) 是通過 Euler integral是基于矩形框中心點(diǎn)左上角格點(diǎn)坐標(biāo)的偏移量, sigma是激活函數(shù),論文中作者使用sigmoidpw,ph{p_w}, {p_h}pw?,ph? 是先驗(yàn)框的寬、高,通過上述公式,計(jì)算出實(shí)際預(yù)測(cè)框的寬高bw,bh{b_w}, {b_h}bw?,bh?et{e^t}et為采樣率。

置信度

置信度在輸出85維中占固定一位,由sigmoid函數(shù)解碼即可,解碼之后數(shù)值區(qū)間在[0,1]中。

類別解碼

COCO數(shù)據(jù)集有80個(gè)類別,所以類別數(shù)在85維輸出中占了80維,每一維獨(dú)立代表一個(gè)類別的置信度。使用sigmoid激活函數(shù)替代了Yolov2中的softmax,取消了類別之間的互斥,可以使網(wǎng)絡(luò)更加靈活。

三個(gè)特征圖一共可以解碼出 8 × 8 × 3 + 16 × 16 × 3 + 32 × 32 × 3 = 4032 個(gè)box以及相應(yīng)的類別、置信度。這4032個(gè)box,在訓(xùn)練和推理時(shí),使用方法不一樣:

  • 訓(xùn)練時(shí):4032個(gè)box全部送入打標(biāo)簽函數(shù),進(jìn)行后一步的標(biāo)簽以及損失函數(shù)的計(jì)算。
  • 推理時(shí):選取一個(gè)置信度閾值,取出每一類得分大于一定閾值的框和得分進(jìn)行排序,過濾掉低閾值box,利用框的位置和得分進(jìn)行經(jīng)過NMS(非極大值抑制),最后可以得出概率最大的邊界框,也就是整個(gè)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果了。

3. 訓(xùn)練策略與損失函數(shù)(反向過程)

訓(xùn)練策略

預(yù)測(cè)框一共分為三種情況:正例(positive)、負(fù)例(negative)、忽略樣例(ignore)

  • 正例:任取一個(gè)ground truth,與4032個(gè)框全部計(jì)算IOU,IOU最大的預(yù)測(cè)框,即為正例。并且一個(gè)預(yù)測(cè)框,只能分配給一個(gè)ground truth。例如第一個(gè)ground truth已經(jīng)匹配了一個(gè)正例檢測(cè)框,那么下一個(gè)ground truth,就在余下的4031個(gè)檢測(cè)框中,尋找IOU最大的檢測(cè)框作為正例。ground truth的先后順序可忽略。正例產(chǎn)生置信度loss、檢測(cè)框loss、類別loss。預(yù)測(cè)框?yàn)閷?duì)應(yīng)的ground truth box標(biāo)簽(需要反向編碼,使用真實(shí)的x、y、w、h計(jì)算出 [公式] );類別標(biāo)簽對(duì)應(yīng)類別為1,其余為0;置信度標(biāo)簽為1。
  • 忽略樣例:正例除外,與任意一個(gè)ground truth的IOU大于閾值(論文中使用0.5),則為忽略樣例。忽略樣例不產(chǎn)生任何loss。
  • 負(fù)例:正例除外(與ground truth計(jì)算后IOU最大的檢測(cè)框,但是IOU小于閾值,仍為正例),與全部ground truth的IOU都小于閾值(0.5),則為負(fù)例。負(fù)例只有置信度產(chǎn)生loss,置信度標(biāo)簽為0。

損失函數(shù)

YOLOv3重要改變之一:No more softmaxing the classes
YOLO v3現(xiàn)在對(duì)圖像中檢測(cè)到的對(duì)象執(zhí)行多標(biāo)簽分類

logistic回歸用于對(duì)anchor包圍的部分進(jìn)行一個(gè)目標(biāo)性評(píng)分(objectness score),即這塊位置是目標(biāo)的可能性有多大。這一步是在predict之前進(jìn)行的,可以去掉不必要anchor,可以減少計(jì)算量。

一些訓(xùn)練策略的解釋

1.ground truth為什么不按照中心點(diǎn)分配對(duì)應(yīng)的預(yù)測(cè)box?

在Yolov3的訓(xùn)練策略中,不再像Yolov1那樣,每個(gè)cell負(fù)責(zé)中心落在該cell中的ground truth。原因是Yolov3一共產(chǎn)生3個(gè)特征圖,3個(gè)特征圖上的cell,中心是有重合的。訓(xùn)練時(shí),可能最契合的是特征圖1的第3個(gè)box,但是推理的時(shí)候特征圖2的第1個(gè)box置信度最高。所以Yolov3的訓(xùn)練,不再按照ground truth中心點(diǎn),嚴(yán)格分配指定cell,而是根據(jù)預(yù)測(cè)值尋找IOU最大的預(yù)測(cè)框作為正例。

2.為什么有忽略樣例?

忽略樣例是Yolov3中的點(diǎn)睛之筆。由于Yolov3使用了多尺度特征圖,不同尺度的特征圖之間會(huì)有重合檢測(cè)部分。比如有一個(gè)真實(shí)物體,在訓(xùn)練時(shí)被分配到的檢測(cè)框是特征圖1的第三個(gè)box,IOU達(dá)0.98,此時(shí)恰好特征圖2的第一個(gè)box與該ground truth的IOU達(dá)0.95,也檢測(cè)到了該ground truth,如果此時(shí)給其置信度強(qiáng)行打0的標(biāo)簽,網(wǎng)絡(luò)學(xué)習(xí)效果會(huì)不理想.

參考文章:https://zhuanlan.zhihu.com/p/76802514

總結(jié)

以上是生活随笔為你收集整理的【目标检测】yolo系列:从yolov1到yolov5之YOLOv3详解及复现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。