YOLOv2 解讀:使 YOLO 檢測更精準更快,嘗試把分類檢測數據集結合使用

Title: YOLO9000: Better, Faster, Stronger(2016)
Link: Paper Website
Tips:

  1. 檢測系統爲什麼要利用分類數據集 ImageNet(1. Introduction)
  2. 理解本文的貢獻:兩個模型,兩個方法(1. Introduction)
  3. 學習提升模型性能的方法,這些 idea 也可以用在自己的模型中(2.Better)
  4. 爲了檢測速度提出一個新的網絡(3. Faster)
  5. 聯合訓練分類和檢測數據的機制(4. Stronger)

Summary:

這篇文章提出的 YOLOv2 是 YOLO 的改進版,它的目的是檢測模型更準,更快,魯棒性更強。

更準→模型的性能更好。作者結合之前的模型改進方法,在模型上加了很多東西,並依次實驗效果。

更快→主要考慮網絡的收斂速度。作者基於之前的模型提出一個新模型。

更強→檢測數據少,分類數據多,那就把兩種數據集合並利用,擴大數據範圍。作者提出改變數據結構和聯合訓練的方法,這個需要我們重點理解。

對我們的啓示:平常看論文要總結影響網絡性能的因素,這些因素可能成爲自己模型的 idea,文中的 2 Better 部分很好地表明瞭這一點。學習聯合訓練的方法,這是一條新思路。


Abstract

本文介紹的 YOLO9000 是一個可檢測 9000 多個檢測類別的先進的實時檢測系統

  • YOLOv2 是 YOLO 的改進版本,在 PASCAL VOC 和 COCO 這些標準數據集上表現很好;
  • 本文還提出一個可以同時訓練檢測任務和圖像分類的方法(COCO detection dataset + ImageNet classification dataset),通過聯合訓練(joint train),YOLO9000 可以檢測無標記檢測數據的物體類別。

1. Introduction

研究現狀
神經網絡的使用提升了檢測框架的速度和準確率,但當前的檢測任務受數據集標籤的限制(數據集必須有標籤或通過分類賦予標籤)。但是,標記要檢測的圖像比標記要分類或標記的昂貴得多,所以檢測數據和分類數據不是一個規模。

解決方法

  1. dataset combination method:本文提出的方法可以利用已有的分類數據集擴充檢測數系統的範圍。我們的方法使用物體分類的分層視圖,該視圖允許我們將不同的數據集組合在一起。
  2. joint training algorithm:本文提出了一種聯合訓練算法,該算法可以在檢測和分類數據上訓練目標檢測器。 利用標記的檢測圖像來學習精準定位,同時使用分類圖像來增加其“詞彙量”和健壯性。

訓練流程

  1. 在 YOLOv1 的基礎上改造產生 YOLOv2;
  2. 使用上述提到的數據結合方法和聯合訓練算法,在 ImageNet 和 COCO 數據集上訓練 YOLOv2 模型,訓練好的模型叫 YOLO9000(檢測類別超過 9000)。

2. Better

與 state-of-the-art detection systems 相比,YOLOv1 的兩個缺點是定位(localization)不準和召回率(recall)低,所以我們的目標是保證分類準確率的同時提升定位和召回率情況

CV領域提升模型性能的常用方法是訓練更深的網絡和模型融合,但是 YOLOv2 的目標是保證速度的同時提升準確率,所以本文的方法是簡化模型,使特徵表達更易學習,因此 本文結合了之前的一些方法和自己的理念來提升 YOLOv2 的性能

下面介紹一些可能提升性能的 idea:

Batch Normalization → convergence + regularization

Batch normalization 可以改善收斂性,提升泛化能力。 通過在YOLO的所有卷積層上添加 batch normalization,指標 mAP 增長了2%以上。有了 batch normalization,移除 dropout 也不會導致過擬合。

High Resolution Classifier
現有 state-of-the-art 檢測模型都是使用在 ImageNet 上預訓練的分類器,輸入圖像的分辨率都小於 256 × 256,YOLOv1 使用的分類器預訓練的圖像分辨率是 224 × 224 檢測時的圖像分辨率增加到 448×448,這意味者 YOLOv1 網絡需要在目標檢測和適應新的分辨率中切換

爲提高檢測高分辨率圖像的能力,把檢測和高分辨率兩個任務分開:先在 448×448 的 ImageNet 圖像上微調分類網絡,然後微調檢測網絡。

高分辨率的分類網絡使mAP增長了近4%。

Convolutional With Anchor Boxes
YOLO 使用卷積特徵提取器頂部的 FC 層直接預測邊界框的座標,而 YOLOv2 移除了 FC 層,用 anchor box 預測邊界框。這樣就把分類機制與空間位置解耦,可以直接爲每個 anchor box 預測類別。

anchor box 使精度下降——mAP 從69.5 降到 69.2,但是 recall 從 81% 提升到 88%,這說明我們的模型還有提升的空間。

Dimension Clusters
使用 anchor box 遇到的第一個問題是:bounding box 的尺寸是手工挑選的。

網絡可以學習適當地調整框,但是如果我們爲網絡選擇更好的先驗條件,則可以使網絡更容易學習預測良好的檢測結果。

使用 k-means 聚類找先驗條件。先驗條件是爲了帶來好的 IOU 分數,與框尺寸無關,因此距離度量爲

實驗表明使用 k 均值生成邊界框可以更好地表示模型,並使任務更易於學習。

