(六)YOLOv2----2017CVPR論文解讀

YOLO9000:Better, Faster, Stronger

YOLO9000:更好,更快,更強大

Abstract

我們介紹了YOLO9000,這是一種先進的實時對象檢測系統,可以檢測9000多個對象類別。首先,我們建議對YOLO檢測方法進行各種改進,無論是新穎的還是從以前的工作中得出的。改進的模型YOLOv2在標準檢測任務(例如P ASCAL VOC和COCO)方面是最新的。使用新穎的,多尺度的訓練方法,相同的YOLOv2模型可以在不同的大小上運行,從而在速度和準確性之間輕鬆權衡。以67 FPS速度運行時,YOLOv2在VOC 2007上獲得76.8 mAP。以40 FPS速度運行時,YOLOv2獲得78.6 mAP,優於採用ResNet和SSD以及Faster RCNN的最新方法,但運行速度仍顯着提高。最後,我們提出了一種聯合訓練目標檢測和分類的方法。使用這種方法,我們在COCO檢測數據集和ImageNet分類數據集上同時訓練YOLO9000。通過我們的聯合訓練,YOLO9000可以預測沒有標記檢測數據的物體類別的檢測結果。我們驗證了ImageNet檢測任務的方法。儘管僅擁有200個類別中的44個類別的檢測數據,但YOLO9000在ImageNet檢測驗證集上獲得了19.7 mAP。在COCO以外的156個類別中,YOLO9000的平均得分爲16.0。但是YOLO可以檢測到200多個類。它可以預測9000多種不同物體類別的檢測結果。而且它仍然實時運行。

摘要

  1. 提出YOLO v2 :代表着目前業界最先進物體檢測的水平,它的速度要快過其他檢測系統(FasterR-CNN,ResNet,SSD),使用者可以在它的速度與精確度之間進行權衡。
  2. 提出YOLO9000 :這一網絡結構可以實時地檢測超過9000種物體分類,這歸功於它使用了WordTree,通過WordTree來混合檢測數據集與識別數據集之中的數據。
  3. 提出了一種新的聯合訓練算法(Joint Training Algorithm),使用這種聯合訓練技術同時在ImageNet和COCO數據集上進行訓練。YOLO9000進一步縮小了監測數據集與識別數據集之間的代溝。

簡介

目前的檢測數據集(Detection Datasets)有很多限制,分類標籤的信息太少,圖片的數量小於分類數據集(Classification Datasets),而且檢測數據集的成本太高,使其無法當作分類數據集進行使用。而現在的分類數據集卻有着大量的圖片和十分豐富分類信息。

文章提出了一種新的訓練方法–聯合訓練算法。這種算法可以把這兩種的數據集混合到一起。使用一種分層的觀點對物體進行分類,用巨量的分類數據集數據來擴充檢測數據集,從而把兩種不同的數據集混合起來。

聯合訓練算法的基本思路就是:同時在檢測數據集和分類數據集上訓練物體檢測器(Object Detectors ),用檢測數據集的數據學習物體的準確位置,用分類數據集的數據來增加分類的類別量、提升健壯性。

YOLO9000就是使用聯合訓練算法訓練出來的,他擁有9000類的分類信息,這些分類信息學習自ImageNet分類數據集,而物體位置檢測則學習自COCO檢測數據集。

BETTER
YOLO一代有很多缺點,作者希望改進的方向是:改善recall,提升定位的準確度,同時保持分類的準確度

目前計算機視覺的趨勢是更大更深的網絡,更好的性能表現通常依賴於訓練更大的網絡或者把多種model綜合到一起。但是YOLO v2則着力於簡化網絡。具體的改進見下表:
在這裏插入圖片描述
• Batch Normalization 批標準化
使用Batch Normalization對網絡進行優化,讓網絡提高了收斂性,同時還消除了對其他形式的正則化(regularization)的依賴。通過對YOLO的每一個卷積層增加Batch Normalization,最終使得mAP提高了2%,同時還使model正則化。使用Batch Normalization可以從model中去掉Dropout,而不會產生過擬合

• High resolution classifier 高分辨率分類器
目前業界標準的檢測方法,都要先把分類器(classifier)放在ImageNet上進行預訓練。從Alexnet開始,大多數的分類器都運行在小於256256的圖片上。而現在YOLO從224224增加到了448*448,這就意味着網絡需要適應新的輸入分辨率。

爲了適應新的分辨率,YOLO v2的分類網絡以448*448的分辨率先在ImageNet上進行Fine Tune,Fine Tune10個epochs,讓網絡有時間調整他的濾波器(filters),好讓其能更好的運行在新分辨率上,還需要調優用於檢測的Resulting Network。最終通過使用高分辨率,mAP提升了4%。

