YOLO目標檢測從V1到V3結構詳解

計算機視覺life發表於2022-12-06

本文主要內容是對 YOLO 系列進行綜述

目標檢測評價指標

  • IoU(Intersection-over-Union)指標

    IoU 簡稱交併比,顧名思義數學中交集與並集的比例。假設有兩個集合 A 與 B, IoU 即等於 A 與 B 的交集除以 A 與 B 的並集,表示式如下:

YOLO目標檢測從V1到V3結構詳解

在目標檢測中,IoU 為預測框 (Prediction) 和真實框 (Ground truth) 的交併比。如下圖所示,在關於小貓的目標檢測中,紫線邊框為預測框 (Prediction),紅線邊框為真實框 (Ground truth)。

YOLO目標檢測從V1到V3結構詳解
在目標檢測任務中,通常取 IoU≥0.5,認為召回。如果 IoU 閾值設定更高,召回率將會降低,但定位框則更加精確。
理想的情況,當然是預測框與真實框重疊越多越好,如果兩者完全重疊,則交集與並集面積相同,此時 IoU 等於 1。

YOLOv1

YOLOv1 創新
  • 將整張圖作為網路的輸入,直接在輸出層迴歸 bounding box 的位置和所屬的類別(將物件檢測作為一個迴歸問題)

  • 速度快,one stage detection 的開山之作

  • 速度快,one stage detection 的開山之作

之前的目標檢測方法需要先產生候選區再檢測的方法雖然有相對較高的檢測準確率,但執行速度較慢。

YOLO 將識別與定位合二為一,結構簡便,檢測速度快,更快的 Fast YOLO 可以達到 155FPS。

YOLO目標檢測從V1到V3結構詳解
YOLOv1 優缺點
  • YOLO 模型相對於之前的物體檢測方法有多個 優點

  1. YOLO 檢測物體非常快。
    因為沒有複雜的檢測流程,只需要將影像輸入到神經網路就可以得到檢測結果,YOLO 可以非常快的完成物體檢測任務。標準版本的 YOLO 在 Titan X 的 GPU 上能達到 45 FPS。更快的 Fast YOLO 檢測速度可以達到 155 FPS 。而且,YOLO 的 mAP 是之前其他實時物體檢測系統的兩倍以上。

  2. YOLO 可以很好的避免背景錯誤,產生 false positives。
    不像其他物體檢測系統使用了滑窗或 region proposal,分類器只能得到影像的區域性資訊。YOLO 在訓練和測試時都能夠看到一整張影像的資訊,因此 YOLO 在檢測物體時能很好的利用上下文資訊,從而不容易在背景上預測出錯誤的物體資訊。和 Fast-R-CNN 相比,YOLO 的背景錯誤不到 Fast-R-CNN 的一半。

  3. YOLO 可以學到物體的泛化特徵。
    當 YOLO 在自然影像上做訓練,在藝術作品上做測試時,YOLO 表現的效能比 DPM、R-CNN 等之前的物體檢測系統要好很多。因為 YOLO 可以學習到高度泛化的特徵,從而遷移到其他領域。

  • 儘管 YOLO 有這些優點,它也有一些缺點

  1. YOLO 的物體檢測精度低於其他 state-of-the-art 的物體檢測系統。

  2. YOLO 容易產生物體的定位錯誤。

  3. YOLO 對小物體的檢測效果不好(尤其是密集的小物體,因為一個柵格只能預測 2 個物體)。

  4. 召回率低

  5. YOLOv1 最大的劣勢是不夠精確

網路結構及檢測流程
  • 網路結構

YOLO 網路借鑑了 GoogLeNet 分類網路結構,不同的是 YOLO 使用 1x1 卷積層和 3x3 卷積層替代 inception module。如下圖所示,整個檢測網路包括 24 個卷積層和 2 個全連線層。其中,卷積層用來提取影像特徵,全連線層用來預測影像位置和類別機率值。

