【目標檢測算法】詳解 YOLO(You only look once)

ZSYL 2021-08-15 14:00:44 阅读数:312

本文一共[544]字,预计阅读时长:1分钟~
算法 yolo look

學習目標

  • 目標
    • 知道YOLO的網絡結構
    • 知道單元格的意義
    • 知道YOLO的損失

在正式介紹YOLO之前,我們來看一張圖:

在這裏插入圖片描述

可以看出YOLO的最大特點是速度快。

1. YOLO

1.1 結構

一個網絡搞定一切,GoogleNet + 4個卷積+2個全連接層

在這裏插入圖片描述

1.2 流程理解

  • 1、原始圖片resize到448x448,經過前面卷積網絡之後,將圖片輸出成了一個7 * 7 * 30的結構

以圖示的方式演示:

2、默認7 * 7個單元格,這裏用3 * 3的單元格圖演示

在這裏插入圖片描述

3、每個單元格預測兩個bbox框

在這裏插入圖片描述

4、進行NMS篩選,篩選概率以及IoU

在這裏插入圖片描述
在這裏插入圖片描述

2. 單元格(grid cell)

最後網絡輸出的7 * 7 * 30的特征圖怎麼理解?7 * 7=49個像素值,理解成49個單元格,每個單元格可以代錶原圖的一個方塊。單元格需要做的兩件事:

  • 1.每個單元格負責預測一個物體類別,並且直接預測物體的概率值

  • 2.每個單元格預測兩個(默認)bbox比特置,兩個bbox置信度(confidence) 7 * 7 * 2=98個bbox

    • 30=(4+1+4+1+20), 4個坐標信息,1個置信度(confidence)代錶一個bbox的結果, 20代錶 20類的預測概率結果

2.1 網格輸出篩選

一個網格會預測兩個Bbox,在訓練時我們只有一個Bbox專門負責(一個Object 一個Bbox)

怎麼進行篩選?

在這裏插入圖片描述

  • 通過置信度大小比較

每個bounding box都對應一個confidence score

  • 如果grid cell裏面沒有object,confidence就是0
  • 如果有,則confidence score等於 預測的box和ground truth的IOU乘積

所以如何判斷一個grid cell中是否包含object呢?如果一個object的ground truth的中心點坐標在一個grid cell中,那麼這個grid cell就是包含這個object,也就是說這個object的預測就由該grid cell負責。

這個概率可以理解為不屬於任何一個bbox,而是屬於這個單元格所預測的類別

在這裏插入圖片描述

  • 不同於faster rcnn中的anchors,yolo的框坐標是由網絡得出,而faster-rcnn是人為設定一個值,然後利用RPN網絡對其優化到一個更准的坐標和是否背景類別

3. 非最大抑制(NMS)

每個BboxClass-Specific Confidence Score以後,設置閾值,濾掉概率的低的bbox,對每個類別過濾IoU,就得到最終的檢測結果

在這裏插入圖片描述

4. 訓練

  • 預測框對應的目標值標記
    • confidence:格子內是否有目標
    • 20類概率:標記每個單元格的目標類別

怎麼理解這個過程?

同樣以分類那種形式來對應,假設以一個單元格的預測值為結果,如下圖:

在這裏插入圖片描述

  • 損失
    • 三部分損失 bbox損失+confidence損失+classfication損失

5. 與Faster R-CNN比較

Faster R-CNN利用RPN網絡與真實值調整了候選區域,然後再進行候選區域和卷積特征結果映射的特征向量的處理來通過與真實值優化網絡預測結果。而這兩步在YOLO當中合並成了一個步驟,直接網絡輸出預測結果進行優化。

所以經常也會稱之為YOLO算法為直接回歸法代錶。YOLO的特點就是快

在這裏插入圖片描述

6. YOLO總結

  • 優點
    • 速度快
  • 缺點
    • 准確率會打折扣
    • YOLO對相互靠的很近的物體(挨在一起且中點都落在同一個格子上的情况),還有很小的群體檢測效果不好,這是因為一個網格中只預測了兩個框。

7. 總結

  • YOLO的網絡結構
  • 輸出結果的意義
    • 7 * 7 * 30(用於20類分類)
版权声明:本文为[ZSYL]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815140041018i.html