久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

目標(biāo)檢測(cè)網(wǎng)絡(luò)之 YOLOv3

 Rainbow_Heaven 2018-04-04

yolo-idea nooverfit.com/wp/wp-content/uploads/2017/07/QQ%E6%88%AA%E5%9B%BE20170713150015.png

本文逐步介紹YOLO v1~v3的設(shè)計(jì)歷程。

YOLOv1基本思想

YOLO將輸入圖像分成SxS個(gè)格子,,若某個(gè)物體 Ground truth 的中心位置的坐標(biāo)落入到某個(gè)格子,那么這個(gè)格子就負(fù)責(zé)檢測(cè)出這個(gè)物體,。

yolo-grid-predict pic1.zhimg.com/v2-4b3c159386ae24809aa6721cf307df30_b.png

每個(gè)格子預(yù)測(cè)B個(gè)bounding box及其置信度(confidence score),以及C個(gè)類別概率,。bbox信息(x,y,w,h)為物體的中心位置相對(duì)格子位置的偏移及寬度和高度,均被歸一化.置信度反映是否包含物體以及包含物體情況下位置的準(zhǔn)確性,定義為Pr(Object)×IOUtruthpred,Pr(Object){0,1}.

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

YOLOv1網(wǎng)絡(luò)借鑒了GoogLeNet分類網(wǎng)絡(luò)結(jié)構(gòu),。不同的是,YOLO未使用inception module,,而是使用1x1卷積層(此處1x1卷積層的存在是為了跨通道信息整合)+3x3卷積層簡(jiǎn)單替代,。
YOLOv1網(wǎng)絡(luò)在最后使用全連接層進(jìn)行類別輸出,因此全連接層的輸出維度是 S×S×(B×5+C),。
YOLOv1網(wǎng)絡(luò)比VGG16快(浮點(diǎn)數(shù)少于VGG的1/3),準(zhǔn)確率稍差,。

缺餡:

  • 輸入尺寸固定:由于輸出層為全連接層,因此在檢測(cè)時(shí),,YOLO訓(xùn)練模型只支持與訓(xùn)練圖像相同的輸入分辨率,。其它分辨率需要縮放成改分辨率.

  • 占比較小的目標(biāo)檢測(cè)效果不好.雖然每個(gè)格子可以預(yù)測(cè)B個(gè)bounding box,但是最終只選擇只選擇IOU最高的bounding box作為物體檢測(cè)輸出,,即每個(gè)格子最多只預(yù)測(cè)出一個(gè)物體,。當(dāng)物體占畫面比例較小,如圖像中包含畜群或鳥群時(shí),,每個(gè)格子包含多個(gè)物體,,但卻只能檢測(cè)出其中一個(gè)。

損失函數(shù)

YOLO全部使用了均方和誤差作為loss函數(shù).由三部分組成:坐標(biāo)誤差,、IOU誤差和分類誤差,。
loss=s2i=0coordErr+iouErr+clsErr


簡(jiǎn)單相加時(shí)還要考慮每種loss的貢獻(xiàn)率,YOLO給coordErr設(shè)置權(quán)重λcoord=5.在計(jì)算IOU誤差時(shí),,包含物體的格子與不包含物體的格子,,二者的IOU誤差對(duì)網(wǎng)絡(luò)loss的貢獻(xiàn)值是不同的。若采用相同的權(quán)值,,那么不包含物體的格子的confidence值近似為0,,變相放大了包含物體的格子的confidence誤差在計(jì)算網(wǎng)絡(luò)參數(shù)梯度時(shí)的影響。為解決這個(gè)問(wèn)題,,YOLO 使用λnoobj=0.5修正iouErr,。(此處的‘包含’是指存在一個(gè)物體,它的中心坐標(biāo)落入到格子內(nèi)),。對(duì)于相等的誤差值,,大物體誤差對(duì)檢測(cè)的影響應(yīng)小于小物體誤差對(duì)檢測(cè)的影響。這是因?yàn)?,相同的位置偏差占大物體的比例遠(yuǎn)小于同等偏差占小物體的比例,。YOLO將物體大小的信息項(xiàng)(w和h)進(jìn)行求平方根來(lái)改進(jìn)這個(gè)問(wèn)題,但并不能完全解決這個(gè)問(wèn)題。

綜上,,YOLO在訓(xùn)練過(guò)程中Loss計(jì)算如下式所示:
yolo-loss pic3.zhimg.com/v2-c629e12fb112f0e3c36b0e5dca60103a_b.png