YOLO目標檢測從V1到V3結構詳解
  • 檢測流程

  • 先將圖片縮放到固定尺寸

  • YOLO 將輸入影像劃分為 S*S (論文中是 7×7)的柵格,每個柵格負責檢測中心落在該柵格中的物體。

  • 每一個柵格預測 B (論文中是 2 個)個 bounding boxes(對每個邊界框會預測 5 個值,分別是邊界框的中心 x,y(相對於所屬網格的邊界),邊界框的寬高 w, h(相對於原始輸入影像的寬高的比例)),以及這些 bounding boxes 的 confidence scores。(邊界框與 ground truth box 的 IOU 值)

  • 同時每個網格還需要預測 c (論文中的 c=20)個類條件機率 (是一個 c 維向量,表示某個物體 object 在這個網格中,且該 object 分別屬於各個類別的機率,這裡的 c 類物體不包含背景)

  • 每個網格需要預測 2x5+20=30 個值,這些值被對映到一個 30 維的向量

  • YOLO 最後採用非極大值抑制(NMS)演算法從輸出結果中提取最有可能的物件和其對應的邊界框。(下面非極大抑制的流程)

    • 1. 設定一個 Score 的閾值,一個 IOU 的閾值(overlap);

    • 2. 對於每類物件,遍歷屬於該類的所有候選框,①過濾掉 Score 低於 Score 閾值的候選框;
      ②找到剩下的候選框中最大 Score 對應的候選框,新增到輸出列表;
      ③進一步計算剩下的候選框與②中輸出列表中每個候選框的 IOU,若該 IOU 大於設定的 IOU 閾值,將該候選框過濾掉(大於一定閾值,代表重疊度比較高),否則加入輸出列表中;
      ④最後輸出列表中的候選框即為圖片中該類物件預測的所有邊界框

    • 3. 返回步驟 2 繼續處理下一類物件。

當 overlap 閾值越大、proposals boxes 被壓制的就越少,結果就是導致大量的 FP (False Positives),進一步導致檢測精度下降與丟失 (原因在於物件與背景影像之間不平衡比率,導致 FP 增加數目遠高於 TP)

當 overlap 閾值很小的時候,導致 proposals boxes 被壓制的很厲害,導致 recall 大幅下降。YOLO目標檢測從V1到V3結構詳解

YOLO目標檢測從V1到V3結構詳解
輸入輸出、損失函式是什麼
  • 輸入:論文中輸入是 448×448

  • 損失函式

    YOLO目標檢測從V1到V3結構詳解

如上圖所示,損失函式分為座標預測(藍色框)、含有物體的邊界框的 confidence 預測(紅色框)、不含有物體的邊界框的 confidence 預測(黃色框)、分類預測(紫色框)四個部分。

由於不同大小的邊界框對預測偏差的敏感度不同,小的邊界框對預測偏差的敏感度更大。為了均衡不同尺寸邊界框對預測偏差的敏感度的差異。作者巧妙的對邊界框的 w,h 取均值再求 L2 loss. YOLO 中更重視座標預測,賦予座標損失更大的權重,記為 coord,在 pascal voc 訓練中 coodd=5 ,classification error 部分的權重取 1。

某邊界框的置信度定義為:某邊界框的 confidence = 該邊界框存在某類物件的機率 pr (object)* 該邊界框與該物件的 ground truth 的 IOU 值 ,若該邊界框存在某個物件 pr (object)=1 ,否則 pr (object)=0 。由於一幅圖中大部分網格中是沒有物體的,這些網格中的邊界框的 confidence 置為 0,相比於有物體的網格,這些不包含物體的網格更多,對梯度更新的貢獻更大,會導致網路不穩定。為了平衡上述問題,YOLO 損失函式中對沒有物體的邊界框的 confidence error 賦予較小的權重,記為 noobj,對有物體的邊界框的 confidence error 賦予較大的權重。在 pascal VOC 訓練中 noobj=0.5 ,有物體的邊界框的 confidence error 的權重設為 1.

  • 輸出:結果是一個 7×7×30 的張量。

結果
YOLO目標檢測從V1到V3結構詳解
YOLO目標檢測從V1到V3結構詳解

YOLOv2

YOLOv2 創新點

YOLOv1 雖然檢測速度快,但在定位方面不夠準確,並且召回率較低。為了提升定位準確度,改善召回率,YOLOv2 在 YOLOv1 的基礎上提出了幾種改進策略

YOLO目標檢測從V1到V3結構詳解
  • Batch Normalization

YOLOv2 中在每個卷積層後加 Batch Normalization (BN) 層,去掉 dropout. BN 層可以起到一定的正則化效果,能提升模型收斂速度,防止模型過擬合。YOLOv2 透過使用 BN 層使得 mAP 提高了 2%。

  • High Resolution Classifier (高解析度)

目前的大部分檢測模型都會使用主流分類網路(如 vgg、resnet)在 ImageNet 上的預訓練模型作為特徵提取器,而這些分類網路大部分都是以小於 256x256 的圖片作為輸入進行訓練的,低解析度會影響模型檢測能力。YOLOv2 將輸入圖片的解析度提升至 448x448,為了使網路適應新的解析度,YOLOv2 先在 ImageNet 上以 448x448 的解析度對網路進行 10 個 epoch 的微調,讓網路適應高解析度的輸入。透過使用高解析度的輸入,YOLOv2 的 mAP 提升了約 4%。

  • Convolutional With Anchor Boxes 使用 anchor box 進行卷積