• Convolution with anchor boxes錨框卷積
YOLO一代包含有全連接層,從而能直接預測Bounding Boxes的座標值。 Faster R-CNN的方法只用卷積層與Region Proposal Network來預測Anchor Box的偏移值與置信度,而不是直接預測座標值。作者發現通過預測偏移量而不是座標值能夠簡化問題,讓神經網絡學習起來更容易。

所以最終YOLO去掉了全連接層,使用Anchor Boxes來預測 Bounding Boxes。作者去掉了網絡中一個Pooling層,這讓卷積層的輸出能有更高的分辨率。收縮網絡讓其運行在416416而不是448448。由於圖片中的物體都傾向於出現在圖片的中心位置,特別是那種比較大的物體,所以有一個單獨位於物體中心的位置用於預測這些物體。YOLO的卷積層採用32這個值來下采樣圖片,所以通過選擇416416用作輸入尺寸最終能輸出一個1313的Feature Map。 使用Anchor Box會讓精確度稍微下降,但用了它能讓YOLO能預測出大於一千個框,同時召回率(recall)達到88%,mAP達到69.2%

• Dimension clusters維度羣集
之前Anchor Box的尺寸是手動選擇的,所以尺寸還有優化的餘地。 爲了優化,在訓練集(training set)Bounding Boxes上跑了一下k-means聚類,來找到一個比較好的值。

如果我們用標準的歐式距離的k-means,尺寸大的框比小框產生更多的錯誤。因爲我們的目的是提高IOU分數,這依賴於Box的大小,所以距離度量的使用:
在這裏插入圖片描述
通過分析實驗結果(Figure 2),左圖:在model複雜性與high recall之間權衡之後,選擇聚類分類數K=5。右圖:是聚類的中心,大多數是高瘦的Box。

Table1是說明用K-means選擇Anchor Boxes時,當Cluster IOU選擇值爲5時,AVG IOU的值是61,這個值要比不用聚類的方法的60.9要高。選擇值爲9的時候,AVG IOU更有顯著提高。總之就是說明用聚類的方法是有效果的。
在這裏插入圖片描述

• Direct location prediction 直接位置預測
用Anchor Box的方法,會讓model變得不穩定,尤其是在最開始的幾次迭代的時候。大多數不穩定因素產生自預測Box的(x,y)位置的時候。按照之前YOLO的方法,網絡不會預測偏移量,而是根據YOLO中的網格單元的位置來預測座標,這就讓Ground Truth的值介於0到1之間。而爲了讓網絡的結果能落在這一範圍內,網絡使用一個 Logistic Activation來對於網絡預測結果進行限制,讓結果介於0到1之間。 網絡在每一個網格單元中預測出5個Bounding Boxes,每個Bounding Boxes有五個座標值tx,ty,tw,th,t0,他們的關係見下圖(Figure3)。

假設一個網格單元對於圖片左上角的偏移量是cx,cy,Bounding Boxes Prior的寬度和高度是pw,ph,那麼預測的結果見下圖右面的公式:
在這裏插入圖片描述
因爲使用了限制讓數值變得參數化,也讓網絡更容易學習、更穩定。Dimension clusters和Direct location prediction,improves YOLO by almost 5% over the version with anchor boxes.

• Fine-Grained Features細粒度功能
YOLO修改後的Feature Map大小爲1313,這個尺寸對檢測圖片中尺寸大物體來說足夠了,同時使用這種細粒度的特徵對定位小物體的位置可能也有好處。Faster F-CNN、SSD都使用不同尺寸的Feature Map來取得不同範圍的分辨率,而YOLO採取了不同的方法,YOLO加上了一個Passthrough Layer來取得之前的某個2626分辨率的層的特徵。這個Passthrough layer能夠把高分辨率特徵與低分辨率特徵聯繫在一起,聯繫起來的方法是把相鄰的特徵堆積在不同的Channel之中,這一方法類似與Resnet的Identity Mapping,從而把2626512變成13132048。YOLO中的檢測器位於擴展後(expanded )的Feature Map的上方,所以他能取得細粒度的特徵信息,這提升了YOLO 1%的性能。

• Multi-ScaleTraining多尺度訓練
作者希望YOLO v2能健壯的運行於不同尺寸的圖片之上,所以把這一想法用於訓練model中。區別於之前的補全圖片的尺寸的方法,YOLO v2每迭代幾次都會改變網絡參數。每10個Batch,網絡會隨機地選擇一個新的圖片尺寸,由於使用了下采樣參數是32,所以不同的尺寸大小也選擇爲32的倍數 {320,352……608},最小320 * 320,最大608*608,網絡會自動改變尺寸,並繼續訓練的過程。

