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