YOLOv1 利用全連線層直接對邊界框進行預測,導致丟失較多空間資訊,定位不準。YOLOv2 去掉了 YOLOv1 中的全連線層,使用 Anchor Boxes 預測邊界框,同時為了得到更高解析度的特徵圖,YOLOv2 還去掉了一個池化層。由於圖片中的物體都傾向於出現在圖片的中心位置,若特徵圖恰好有一箇中心位置,利用這個中心位置預測中心點落入該位置的物體,對這些物體的檢測會更容易。所以總希望得到的特徵圖的寬高都為奇數。YOLOv2 透過縮減網路,使用 416x416 的輸入,模型下采樣的總步長為 32,最後得到 13x13 的特徵圖,然後對 13x13 的特徵圖的每個 cell 預測 5 個 anchor boxes,對每個 anchor box 預測邊界框的位置資訊、置信度和一套分類機率值。使用 anchor boxes 之後,YOLOv2 可以預測 13x13x5=845 個邊界框,模型的召回率由原來的 81% 提升到 88%,mAP 由原來的 69.5% 降低到 69.2%. 召回率提升了 7%,準確率下降了 0.3%。

  • New Network:Darknet-19

YOLOv2 採用 Darknet-19,其網路結構如下圖所示,包括 19 個卷積層和 5 個 max pooling 層,主要採用 3x3 卷積和 1x1 卷積,這裡 1x1 卷積可以壓縮特徵圖通道數以降低模型計算量和引數,每個卷積層後使用 BN 層 以加快模型收斂同時防止過擬合。最終採用 global avg pool 做預測。採用 YOLOv2,模型的 mAP 值沒有顯著提升,但計算量減少了。

YOLO目標檢測從V1到V3結構詳解
  • Dimension Clusters  維度叢集

在 Faster R-CNN 和 SSD 中,先驗框都是手動設定的,帶有一定的主觀性。YOLOv2 採用 k-means 聚類演算法對訓練集中的邊界框做了聚類分析,選用 boxes 之間的 IOU 值作為聚類指標。綜合考慮模型複雜度和召回率,最終選擇 5 個聚類中心,得到 5 個先驗框,發現其中中扁長的框較少,而瘦高的框更多,更符合行人特徵。透過對比實驗,發現用聚類分析得到的先驗框比手動選擇的先驗框有更高的平均 IOU 值,這使得模型更容易訓練學習。

YOLO目標檢測從V1到V3結構詳解
  • Direct location prediction

Faster R-CNN 使用 anchor boxes 預測邊界框相對先驗框的偏移量,由於沒有對偏移量進行約束,每個位置預測的邊界框可以落在圖片任何位置,會導致模型不穩定,加長訓練時間。YOLOv2 沿用 YOLOv1 的方法,根據所在網格單元的位置來預測座標,則 Ground Truth 的值介於 0 到 1 之間。網路中將得到的網路預測結果再輸入 sigmoid 函式中,讓輸出結果介於 0 到 1 之間。設一個網格相對於圖片左上角的偏移量是 cx,cy。先驗框的寬度和高度分別是 pw 和 ph,則預測的邊界框相對於特徵圖的中心座標 (bx,by) 和寬高 bw、bh 的計算公式如下圖所示。

YOLO目標檢測從V1到V3結構詳解
YOLO目標檢測從V1到V3結構詳解

YOLOv2 結合 Dimention Clusters, 透過對邊界框的位置預測進行約束,使模型更容易穩定訓練,這種方式使得模型的 mAP 值提升了約 5%。

  • Fine-Grained Features (細粒度特性)

YOLOv2 借鑑 SSD 使用多尺度的特徵圖做檢測,提出 pass through 層將高解析度的特徵圖與低解析度的特徵圖聯絡在一起,從而實現多尺度檢測。YOLOv2 提取 Darknet-19 最後一個 max pool 層的輸入,得到 26x26x512 的特徵圖。經過 1x1x64 的卷積以降低特徵圖的維度,得到 26x26x64 的特徵圖,然後經過 pass through 層的處理變成 13x13x256 的特徵圖(抽取原特徵圖每個 2x2 的區域性區域組成新的 channel,即原特徵圖大小降低 4 倍,channel 增加 4 倍),再與 13x13x1024 大小的特徵圖連線,變成 13x13x1280 的特徵圖,最後在這些特徵圖上做預測。使用 Fine-Grained Features,YOLOv2 的效能提升了 1%.
  • Multi-Scale Training