其中有寶蓋帽子符號(hào)(?x,?y,?w,?h,?C,?p)為預(yù)測(cè)值,無(wú)帽子的為訓(xùn)練標(biāo)記值,。1objij表示物體落入格子i的第j個(gè)bbox內(nèi).如果某個(gè)單元格中沒(méi)有目標(biāo),則不對(duì)分類誤差進(jìn)行反向傳播;B個(gè)bbox中與GT具有最高IoU的一個(gè)進(jìn)行坐標(biāo)誤差的反向傳播,其余不進(jìn)行.

訓(xùn)練過(guò)程

1)預(yù)訓(xùn)練。使用 ImageNet 1000 類數(shù)據(jù)訓(xùn)練YOLO網(wǎng)絡(luò)的前20個(gè)卷積層+1個(gè)average池化層+1個(gè)全連接層,。訓(xùn)練圖像分辨率resize到224x224,。

2)用步驟1)得到的前20個(gè)卷積層網(wǎng)絡(luò)參數(shù)來(lái)初始化YOLO模型前20個(gè)卷積層的網(wǎng)絡(luò)參數(shù),然后用 VOC 20 類標(biāo)注數(shù)據(jù)進(jìn)行YOLO模型訓(xùn)練,。檢測(cè)通常需要有細(xì)密紋理的視覺(jué)信息,所以為提高圖像精度,,在訓(xùn)練檢測(cè)模型時(shí),將輸入圖像分辨率從224 × 224 resize到448x448,。

訓(xùn)練時(shí)B個(gè)bbox的ground truth設(shè)置成一樣的.

升級(jí)版 YOLO v2

為提高物體定位精準(zhǔn)性和召回率,,YOLO作者提出了 《YOLO9000: Better, Faster, Stronger》 (Joseph Redmon, Ali Farhadi, CVPR 2017, Best Paper Honorable Mention),相比v1提高了訓(xùn)練圖像的分辨率,;引入了faster rcnn中anchor box的思想,,對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)進(jìn)行了改進(jìn),輸出層使用卷積層替代YOLO的全連接層,,聯(lián)合使用coco物體檢測(cè)標(biāo)注數(shù)據(jù)和imagenet物體分類標(biāo)注數(shù)據(jù)訓(xùn)練物體檢測(cè)模型,。相比YOLO,YOLO9000在識(shí)別種類,、精度、速度,、和定位準(zhǔn)確性等方面都有大大提升,。

YOLOv2 改進(jìn)之處

YOLO與Fast R-CNN相比有較大的定位誤差,與基于region proposal的方法相比具有較低的召回率,。因此YOLO v2主要改進(jìn)是提高召回率和定位能力,。下面是改進(jìn)之處:

Batch Normalization: v1中也大量用了Batch Normalization,同時(shí)在定位層后邊用了dropout,,v2中取消了dropout,,在卷積層全部使用Batch Normalization。

高分辨率分類器:v1中使用224 × 224訓(xùn)練分類器網(wǎng)絡(luò),,擴(kuò)大到448用于檢測(cè)網(wǎng)絡(luò),。v2將ImageNet以448×448 的分辨率微調(diào)最初的分類網(wǎng)絡(luò),迭代10 epochs,。

Anchor Boxes:v1中直接在卷積層之后使用全連接層預(yù)測(cè)bbox的坐標(biāo),。v2借鑒Faster R-CNN的思想預(yù)測(cè)bbox的偏移.移除了全連接層,并且刪掉了一個(gè)pooling層使特征的分辨率更大一些.另外調(diào)整了網(wǎng)絡(luò)的輸入(448->416)以使得位置坐標(biāo)是奇數(shù)只有一個(gè)中心點(diǎn)(yolo使用pooling來(lái)下采樣,有5個(gè)size=2,stride=2的max pooling,而卷積層沒(méi)有降低大小,因此最后的特征是416/(2^5)=13).v1中每張圖片預(yù)測(cè)7x7x2=98個(gè)box,而v2加上Anchor Boxes能預(yù)測(cè)超過(guò)1000個(gè).檢測(cè)結(jié)果從69.5mAP,81% recall變?yōu)?9.2 mAP,88% recall.

YOLO v2對(duì)Faster R-CNN的手選先驗(yàn)框方法做了改進(jìn),采樣k-means在訓(xùn)練集bbox上進(jìn)行聚類產(chǎn)生合適的先驗(yàn)框.由于使用歐氏距離會(huì)使較大的bbox比小的bbox產(chǎn)生更大的誤差,而IOU與bbox尺寸無(wú)關(guān),因此使用IOU參與距離計(jì)算,使得通過(guò)這些anchor boxes獲得好的IOU分值,。距離公式:

