智慧交通day02-车流量检测实现11:yoloV3模型
yoloV3以V1,V2為基礎(chǔ)進(jìn)行的改進(jìn),主要有:利用多尺度特征進(jìn)行目標(biāo)檢測;先驗(yàn)框更豐富;調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu);對象分類使用logistic代替了softmax,更適用于多標(biāo)簽分類任務(wù)。
1.算法簡介
YOLOv3是YOLO (You Only Look Once)系列目標(biāo)檢測算法中的第三版,相比之前的算法,尤其是針對小目標(biāo),精度有顯著提升。
yoloV3的流程如下圖所示,對于每一幅輸入圖像,YOLOv3會預(yù)測三個不同尺度的輸出,目的是檢測出不同大小的目標(biāo)。
2.多尺度檢測
通常一幅圖像包含各種不同的物體,并且有大有小。比較理想的是一次就可以將所有大小的物體同時檢測出來。因此,網(wǎng)絡(luò)必須具備能夠“看到”不同大小的物體的能力。因?yàn)榫W(wǎng)絡(luò)越深,特征圖就會越小,所以網(wǎng)絡(luò)越深小的物體也就越難檢測出來。
在實(shí)際的feature map中,隨著網(wǎng)絡(luò)深度的加深,淺層的feature map中主要包含低級的信息(物體邊緣,顏色,初級位置信息等),深層的feature map中包含高等信息(例如物體的語義信息:狗,貓,汽車等等)。因此在不同級別的feature map對應(yīng)不同的scale,所以我們可以在不同級別的特征圖中進(jìn)行目標(biāo)檢測。如下圖展示了多種scale變換的經(jīng)典方法。
(a) 這種方法首先建立圖像金字塔,不同尺度的金字塔圖像被輸入到對應(yīng)的網(wǎng)絡(luò)當(dāng)中,用于不同scale物體的檢測。但這樣做的結(jié)果就是每個級別的金字塔都需要進(jìn)行一次處理,速度很慢,在SPPNet使用的就是這種方式。
(b) 檢測只在最后一層feature map階段進(jìn)行,這個結(jié)構(gòu)無法檢測不同大小的物體
(c) 對不同深度的feature map分別進(jìn)行目標(biāo)檢測。SSD中采用的便是這樣的結(jié)構(gòu)。這樣小的物體會在淺層的feature map中被檢測出來,而大的物體會在深層的feature map被檢測出來,從而達(dá)到對應(yīng)不同scale的物體的目的,缺點(diǎn)是每一個feature map獲得的信息僅來源于之前的層,之后的層的特征信息無法獲取并加以利用。
(d) 與(c)很接近,但不同的是,當(dāng)前層的feature map會對未來層的feature map進(jìn)行上采樣,并加以利用。因?yàn)橛辛诉@樣一個結(jié)構(gòu),當(dāng)前的feature map就可以獲得“未來”層的信息,這樣的話低階特征與高階特征就有機(jī)融合起來了,提升檢測精度。在YOLOv3中,就是采用這種方式來實(shí)現(xiàn)目標(biāo)多尺度的變換的。
3.網(wǎng)絡(luò)模型結(jié)構(gòu)
在基本的圖像特征提取方面,YOLO3采用了Darknet-53的網(wǎng)絡(luò)結(jié)構(gòu)(含有53個卷積層),它借鑒了殘差網(wǎng)絡(luò)ResNet的做法,在層之間設(shè)置了shortcut,來解決深層網(wǎng)絡(luò)梯度的問題,shortcut如下圖所示:包含兩個卷積層和一個shortcut connections。
yoloV3的模型結(jié)構(gòu)如下所示:
整個v3結(jié)構(gòu)里面,沒有池化層和全連接層,網(wǎng)絡(luò)的下采樣是通過設(shè)置卷積的stride為2來達(dá)到的,每當(dāng)通過這個卷積層之后圖像的尺寸就會減小到一半。殘差模塊中的1×,2×,8×,8× 等表示殘差模塊的個數(shù)。
4.先驗(yàn)框
yoloV3采用K-means聚類得到先驗(yàn)框的尺寸,為每種尺度設(shè)定3種先驗(yàn)框,總共聚類出9種尺寸的先驗(yàn)框。
在COCO數(shù)據(jù)集這9個先驗(yàn)框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。在最小的(13x13)特征圖上(有最大的感受野)應(yīng)用較大的先驗(yàn)框(116x90),(156x198),(373x326),適合檢測較大的對象。中等的(26x26)特征圖上(中等感受野)應(yīng)用中等的先驗(yàn)框(30x61),(62x45),(59x119),適合檢測中等大小的對象。較大的(52x52)特征圖上(較小的感受野)應(yīng)用,其中較小的先驗(yàn)框(10x13),(16x30),(33x23),適合檢測較小的對象。
直觀上感受9種先驗(yàn)框的尺寸,下圖中藍(lán)色框?yàn)榫垲惖玫降南闰?yàn)框。黃色框式ground truth,紅框是對象中心點(diǎn)所在的網(wǎng)格。
5.ligistic回歸
預(yù)測對象類別時不使用softmax,而是被替換為一個1x1的卷積層+logistic激活函數(shù)的結(jié)構(gòu)。使用softmax層的時候其實(shí)已經(jīng)假設(shè)每個輸出僅對應(yīng)某一個單個的class,但是在某些class存在重疊情況(例如woman和person)的數(shù)據(jù)集中,使用softmax就不能使網(wǎng)絡(luò)對數(shù)據(jù)進(jìn)行很好的預(yù)測。
6.yoloV3模型的輸入與輸出
YoloV3的輸入輸出形式如下圖所示:?
輸入416×416×3的圖像,通過darknet網(wǎng)絡(luò)得到三種不同尺度的預(yù)測結(jié)果,每個尺度都對應(yīng)N個通道,包含著預(yù)測的信息;
每個網(wǎng)格每個尺寸的anchors的預(yù)測結(jié)果。
YOLOv3共有13×13×3 + 26×26×3 + 52×52×3個預(yù)測 。每個預(yù)測對應(yīng)85維,分別是4(坐標(biāo)值)、1(置信度分?jǐn)?shù))、80(coco類別概率)。
總結(jié)
1.yoloV3的多尺度檢測方法
在YOLOv3中采用FPN結(jié)構(gòu)來提高對應(yīng)多尺度目標(biāo)檢測的精度,當(dāng)前的feature map利用“未來”層的信息,將低階特征與高階特征進(jìn)行融合,提升檢測精度。
2.yoloV3模型的網(wǎng)絡(luò)結(jié)構(gòu)
- 以darknet-53為基礎(chǔ),借鑒resnet的思想,在網(wǎng)絡(luò)中加入了殘差模塊,利于解決深層次網(wǎng)絡(luò)的梯度問題
- 整個v3結(jié)構(gòu)里面,沒有池化層和全連接層,只有卷積層
- 網(wǎng)絡(luò)的下采樣是通過設(shè)置卷積的stride為2來達(dá)到的
3.yoloV3模型先驗(yàn)框設(shè)計的方法
采用K-means聚類得到先驗(yàn)框的尺寸,為每種尺度設(shè)定3種先驗(yàn)框,總共聚類出9種尺寸的先驗(yàn)框。
4.yoloV3模型為什么適用于多標(biāo)簽的目標(biāo)分類
預(yù)測對象類別時不使用softmax,而是使用logistic的輸出進(jìn)行預(yù)測
5.yoloV3模型的輸入輸出
對于416×416×3的輸入圖像,在每個尺度的特征圖的每個網(wǎng)格設(shè)置3個先驗(yàn)框,總共有 13×13×3 + 26×26×3 + 52×52×3 =?10647?個預(yù)測。每一個預(yù)測是一個(4+1+80)=85維向量,這個85維向量包含邊框坐標(biāo)(4個數(shù)值),邊框置信度(1個數(shù)值),對象類別的概率(對于COCO數(shù)據(jù)集,有80種對象)。
總結(jié)
以上是生活随笔為你收集整理的智慧交通day02-车流量检测实现11:yoloV3模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构链表之符号表,Python3实现
- 下一篇: The size of tensor a