- 前言:本次要學習影像辨識的演算法
tags: 六角學院
主題:雜亂大全24-YOLOv3(v1-v4統整資料)簡介(上)
本篇重點:
- 學習YOLO的類神經網路
YOLOv3重要參考資料:
我的學習路徑(含參考資料):
1. 請先觀看以下影片-簡介 YOLOv3
- YOLOv3簡介(影片) https://youtu.be/2_ga_k9ZpF4
- YOLOv3改進(影片) https://youtu.be/xGfpd5HpQ8k
2. 簡介 YOLOv3
- 本處為大略式的介紹,節錄以下參考資料(非常重要)
YOLOv3 演進
https://medium.com/@chingi071/yolo%E6%BC%94%E9%80%B2-2-85ee99d114a1圖像解說 YOLO v3
https://luckmoonlight.github.io/2018/11/28/yoloV1yolov2yoloV3基於深度學習的物件偵測(含YoloV3)
https://mropengate.blogspot.com/2018/06/yolo-yolov3.htmlYOLOv3簡介(圖片較多)
https://github.com/LiaoZihZrong/learn_YOLOv3
2-1 YOLOv3 論文
YOLOv3 論文下載:
https://1drv.ms/b/s!AqstO-BYCWeDw3ttHma2-aPxP0EQ?e=71GhG0
2-2 改良後的YOLOv3:
(1) YOLOv3 在 YOLOv2 的基礎上,改用了 Darknet-53
(2)利用多尺度特徵圖 (feature map) 進行檢測
YOLOv3 借鑒了 FPN 的方法,採用多尺度的 feature map 對不同大小的物體進行檢測,提升小物體預測能力
YOLOv3 通過下採樣32倍、16倍、8倍得到3個不同尺度的 feature map
例如輸入416x416的圖片
則會得到13x13 (416/32)、26x26 (416/16)、52x52 (416/8)
13x13 feature map (最大的感受野) 用於偵測大物體,所以用較大的Anchor prior (116x90), (156x198), (373x326)
26x26 feature map (中等的感受野) 用於偵測中等大小的物體,所以用中等的Anchor prior (30x61), (62x45), (59x119)
52x52eature map (較小的感受野) 用於檢測小物體,所以用較小的Anchor prior (10x13), (16x30), (33x23)
(3)Anchor box
每個尺度的 feature map 會預測出3個 Anchor prior
而 Anchor prior 的大小則採用K-means進行聚類分析
(YOLOv3 延續了 YOLOv2 的作法)。
在COCO資料集上,按照輸入圖片的尺寸為416x416
得到9種聚類結果 (Anchor prior的wxh):
(10x13), (16x30), (33x23),
(30x61),(62x45), (59x119),
(116x90), (156x198), (373x326)
(4)改用多個獨立的 Logistic regression 分類器取代softmax
Class Prediction-使用 binary cross-entropy
YOLO 之前都是使用 softmax 去分類每個 bndBox,
而預測目標裡可能有重疊的標籤
因此 YOLOv3 改採用多個獨立的 Logistic regression 分類器
(5) IOU
Bounding Box Prediction
YOLOv3 使用 Logistic regression 來預測每個 bndBox 的 confidence,以 bndBox 與 ground truth 的 IOU 為判定標準,對每個 ground truth 只分配一個最好的bndBox。利用這個方式,在做 Detect 之前可以減少不必要的 Anchor 並檢少計算量
- 正例: 將 IOU最高的bndBox ,confidence score 設為1
- 忽略樣例: 其他不是最高 IOU 的 bndBox 並且 IOU 大於閾值 (threshold,預測為0.5) ,則忽略這些 bndBox,不計算 loss
- 負例: 若 bndBox 沒有與任一 ground truth 對應,則減少其 confidence score
補充:邊框預測(整合上述1~5)
- 請先閱讀參考資料↓:
==超詳細的Yolov3邊框預測分析== https://zhuanlan.zhihu.com/p/49995236
遵循YOLO9000,我們的系統使用錨定框來預測邊界框。
網絡為每個邊界框tx,ty,tw,th預測4個坐標。
如果單元格從圖像的左上角偏移了(cx,cy)並且先驗邊界框的寬度和高度為pw,ph,則預測對應於:
$b_x=σ(t_x)+c_x$
$b_y=σ(t_y)+c_y$
$b_w=p_we^{t_w}$
$b_h=p_he^{t_h}$
$P_r(object)*IOU(b,object)=σ(t_o)$
補充:
(tx,ty):目標中心點相對於該點所在網格左上角的偏移量,經過sigmoid,即值為 [ 0, 1 ]
(cx,cy):該點所在網格的左上角距離最左上角相差的格子數
(pw,ph):anchor box 的邊常
(tw,th):預測邊框的寬和高
最終得到的邊框坐標值是bx,by,bw,bh.而網絡學習目標是tx,ty,tw,th
(6) YOLOv3 所使用之Loss
速度與準確率
若採用COCO mAP50 做評估標準 (不介意 bndBox 預測的準確性)
YOLOv3 的表現達到57.9%,與 RetinaNet 的結果相近,並且速度快4 倍
YOLOv1-v3比較(包含YOLOv4採取的技術)
==參考以下資料整合(非常重要)==
- YOLO v1~v4 簡介
https://www.cnblogs.com/wujianming-110117/p/12840766.html- YOLO v1~3 比較
https://blog.cavedu.com/2019/07/25/yolo-identification-model/- YOLO v1~v4
https://tangh.github.io/articles/yolo-from-v1-to-v4/- YOLO v4 介紹
https://medium.com/@chingi071/yolo%E6%BC%94%E9%80%B2-3-yolov4%E8%A9%B3%E7%B4%B0%E4%BB%8B%E7%B4%B9-5ab2490754ef- IoU/GIoU/DIoU/CIoU Loss簡介
https://zhuanlan.zhihu.com/p/104236411- YOLO v1-v5簡介
https://zhuanlan.zhihu.com/p/136382095
補充
- 日期:2020.11.26
YOLOv4 程式詳細分析
https://www.cnblogs.com/lh2n18/p/12986898.html
- 若有任何問題↓
- 請聯繫我:
liao86221@gmail.com
- 或填表: https://forms.gle/4FB5Tmtd9A7XcXjF8