D(box,centroid)=1?IOU(box,centroid)

使用聚類進(jìn)行選擇的優(yōu)勢(shì)是達(dá)到相同的IOU結(jié)果時(shí)所需的anchor box數(shù)量更少,使得模型的表示能力更強(qiáng),任務(wù)更容易學(xué)習(xí).k-means算法代碼實(shí)現(xiàn)參考:k_means_yolo.py.算法過(guò)程是:將每個(gè)bbox的寬和高相對(duì)整張圖片的比例(wr,hr)進(jìn)行聚類,得到k個(gè)anchor box,由于darknet代碼需要配置文件中region層的anchors參數(shù)是絕對(duì)值大小,因此需要將這個(gè)比例值乘上卷積層的輸出特征的大小.如輸入是416x416,那么最后卷積層的特征是13x13.

細(xì)粒度特征(fine grain features):在Faster R-CNN 和 SSD 均使用了不同的feature map以適應(yīng)不同尺度大小的目標(biāo).YOLOv2使用了一種不同的方法,,簡(jiǎn)單添加一個(gè) pass through layer,把淺層特征圖(26x26)連接到深層特征圖(連接到新加入的三個(gè)卷積核尺寸為3 * 3的卷積層最后一層的輸入)。 通過(guò)疊加淺層特征圖相鄰特征到不同通道(而非空間位置),,類似于Resnet中的identity mapping,。這個(gè)方法把26x26x512的特征圖疊加成13x13x2048的特征圖,與原生的深層特征圖相連接,,使模型有了細(xì)粒度特征,。此方法使得模型的性能獲得了1%的提升。

Multi-Scale Training: 和YOLOv1訓(xùn)練時(shí)網(wǎng)絡(luò)輸入的圖像尺寸固定不變不同,,YOLOv2(在cfg文件中random=1時(shí))每隔幾次迭代后就會(huì)微調(diào)網(wǎng)絡(luò)的輸入尺寸,。訓(xùn)練時(shí)每迭代10次,就會(huì)隨機(jī)選擇新的輸入圖像尺寸,。因?yàn)閅OLOv2的網(wǎng)絡(luò)使用的downsamples倍率為32,,所以使用32的倍數(shù)調(diào)整輸入圖像尺寸{320,352,…,,608},。訓(xùn)練使用的最小的圖像尺寸為320 x 320,最大的圖像尺寸為608 x 608,。 這使得網(wǎng)絡(luò)可以適應(yīng)多種不同尺度的輸入.

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

YOLOv2對(duì)v1的基礎(chǔ)網(wǎng)絡(luò)做了更改.

分類網(wǎng)絡(luò)

YOLOv2提出了一種新的分類模型Darknet-19.借鑒了很多其它網(wǎng)絡(luò)的設(shè)計(jì)概念.主要使用3x3卷積并在pooling之后channel數(shù)加倍(VGG);global average pooling替代全連接做預(yù)測(cè)分類,并在3x3卷積之間使用1x1卷積壓縮特征表示(Network in Network);使用 batch normalization 來(lái)提高穩(wěn)定性,加速收斂,對(duì)模型正則化.
Darknet-19的結(jié)構(gòu)如下表:

http://images2017.cnblogs.com/blog/606386/201710/606386-20171019165350131-646927724.jpg Darknet-19-arch

包含 19 conv + 5 maxpooling.

訓(xùn)練:使用Darknet框架在ImageNet 1000類上訓(xùn)練160 epochs,學(xué)習(xí)率初始為0.1,以4級(jí)多項(xiàng)式衰減.weight decay=0.0005 , momentum=0.9.使用標(biāo)準(zhǔn)的數(shù)據(jù)增廣方法:random crops, rotations, (hue, saturation), exposure shifts.

之后將輸入從224放大至448,學(xué)習(xí)率調(diào)整為0.001,迭代10 epochs.結(jié)果達(dá)到top-1 accuracy 76.5% , top-5 accuracy 93.3%.

檢測(cè)網(wǎng)絡(luò)

在分類網(wǎng)絡(luò)中移除最后一個(gè)1x1的層,在最后添加3個(gè)3x3x1024的卷積層,再接上輸出是類別個(gè)數(shù)的1x1卷積.
對(duì)于輸入圖像尺寸為Si x Si,最終3x3卷積層輸出的feature map是Oi x Oi(Oi=Si/(2^5)),對(duì)應(yīng)輸入圖像的Oi x Oi個(gè)柵格,,每個(gè)柵格預(yù)測(cè)#anchors種boxes大小,每個(gè)box包含4個(gè)坐標(biāo)值,1個(gè)置信度和#classes個(gè)條件類別概率,,所以輸出維度是Oi x Oi x #anchors x (5 + #classes),。

