yolo9000是在yolov2的基礎上提出的一種聯合訓練方法,可以檢測超過9000個類別的模型。yolov2混合目標檢測資料集和分類資料集,用目標檢測資料集及其類別標記資訊和位置標註資訊訓練模型學習**目標定位和分類,用分類資料集及其類別標記資訊進一步擴充模型所能識別的物體類別同時能增強模型魯棒性。
yolo9000根據各個類別之間的從屬關係建立一種樹結wordtree,將coco資料集和imagenet資料集組織起來。
wordtree的生成方式如下:
1.首先遍歷imagenet中的類別名詞。
2. 對每個名詞,在wordnet(一種結構化概念及概念之間關係的語言資料庫)上找到從它所在位置到根結點(設根結點為實體物件physical object)的最短路徑,由於在wordnet中大多數同義詞只有乙個路徑,所以先把該路徑的詞全都加到樹中。
3. 迭代地檢查剩下的名詞,取它到根節點的最短路徑,將該最短路徑上的還沒出現在層次樹中的詞加入到樹中。混合後的資料集形成乙個有9418類的wordtree。生成的wordtree模型如下圖所示。另外考慮到coco資料集相對於imagenet資料集資料量太少了,為了平衡兩個資料集,作者進一步對coco資料集過取樣,使coco資料集與imagenet資料集的資料量比例接近1:4。
對於物體的標籤,採用one-hot編碼的形式,資料集中的每個物體的類別標籤被組成1個長度為9418的向量,向量中除在wordtree中從該物體對應的名詞到根結點的路徑上出現的詞對應的類別標號處為1,其餘位置為0。
yolo9000採用yolov2的結構,anchor box由原來的5調整到3,對每個anchor box**其對應的邊界框的位置資訊x,y,w,h和置信度以及所包含的物體分別屬於9418類的概率,所以每個anchor box需要**4+1
+9418
=9423
4 + 1 + 9418 = 9423
4+1+94
18=9
423個值。每個網格需要**3
×9423
=28269
3\times 9423 = 28269
3×9423
=282
69個值。在訓練過程中,當網路遇到來自檢測資料集的時,用完整的yolov2loss進行反向傳播計算,當網路遇到來自分類資料集的時,只用分類部分的loss進行反向傳播。
wordtree中每個節點的子節點都屬於同乙個子類,分層次的對每個子類的節點進行一次softmax處理,以得到同義詞集合中的每個詞的下義詞的概率。當需要**屬於某個類別的概率時,需要**該類別節點的條件概率。即在wordtree上找到該類別名詞的根結點的路徑,計算路徑上每個節點的概率之積。**時,yolov2得到置信度,同時會給出邊界框位置以及乙個樹狀概率圖,沿著根結點向下,沿著置信度最高的分枝向下,直到達到某個閾值,最後到達的節點類別即為**物體的類別。
yolo9000使用wordtree混合目標檢測資料集和分類資料集,並在其上進行聯合訓練,使之能實時檢測出超過9000個類別的物體,其強大令人讚嘆不已。yolo9000尤其對動物的識別效果很好,但是對衣服或者裝置等類別的識別效果不是很好,可能的原因是與目標檢測資料集中的資料偏向有關。
深度學習目標檢測 YOLO專題
資源搜尋 yolo v1,v2,v3的記錄 學習筆記 yolo系列 v1 v2與v3 you only look once yolov1,看過好多篇,這篇感覺講的最通俗易懂 yolo官方主頁 本人總結 在開始進入具體演算法實現之前,我們還是先簡單隨便聊一聊。目標檢測應該說是計算機視覺領域中比較好玩而...
目標檢測 YOLO演算法
r cnn系列目標檢測方法 r cnn,fast r cnn,faster r cnn 看做目標檢測,都是需要 看兩眼 的。即,第一眼做 region proposals 獲得所有候選目標框,第二眼對所有候選框做 box classifier候選框分類 才能完成目標檢測 事實上 第一眼 是挺費時間的...
目標檢測YOLO實現
注 本文參考 git clone cd darknet make 編譯沒有問題的話輸出資訊如下 mkdir p obj gcc i usr local cuda include wall wfatal errors ofast.gcc i usr local cuda include wall wf...