Direct location prediction
使用 anchor box 遇到的第二個問題是:模型不穩定,尤其是在早期迭代期間。大部分的不穩定來源於預測邊界框的位置(座標)。

代替預測偏移量,我們預測相對於網格單元位置的位置座標,ground truth 的範圍是0到1。

與使用 anchor box 的版本相比,使用 dimension clusters 以及直接預測邊界框中心位置可使 YOLO 提高近5%。

Fine-Grained Features(細粒度特徵)
修改後的 YOLO 可以預測 13×13 大小的特徵圖上的檢測結果。 這對於大型對象已經足夠,更細粒度的特徵有利於定位較小對象。

我們再網絡中添加一個 passthrough layer,該層將相鄰特徵堆疊到不同的通道而不是空間位置中,從而將高分辨率特徵與低分辨率特徵連接在一起( 26 × 26 × 512 → 13 × 13 × 2048)

擴展的特徵圖可以得到更細粒度的特徵,使性能提高了 1%。

Multi-Scale Training
爲了使 YOLOv2 對不同尺寸的圖像都魯棒,訓練時隨着迭代改變網絡,每 10 個 batch 隨機選擇一個新的圖像尺寸訓練。這個機制強制網絡學會預測不同尺寸的圖片。

3. Faster

我們希望 YOLOv2 檢測時不但準還要快。

YOLO框架使用基於Googlenet架構的自定義網絡, 它比 VGG-16 快,但精度比 VGG-16 稍差。

Darknet-19
YOLOv2 的基礎模型是新提出的 Darknet-19,它有 19 個卷積層和 5 個最大池化層。在 ImageNet 上的性能爲 72.9% 的 top-1 accuracy 和 91.2% 的 top-5 accuracy。

Darknet-19 是在之前網絡的基礎上設計的,使用批量歸一化來穩定訓練,加快收斂速度,並使模型正規化。

Training for classification
初始訓練的圖片是 224 × 224,稍後在更大尺寸(448)圖像上微調網絡,在更高分辨率的圖像上網絡的性能爲 76.5% 的 top-1 accuracy 和 93.3% 的 top-5 accuracy。

Training for detection
修改網絡:刪除最後一個卷積層,並在三個 3×3 卷積層上分別添加 1024 個 filter,每個 filter 再加上最終的1×1卷積層以及需要檢測的輸出數量,來修改此網絡以進行檢測。

4. Stronger

我們提出了一種聯合訓練分類和檢測數據的機制——把檢測和分類數據混合,訓練過程中遇到帶標籤的檢測圖像,就基於 YOLOv2 整個損失函數進行反向傳播,遇到分類圖像,只反向傳播網絡的分類損失。

Challenge
檢測數據集的 lable 少且普通,分類數據集的 lable 多且具體,如果我們想在兩個數據集上訓練,就得把它們的標籤合併起來。

很多分類方法都用一個 softmax layer ,但它的前提是假設所有類互斥(mutually exclusive),但我們的數據集類別是不都是互斥的(有可能是包含的例如狗和金毛犬),所以我們使用了一個多標籤模型來組合數據集(無互斥的要求),也就是多個 softmax 。

Hierarchical classification
大多數分類方法都假定標籤採用扁平結構,但是對於組合數據集我們需要層次化的結構。

ImageNet labels 來源於 WordNet(語言數據集),因爲語言比較複雜,因此標籤採用有向圖結構。在這裏,作者把數據集的結構簡化爲結構樹(hierarchical tree)。

通過改造圖,最後得到一個 WordTree,這是一個視覺概念的層次模型。樹的每個節點/標籤都能用條件概率表示:在這裏插入圖片描述
一個節點(lable)的具體概率可以這樣計算:
在這裏插入圖片描述
這樣每個節點/標籤都有自己的概率,解決了類別之間不互斥的問題,就能在檢測集和分類集上聯合訓練。

使用與以前相同的訓練參數,我們的分層Darknet-19達到71.9%的top-1準確性和90.4%的top-5準確性。

Joint classification and detection
現在我們可以使用WordTree合併數據集,我們可以在分類集和檢測集上訓練我們的聯合模型。

數據集組成是 COCO detection dataset 和 ImageNet 中的 9000 個類,相應的 WordTree 有 9418 個類。

在這個數據集上,使用基礎模型 YOLOv2 訓練得到的模型稱爲 YOLO9000。方法就是本節開始提到的聯合訓練機制。分類損失中,如果標籤爲“狗”,預測爲更具體的“金毛犬”,則預測錯誤。

通過聯合訓練,YOLO9000 學會了使用 COCO 中的檢測數據來檢測圖像,並且學會了使用 ImageNet 中的數據對這些對象分類。

5. Conclusion

總結還是圍繞貢獻:兩個模型,兩個方法。

本文提出的兩個模型 YOLOv2YOLO9000,它們之間的關係是:

  • YOLOv2 是 YOLOv1 的改進版本,它比 YOLOv1 檢測得更準更快(第 2 3 節的介紹);
  • YOLO9000 是 YOLOv2 在組合數據集上聯合訓練後得到的可檢測9000多個類別的目標檢測系統。(第 4 節的介紹)

本文提出的兩個方法主要用於數據集的聯合訓練:

  • WordTree 表示圖像標籤可以組合檢測和分類數據集;
  • 聯合訓練機制解決了在組合數據集上如何利用兩類數據的問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章