添加跨層跳躍連接(借鑒ResNet等思想),融合粗細(xì)粒度的特征:將前面最后一個(gè)3x3x512卷積的特征圖,對(duì)于416x416的輸入,該層輸出26x26x512,直接連接到最后新加的三個(gè)3x3卷積層的最后一個(gè)的前邊.將26x26x512變形為13x13x1024與后邊的13x13x1024特征按channel堆起來(lái)得到13x13x3072.從yolo-voc.cfg文件可以看到,第25層為route層,,逆向9層拿到第16層26 * 26 * 512的輸出,,并由第26層的reorg層把26 * 26 * 512 變形為13 * 13 * 2048,再有第27層的route層連接24層和26層的輸出,,堆疊為13 * 13 * 3072,,由最后一個(gè)卷積核為3 * 3的卷積層進(jìn)行跨通道的信息融合并把通道降維為1024。

訓(xùn)練:作者在VOC07+12以及COCO2014數(shù)據(jù)集上迭代了160 epochs,初始學(xué)習(xí)率0.001,在60和90 epochs分別減小為0.1倍.
Darknet訓(xùn)練VOC的參數(shù)如下:

learning_rate=0.0001
batch=64
max_batches = 45000 # 最大迭代batch數(shù)
policy=steps # 學(xué)習(xí)率衰減策略
steps=100,25000,35000 # 訓(xùn)練到這些batch次數(shù)時(shí)learning_rate按scale縮放
scales=10,.1,.1 # 與steps對(duì)應(yīng)

網(wǎng)絡(luò)結(jié)構(gòu)如下(輸入416,5個(gè)類別,5個(gè)anchor box; 此結(jié)構(gòu)信息由Darknet框架啟動(dòng)時(shí)輸出):
http://images2017.cnblogs.com/blog/606386/201710/606386-20171019171029709-1709448017.png YOLO v2-network

YOLO9000

提出了一種聯(lián)合訓(xùn)練方法,,能夠容許同時(shí)使用目標(biāo)檢測(cè)數(shù)據(jù)集和分類數(shù)據(jù)集,。使用有標(biāo)記的檢測(cè)數(shù)據(jù)集精確定位,使用分類數(shù)據(jù)增加類別和魯棒性,。

YOLOv3

YOLOv3在Pascal Titan X上處理608x608圖像速度達(dá)到20FPS,,在 COCO test-dev 上 [email protected] 達(dá)到 57.9%,與RetinaNet(FocalLoss論文所提出的單階段網(wǎng)絡(luò))的結(jié)果相近,,并且速度快4倍.

YOLO v3的模型比之前的模型復(fù)雜了不少,,可以通過(guò)改變模型結(jié)構(gòu)的大小來(lái)權(quán)衡速度與精度。

速度對(duì)比如下:
YOLOv3 compare

改進(jìn)之處

  • 多尺度預(yù)測(cè) (類FPN)
  • 更好的基礎(chǔ)分類網(wǎng)絡(luò)(類ResNet)和分類器

分類器-類別預(yù)測(cè)
YOLOv3不使用Softmax對(duì)每個(gè)框進(jìn)行分類,,主要考慮因素有兩個(gè):

  1. Softmax使得每個(gè)框分配一個(gè)類別(score最大的一個(gè)),,而對(duì)于Open Images這種數(shù)據(jù)集,,目標(biāo)可能有重疊的類別標(biāo)簽,因此Softmax不適用于多標(biāo)簽分類,。
  2. Softmax可被獨(dú)立的多個(gè)logistic分類器替代,,且準(zhǔn)確率不會(huì)下降。
    分類損失采用binary cross-entropy loss.

多尺度預(yù)測(cè)
每種尺度預(yù)測(cè)3個(gè)box, anchor的設(shè)計(jì)方式仍然使用聚類,得到9個(gè)聚類中心,將其按照大小均分給3中尺度.

  • 尺度1: 在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息.
  • 尺度2: 從尺度1中的倒數(shù)第二層的卷積層上采樣(x2)再與最后一個(gè)16x16大小的特征圖相加,再次通過(guò)多個(gè)卷積后輸出box信息.相比尺度1變大兩倍.
  • 尺度3: 與尺度2類似,使用了32x32大小的特征圖.

參見網(wǎng)絡(luò)結(jié)構(gòu)定義文件yolov3.cfg