YOLOv2 中使用的 Darknet-19 網路結構中只有卷積層和池化層,所以其對輸入圖片的大小沒有限制。YOLOv2 採用多尺度輸入的方式訓練,在訓練過程中每隔 10 個 batches , 重新隨機選擇輸入圖片的尺寸,由於 Darknet-19 下采樣總步長為 32,輸入圖片的尺寸一般選擇 32 的倍數 {320,352,…,608}。採用 Multi-Scale Training, 可以適應不同大小的圖片輸入,** 當採用低解析度的圖片輸入時,mAP 值略有下降,但速度更快,當採用高解析度的圖片輸入時,能得到較高 mAP 值,但速度有所下降。**
YOLO目標檢測從V1到V3結構詳解
YOLOv2 借鑑了很多其它目標檢測方法的一些技巧,如 Faster R-CNN 的 anchor boxes, SSD 中的多尺度檢測。除此之外,YOLOv2 在網路設計上做了很多 tricks, 使它能在保證速度的同時提高檢測準確率,Multi-Scale Training 更使得同一個模型適應不同大小的輸入,從而可以在速度和精度上進行自由權衡。
YOLOv2 存在的問題

YOLO v2 對 YOLO v1 的缺陷進行最佳化,大幅度高了檢測的效能,但仍存在一定的問題,如無法解決重疊問題的分類等

YOLOv3

創新點
  • 新網路結構:DarkNet-53

YOLO目標檢測從V1到V3結構詳解

將 256x256 的圖片分別輸入以 Darknet-19,ResNet-101,ResNet-152 和 Darknet-53 為基礎網路的分類模型中,實驗得到的結果如下圖所示。可以看到 Darknet-53 比 ResNet-101 的效能更好,而且速度是其 1.5 倍,Darknet-53 與 ResNet-152 效能相似但速度幾乎是其 2 倍。注意到,Darknet-53 相比於其它網路結構實現了每秒最高的浮點計算量,說明其網路結構能更好的利用 GPU。

YOLO目標檢測從V1到V3結構詳解
  • 融合 FPN

YOLOv3 借鑑了 FPN 的思想,從不同尺度提取特徵。相比 YOLOv2,YOLOv3 提取最後 3 層特徵圖,不僅在每個特徵圖上分別獨立做預測,同時透過將小特徵圖上取樣到與大的特徵圖相同大小,然後與大的特徵圖拼接做進一步預測。用維度聚類的思想聚類出 9 種尺度的 anchor box,將 9 種尺度的 anchor box 均勻的分配給 3 種尺度的特徵圖 .

  • 用邏輯迴歸替代 softmax 作為分類器

在實際應用場合中,一個物體有可能輸入多個類別,單純的單標籤分類在實際場景中存在一定的限制。舉例來說,一輛車它既可以屬於 car(小汽車)類別,也可以屬於 vehicle(交通工具),用單標籤分類只能得到一個類別。因此在 YOLO v3 在網路結構中把原先的 softmax 層換成了邏輯迴歸層,從而實現把單標籤分類改成多標籤分類。用多個 logistic 分類器代替 softmax 並不會降低準確率,可以維持 YOLO 的檢測精度不下降。

其他

對於物件檢測,不僅要考慮精度,還要考慮實時執行的效能,雖然現在算力大幅度上升,但是普通的裝置跑起來還是有點吃力。提高精度和加快速率仍是目標檢測的重大課題,道阻且長!

YOLOv1 參考

  • YOLOv1 Paper

  • https://blog.csdn.net/m0_37192554/article/details/81092761

  • https://blog.csdn.net/shuiyixin/article/details/82533849

  • https://github.com/scutan90/DeepLearning-500-questions/blob/master/ch08_% E7%9B% AE% E6% A0%87% E6% A3%80% E6% B5%8B/% E7% AC% AC% E5%85% AB% E7% AB% A0_% E7%9B% AE% E6% A0%87% E6% A3%80% E6% B5%8B.md

  • https://mp.weixin.qq.com/s/1Fboi54DXdoOHJBMoZKVUg

YOLOv2 參考

  • YOLOv2 Paper

  • https://blog.csdn.net/weixin_35654926/article/details/72473024

YOLOv3 參考

  • YOLOv3 Paper

  • https://blog.csdn.net/leviopku/article/details/82660381 :可以詳細看看

https://mp.weixin.qq.com/s/yccBloK5pOVxDIFkmoY7xg:非極大抑制

《深度學習之影像識別核心技術與案例實戰》作者:言有三

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562045/viewspace-2665226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章