【深度學習】目標檢測之YOLOv3算法
YOLO系列目標檢測算法官方代碼
https://pjreddie.com/darknet/yolo/
YOLOv3
網絡結構
Darknet-53:
共有53個卷積層,進行32倍下采樣
Darknet-53爲了加深網絡,也採取的類似ResNet的跳接結構,但和ResNet的殘差塊結構不同:
- ResNet的下采樣過程,在與上一個卷積組鄰接的殘差塊中實現。【深度學習】ResNet系列網絡結構
- Darknet-53的下采樣過程,是在Residual跳接之前,用一個單獨的卷積層實現的。
Darknet-53中所有的Residual都是如上圖所示的結構
YOLOv3保留Darknet-53標準結構Avgpool以上的部分(不包括Avgpool)。在此基礎上和SSD一樣,在三個不同size的Feature Map上接Detection Head。此外,仿照FPN,較深層的Detection Head的Feature Map經過上採樣,和較淺層的Detection Head的Feature Map按channel方向進行拼接。
YOLOv3網絡結構如下:
anchor的編解碼
YOLOv3的編解碼和YOLOv2的編解碼方式相同:
先驗:
- 每個Detection Head的最後一個卷積層的輸入Feature Map(也就是使用anchor的Feature Map)的每一個cell的左上角點座標、()
- anchor的width和height,、。注意,YOLOv3中的anchor和YOLOv2、SSD中的anchor都不相同。
SSD中的anchor,width和height是相對於原圖像的size進行歸一化後的值,其值範圍在到之間;
YOLOv2中的anchor,width和height是以使用anchor的Feature Map的width和heigth爲基準的絕對的值,其值範圍在到之間;
YOLOv3中的anchor,width和height是以初始輸入圖像(第一個卷積層的輸入tensor)的witdh和height爲基準的絕對的值,其值範圍在到之間。(YOLOv3的anchor的值,除以各自所在的Feature Map的下采樣倍數,就和YOLOv2的anchor的值定義相同了)
YOLOv3通過COCO數據集的ground truth box的大小,聚類得到9個anchor的值。每個Detection Head使用其中的三個。具體值如下:
最淺的Detection Head:
(10,13), (16,30), (33,23),
中間的Detection Head:
(30,61), (62,45), (59,119),
最深的Detection Head:
(116,90), (156,198), (373,326)
輸出:
和YOLOv2相同,YOLOv3每個cell生成三個anchor(YOLOv2是五個),每個anchor對應自己的輸出:4(center_x, center_y, width, height) + 1(置信度) + num_classes(和SSD不同,這個num_classes不包括background,SSD就是通過增加一個background起到YOLO中置信度的作用)
center_x:
center_y:
width:
height:
置信度:
編碼方式:
label:
、、、:原始圖像上的ground truth box的中心點座標、width以及height歸一化後的值(注意計算loss時,、要乘預測所使用的Feature Map的width、height;、要乘初始輸入圖像的width、height)
置信度label:計算方式和YOLOv2相同。【深度學習】目標檢測之YOLOv2算法&6D姿態估計之YOLO-6D算法
損失函數
和YOLOv2相同,計算損失函數前,要先確定哪個anchor負責哪個落入cell中的object的預測,確定方法與YOLOv2相同。【深度學習】目標檢測之YOLOv2算法&6D姿態估計之YOLO-6D算法
損失函數計算:
- 第一項:所有負責預測目標的anchor的座標損失()。label是(注意計算loss時,、要乘預測所使用的Feature Map的width、height;、要乘初始輸入圖像的width、height)。使用均方損失函數。衡量目標定位準確度。前面的係數設置爲1
- 第二項:不負責預測目標的anchor的座標損失()。label是cell的左上點、cell的左上點、anchor的、anchor的。因爲這樣的label對應的實際輸出是零。使用均方損失函數。前面的係數設置爲1
- 第三項:負責預測目標的anchor的confidence損失。label是。使用binary cross-entropy loss(不使用Softmax)。衡量可能有目標的準確度。前面的係數設置爲5
- 第四項:不負責預測目標的anchor的confidece損失。計算,如果計算結果小於0.5,label是零。使用binary cross-entropy loss(不使用Softmax)。前面的係數設置爲1
- 第五項:負責預測目標的anchor的類別損失。使用binary cross-entropy loss(不使用Softmax)(在這裏相當於多個獨立的邏輯分類器,這樣的多標籤方法有助於對訓練數據更好的建模)。
binary cross-entropy loss
二分類的交叉熵損失函數:
對於一個樣本:
其中,是label信息,positive是1,negative是0。是網絡的輸出,也就是結果是positive的概率。
AP(Average Precision)的含義和計算方法
注意,多類別的目標檢測任務中,AP是針對單獨一類目標而言的
-
正確率(Precision):
判斷爲True的樣本中,真實爲True的比例 -
真陽性率(True Positive Rate,TPR),靈敏度(Sensitivity),召回率(Recall):
真實爲True的樣本中,判斷爲True的比例
Precision和Recall用到目標檢測領域,就是:
假設有一組圖片,裏面有若干待檢測的目標,Precision就代表模型檢測出來的目標有多大比例是真正的目標物體;Recall就代表所有真實的目標有多大比例被模型檢測出來了。
以Recall爲橫軸,Precision爲縱軸繪製的曲線,就是PR曲線。
AP(Average Precision),就是對PR曲線的縱軸(Precision)的值取平均。所謂11point-AP,就是將R軸平分11個點,對應的P軸的值取平均。
mAP(mean Average Precision)的含義和計算方法
mAP是所有類別的AP值的均值
結語
如果您有修改意見或問題,歡迎留言或者通過郵箱和我聯繫。
手打很辛苦,如果我的文章對您有幫助,轉載請註明出處。