這一政策讓網絡在不同的輸入尺寸上都能達到一個很好的預測效果,同一網絡能在不同分辨率上進行檢測。當輸入圖片尺寸比較小的時候跑的比較快,輸入圖片尺寸比較大的時候精度高,所以你可以在YOLO v2的速度和精度上進行權衡。

Figure4,Table 3:在voc2007上的速度與精度
在這裏插入圖片描述
• Further Experiments進一步實驗
在這裏插入圖片描述
在這裏插入圖片描述
Faster
YOLO使用的是Googlenet架構,比VGG-16快,YOLO完成一次前向過程只用8.52 billion 運算,而VGG-16要30.69billion,但是YOLO精度稍低於VGG-16。

• Draknet19
YOLO v2基於一個新的分類model,有點類似與VGG。YOLO v2使用3*3filter,每次Pooling之後都增加一倍Channels的數量。YOLO v2使用全局平均Pooling,使用Batch Normilazation來讓訓練更穩定,加速收斂,使model規範化。最終的model–Darknet19,有19個卷積層和5個maxpooling層,處理一張圖片只需要5.58 billion次運算,在ImageNet上達到72.9%top-1精確度,91.2%top-5精確度。

• Training for classification
網絡訓練在 ImageNet 1000類分類數據集,訓練了160epochs,使用隨機梯度下降,初始學習率爲0.1, polynomial rate decay with a power of 4, weight decay of 0.0005 and momentum of 0.9 。訓練期間使用標準的數據擴大方法:隨機裁剪、旋轉、變換顏色(hue)、變換飽和度(saturation), 變換曝光度(exposure shifts)

在訓練時,把整個網絡在更大的448*448分辨率上Fine Turnning 10個 epoches,初始學習率設置爲0.001,這種網絡達到達到76.5%top-1精確度,93.3%top-5精確度。

• Training for detection
網絡去掉了最後一個卷積層,而加上了三個3 * 3卷積層,每個卷積層有1024個Filters,每個卷積層緊接着一個1*1卷積層, with the number of outputs we need for detection。對於VOC數據,網絡預測出每個網格單元預測五個Bounding Boxes,每個Bounding Boxes預測5個座標和20類,所以一共125個Filters,增加了Passthough層來獲取前面層的細粒度信息,網絡訓練了160epoches,初始學習率0.001,dividing it by 10 at 60 and 90 epochs,a weight decay of 0.0005 and momentum of 0.9,數據擴大方法相同,對COCO與VOC數據集的訓練對策相同。

Stronger

在訓練的過程中,當網絡遇到一個來自檢測數據集的圖片與標記信息,那麼就把這些數據用完整的YOLO v2 loss功能反向傳播這個圖片。當網絡遇到一個來自分類數據集的圖片和分類標記信息,只用整個結構中分類部分的loss功能反向傳播這個圖片。但是檢測數據集只有粗粒度的標記信息,像“貓“、“ 狗”之類,而分類數據集的標籤信息則更細粒度,更豐富。比如狗這一類就包括”哈士奇“”牛頭梗“”金毛狗“等等。所以如果想同時在監測數據集與分類數據集上進行訓練,那麼就要用一種一致性的方法融合這些標籤信息。

再者,用於分類的方法,大多是用softmax layer方法,softmax意味着分類的類別之間要互相獨立的。而盲目地混合數據集訓練,就會出現比如:檢測數據集的分類信息中”狗“這一分類,在分類數據集合中,就會有的不同種類的狗”哈士奇“”牛頭梗“”金毛“這些分類,這兩種數據集之間的分類信息不相互獨立。所以使用一種多標籤的model來混合數據集,假設一個圖片可以有多個分類信息,並假定分類信息必須是相互獨立的規則可以被忽略。

• Hierarchical classification
WordNet的結構是一個直接圖表(directed graph),而不是樹型結構。因爲語言是複雜的,狗這個詞既屬於‘犬科’又屬於‘家畜’兩類,而‘犬科’和‘家畜’兩類在wordnet中則是同義詞,所以不能用樹形結構。