基礎(chǔ)網(wǎng)絡(luò) Darknet-53
仿ResNet, 與ResNet-101或ResNet-152準(zhǔn)確率接近,但速度更快.對(duì)比如下:
darknet-53 compare

網(wǎng)絡(luò)結(jié)構(gòu)如下:
YOLOv3-arch

YOLOv3在[email protected]及小目標(biāo)APS上具有不錯(cuò)的結(jié)果,但隨著IOU的增大,性能下降,說(shuō)明YOLOv3不能很好地與ground truth切合.

邊框預(yù)測(cè)
作者嘗試了常規(guī)的預(yù)測(cè)方式(Faster R-CNN),然而并不奏效: x,y的偏移作為box的長(zhǎng)寬的線性變換.
{^Gx=Pwtx(P)+Px^Gy=Phty(P)+Py^Gw=Pwetw(P)^Gh=Pheth(P)

仍采用之前的logistic方式:
bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pheth


其中cx,cy是網(wǎng)格的坐標(biāo)偏移量,pw,ph是預(yù)設(shè)的anchor box的邊長(zhǎng).最終得到的邊框坐標(biāo)值是b?,而網(wǎng)絡(luò)學(xué)習(xí)目標(biāo)是t?.

優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 快速,pipline簡(jiǎn)單.
  • 背景誤檢率低,。
  • 通用性強(qiáng),。YOLO對(duì)于藝術(shù)類作品中的物體檢測(cè)同樣適用。它對(duì)非自然圖像物體的檢測(cè)率遠(yuǎn)遠(yuǎn)高于DPM和RCNN系列檢測(cè)方法,。

但相比RCNN系列物體檢測(cè)方法,,YOLO具有以下缺點(diǎn):

  • 識(shí)別物體位置精準(zhǔn)性差。
  • 召回率低,。在每個(gè)網(wǎng)格中預(yù)測(cè)兩個(gè)bbox這種約束方式減少了對(duì)同一目標(biāo)的多次檢測(cè)(R-CNN使用的region proposal方式重疊較多),相比R-CNN使用Selective Search產(chǎn)生2000個(gè)proposal(RCNN測(cè)試時(shí)每張超過(guò)40秒),yolo僅使用7x7x2個(gè).

YOLO v.s. Faster R-CNN

  1. 統(tǒng)一網(wǎng)絡(luò):
    YOLO沒(méi)有顯示求取region proposal的過(guò)程,。Faster R-CNN中盡管RPN與fast rcnn共享卷積層,但是在模型訓(xùn)練過(guò)程中,,需要反復(fù)訓(xùn)練RPN網(wǎng)絡(luò)和fast rcnn網(wǎng)絡(luò).
    相對(duì)于R-CNN系列的"看兩眼"(候選框提取與分類,,圖示如下),YOLO只需要Look Once.
    R-CNN pipline
  2. YOLO統(tǒng)一為一個(gè)回歸問(wèn)題
    而R-CNN將檢測(cè)結(jié)果分為兩部分求解:物體類別(分類問(wèn)題),物體位置即bounding box(回歸問(wèn)題),。

Darknet 框架

Darknet 由 C 語(yǔ)言和 CUDA 實(shí)現(xiàn), 對(duì)GPU顯存利用效率較高(CPU速度差一些, 通過(guò)與SSD的Caffe程序?qū)Ρ劝l(fā)現(xiàn)存在CPU較慢,GPU較快的情況). Darknet 對(duì)第三方庫(kù)的依賴較少,且僅使用了少量GNU linux平臺(tái)C接口,因此很容易移植到其它平臺(tái),如Windows或嵌入式設(shè)備.
參考Windows 版 Darknet (YOLOv2) 移植, 代碼在此.

region層:參數(shù)anchors指定kmeans計(jì)算出來(lái)的anchor box的長(zhǎng)寬的絕對(duì)值(與網(wǎng)絡(luò)輸入大小相關(guān)),num參數(shù)為anchor box的數(shù)量,
另外還有bias_match,classes,coords等參數(shù).在parser.c代碼中的parse_region函數(shù)中解析這些參數(shù),并保存在region_layer.num參數(shù)保存在l.n變量中;anchors保存在l.biases數(shù)組中.region_layer的前向傳播中使用for(n = 0; n < l.n; ++n)這樣的語(yǔ)句,因此,如果在配置文件中anchors的數(shù)量大于num時(shí),僅使用前num個(gè),小于時(shí)內(nèi)存越界.

region層的輸入和輸出大小與前一層(1x1 conv)的輸出大小和網(wǎng)絡(luò)的輸入大小相關(guān).

Detection層: 坐標(biāo)及類別結(jié)果輸出層.


參考

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多