作者希望根據ImageNet中包含的概念來建立一個分層樹,爲了建立這個分層樹,首先檢查ImagenNet中出現的名詞,再在WordNet中找到這些名詞,再找到這些名詞到達他們根節點的路徑(在這裏設爲所有的根節點爲實體對象(physical object))。在WordNet中,大多數同義詞只有一個路徑,所以首先把這條路徑中的詞全部都加到分層樹中。接着迭代地檢查剩下的名詞,並儘可能少的把他們添加到分層樹上,添加的原則是取最短路徑加入到樹中。

爲了計算某一結點的絕對概率,只需要對這一結點到根節點的整條路徑的所有概率進行相乘。所以比如你想知道一個圖片是否是Norfolk terrier的概率,則進行如下計算:
在這裏插入圖片描述
爲了驗證這一個方法,在WordTree上訓練Darknet19的model,使用1000類的ImageNet進行訓練,爲了建立WordtTree 1K,把所有中間詞彙加入到WordTree上,把標籤空間從1000擴大到了1369。在訓練過程中,如果有一個圖片的標籤是”Norfolk terrier“,那麼這個圖片還會獲得”狗“(dog)以及“哺乳動物”(mammal)等標籤。總之現在一張圖片是多標記的,標記之間不需要相互獨立。

如Figure5所示,之前的ImageNet分類是使用一個大softmax進行分類。而現在,WordTree只需要對同一概念下的同義詞進行softmax分類。

使用相同的訓練參數,這種分層結構的Darknet19達到71.9%top-1精度和90.4%top-5精確度,精度只有微小的下降。

這種方法的好處:在對未知或者新的物體進行分類時,性能降低的很優雅(gracefully)。比如看到一個狗的照片,但不知道是哪種種類的狗,那麼就高置信度(confidence)預測是”狗“,而其他狗的種類的同義詞如”哈士奇“”牛頭梗“”金毛“等這些則低置信度。
在這裏插入圖片描述
• Datasets combination with wordtree
用WordTree 把數據集合中的類別映射到分層樹中的同義詞上,例如上圖Figure 6,WordTree混合ImageNet與COCO。

• Joint classification and detection
作者的目的是:訓練一個Extremely Large Scale檢測器。所以訓練的時候使用WordTree混合了COCO檢測數據集與ImageNet中的Top9000類,混合後的數據集對應的WordTree有9418個類。另一方面,由於ImageNet數據集太大了,作者爲了平衡一下兩個數據集之間的數據量,通過過採樣(oversampling)COCO數據集中的數據,使COCO數據集與ImageNet數據集之間的數據量比例達到1:4。

YOLO9000的訓練基於YOLO v2的構架,但是使用3priors而不是5來限制輸出的大小。當網絡遇到檢測數據集中的圖片時則正常地反方向傳播,當遇到分類數據集圖片的時候,只使用分類的loss功能進行反向傳播。同時作者假設IOU最少爲 .3。最後根據這些假設進行反向傳播。

使用聯合訓練法,YOLO9000使用COCO檢測數據集學習檢測圖片中的物體的位置,使用ImageNet分類數據集學習如何從大量的類別中進行分類。爲了評估這一方法,使用ImageNet Detection Task對訓練結果進行評估。評估結果:YOLO9000取得19.7mAP。

在未學習過的156個分類數據上進行測試,mAP達到16.0。YOLO9000的mAP比DPM高,而且YOLO有更多先進的特徵,YOLO9000是用部分監督的方式在不同訓練集上進行訓練,同時還能檢測9000個物體類別,並保證實時運行。

雖然YOLO9000對動物的識別性能很好,但是對類別爲”sungalsses“或者”swimming trunks“這些衣服或者裝備的類別,它的識別性能不是很好,見table 7。這跟數據集的數據組成有很大關係。

在這裏插入圖片描述

總結

YOLO v2 代表着目前最先進物體檢測的水平,在多種監測數據集中都要快過其他檢測系統,並可以在速度與精確度上進行權衡。

YOLO 9000 的網絡結構允許實時地檢測超過9000種物體分類,這歸功於它能同時優化檢測與分類功能。使用WordTree來混合來自不同的資源的訓練數據,並使用聯合優化技術同時在ImageNet和COCO數據集上進行訓練,YOLO9000進一步縮小了監測數據集與識別數據集之間的大小代溝。文章還提出了WordTree,數據集混合訓練,多尺寸訓練等全新的訓練方法。
本文有以下幾點非常值得參考:
一,對模型的一系列分析和改進非常值得參考;
二,採用多尺度訓練方法,使模型可以適應不同的輸入尺寸,非常值得參考。
三,綜合不同數據集的方法非常值得參考;
四,聯合訓練方法也是非常值得參考;
五,YOLO端到端實時檢測和識別的思路非常值得參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章