當前位置:
首頁 > 最新 > YOLO9000好棒好快好強壯 閱讀筆記

YOLO9000好棒好快好強壯 閱讀筆記

本文作者小胖魚,原在於知乎專欄前沿機器視覺。AI研習社已獲得作者授權。

論文(YOLO9000:Better,Faster,Stronger)閱讀筆記,由於論文較新,所以文中的很多辭彙並沒有對應的中文官方叫法,因此會保留一部分英文。這篇文章可以說寫出來的難度比第一篇Densely Connected Convolutional Networks論文閱讀的難度大很多,時間也耗費得多得多。因為裡面涉及到很多預備知識,我都盡自己最大努力地通俗易懂地解釋,希望能讓對目標檢測領域沒那麼熟悉的同學更容易地理解,因此文章寫得很長,大家可以分成幾部分閱讀。

可以說這只是一個簡單的開始,因為我大概地掃了一眼這學期準備學習的論文,毫不誇張地說,YOLO9000算是最容易理解的那一類論文了。希望自己可以堅持地寫下去,分享自己的學習心得。

此外,大家如果覺得對自己有幫助,能點一個贊的話,不勝感激^_^。同時歡迎大家指出文中出現的紕漏和我個人理解不對的地方。如需轉載,請私信我,感謝。

本篇主要分為解決的問題、網路結構、創新點、評估方法、結果分析五個部分介紹。

一、解決的問題

目標檢測一直是機器視覺領域的一個熱點,RCNN、fast RCNN、faster RCNN、SSD等傑出的方法層出不窮。但是這些目標檢測方法都受限於數據集只能檢測較小的物體種類(20種)。由於目標檢測數據集的標定比物體識別的數據集的標定要昂貴的多,因此想要獲得想ImageNet這種級別的目標檢測數據集是幾乎不可能完成的任務。如何訓練出能識別出許多種物體的目標檢測模型就顯得極為誘人。本文作者提出了一種聯合訓練的方法將目標檢測數據集與分類數據集結合,使得YOLOv2網路能夠識別9000種物體,升級為YOLO9000。

(一直覺得目標檢測很酷,很像終結者里T800/T850的視角,可以把YOLO類比成T800視角,YOLOv2為T850,YOLO9000是T1000,TX等待人們開發中。。。)

二、網路結構

1. YOLO結構(終結者T800)

來調整的權重。如圖所示,YOLO實現了一個目標檢測領域的端對端模型。通過一個大的loss function將bounding box檢測和物體識別同時訓練,使用不同的來調整的權重。

2. YOLOv2改進(終結者T850)

作者在YOLO一代網路上做出了如下改進,升級為YOLO二代。

Better

1)批規範化(Batch Normalization)

Batch Normalization的作用是提高了網路模型的魯棒性,緩解了Covariant Shift問題,有一定的正則化(regularization)作用,在這裡也不例外。通過在YOLO所有的卷積層中加入Batch Normalization,可以使得mAP提高2%,並且dropout的部分也可以丟掉。

2)高解析度分類器(High Resolution Classifier)

從AlexNet開始,大多數的分類器都在解析度小於256*256的圖像上執行分類。YOLO一代在訓練分類網路的時候用的是224*224解析度,檢測網路的時候用的是448*448解析度,這就意味著網路需要同時切換到目標檢測並且適應新的解析度。在YOLO二代中,直接使用448*448的解析度微調(fine tune)了網路,訓練了10個epoch。可以使得mAP提高大概4%。

3.使用Anchor Box

YOLO使用全連接層來預預測檢測框的坐標和長寬。與faster RCNN相比,YOLO只能預測98個框,數量太少,在檢測數量較多的物體比如人群,鴨群等的時候誤差較大。並且faster RCNN網路預測的是檢測框的偏移度(offset),可以簡化問題並且使得網路能更容易地學習。

因此YOLOv2將全連接層移除,引入了anchor box。並且將網路輸入從448調整為416,這是為了使經過卷積層下採樣(downsample)以後,能得到唯一的中心點(416/32=13)。因此輸入為13*13的feature maps。

在未使用anchor box的情況下,模型的recall為81%,mAP為69.5,使用anchor box的情況下,模型的recall為88%,mAP為69.2。儘管mAP略有降低,但是recall得到了較大的提升。

4.通過K-means來學習出anchor box

faster RCNN中,anchor box是手動選擇的,作者想找出一個更好的anchor box來訓練網路,因此作者使用了K-means聚類用於得到更好的anchor box。K-means主要用與預測anchor box的長跟寬。

在這裡,如果K-means聚類採用的事歐氏距離的話,那麼尺寸大的box比尺寸小的box對error的影響更大,所以作者提出了使用IOU , (Intersection over Union, 交集/並集)來度量距離:

d(box, centroids) = 1 – IOU(box, centroids)

聚類結果如圖,左圖代表Avg IOU與聚類數目K的關係,在權衡Avg IOU和模型複雜度以後,作者選擇了K=5。右圖代表了VOC和COCO數據集的box的聚類結果。可以看出聚類所得到的anchor box與手動選擇相比,更傾向於選擇高瘦的anchor box。

不同方法得到的Avg IOU如下表所示:

可以看出,使用聚類演算法得到的anchor box在其數量為5時就可以得到與手動選擇的anchor box數量為9時幾乎相同的Avg IOU,而在聚類演算法得到anchor box數量為9是它的Avg IOU是優於手動選擇的(67.2> 60.9)。這也證明了聚類演算法的得到的anchor box更好。

5.Directed Location Prediction

用Anchor Box的方法,會讓model變得不穩定,尤其是在最開始的幾次迭代的時候。而不穩定的因素主要來自於預測bounding box坐標(x, y)的時候。理解它的產生原因,我們需要先看一下faster RCNN的預測檢測框的方法。

如下圖所示,在faster RCNN中,box主要分為Ground True Box(人工標定的真正的檢測框),Anchor Box和網路預測出的Predict Box。

faster RCNN預測的是Ground True/Predict Box與Anchor Box的偏移量,因此有如下公式:

x,y,w,h分別表示box的中心坐標和寬高,分別表示 predicted box, anchor box和ground truth的x坐標值 (y,w,h同理)。表示predict box相對於anchor box的偏移,表示ground true box相對於anchor box的偏移,學習目標自然就是讓前者接近後者的值。

對應的,關於檢測框中心點坐標則通過如下公式計算:

這樣會帶來一個問題,即當較大時(>=1),檢測框可能跳到圖像上的任意位置。因此YOLO的作者在此基礎上做出了如下改進來限制檢測框的跳動:

YOLOv2與YOLO網路相似,預測的是(x, y)的坐標值而非偏移量。並且作者通過sigmoid函數將偏移量限制在0到1之間,計算公式如下:

其中分別代表predict box的中心坐標x,y和它的長和寬,還有目標為物體b的概率(信心)。

如圖所示,這種限制使得predict box的跳躍被限制在以

為對角線的網格中。

使用 Dimension Clusters與Directed Location Prediction為YOLO網路帶來了5%的提升。

6.細分類特徵(Fine-Grained Features)

Faster F-CNN、SSD都使用不同尺寸的Feature Map來取得不同範圍的解析度,而YOLOv2採取了不同的方法,YOLOv2加上了一個跳躍層(Passthrough Layer)來獲取之前的26*26解析度的層的特徵。這個Passthrough layer能夠把高解析度特徵與低解析度特徵連結(concatenate)起來,這種方式看起來與ResNet很像,但是略有不同,因為ResNet採用的是summation,而YOLOv2的Fine-Grained Features採用的是concatenate。

Fine-Grained Features這提升了YOLO 1%的性能。

7.多尺寸訓練(Multi-ScaleTraining)

作者希望YOLO v2能魯棒地運行於不同尺寸的圖片之上,所以把這一想法用於訓練model中。 區別於之前的補全圖片尺寸的方法,YOLO v2每迭代幾次都會改變網路參數。每10個Batch,網路會隨機地選擇一個新的圖片尺寸,由於使用了下採樣參數是32,所以不同的尺寸大小也選擇為32的倍數,最小320*320,最大608*608,網路會自動改變尺寸,並繼續訓練的過程。 這一方法使得網路在輸入圖片尺寸比較小的時候跑的比較快,輸入圖片尺寸比較大的時候精度高,下圖為YOLOv2和其他的目標檢測網路的對比。

faster

YOLO使用的是GoogleNet架構,比VGG-16快,YOLO完成一次前向過程只用8.52 billion 運算,而VGG-16要30.69billion,但是YOLO精度稍低於VGG-16。因此作者在YOLOv2中設計了一種新的(其實也不太新。。。)網路結構叫Darknet-19。

網路結構如表格所示,與VGG相似,大量使用3*3,1*1的卷積核,並在每次Pooling之後增加一倍Channels的數量。YOLO v2中還用到了Batch Normalization技術。 最終的model–Darknet19,有19個卷積層和5個maxpooling層,處理一張圖片只需要5.58 billion次運算,在ImageNet上達到72.9%top-1精確度,91.2%top-5精確度。

3. YOLO9000

YOLOv2是好棒好快,那麼YOLO9000真可謂是好棒(better),好快(faster),好強壯(stronger)。下面主要介紹YOLO9000是怎麼一步步變強壯的。

stronger

1)WordNet——>WordTree

WordNet是一種有向圖,這是因為語言模型很複雜,有很多同義詞,所以不可以用樹狀結構表示。但是分類模型中不需要考慮所有的同義詞,因此作者在這裡從WordNet結構中提取出包含ImageNet類別的多層級WordTree結構。

提取方法是首先找出ImageNet中一個類別的辭彙在WordNet中到根節點的路徑,如果有很多條路徑到達根節點,那麼選擇最短的那一條。以此類推,將ImageNet中所有類別的辭彙路徑都提取出來後,WordTree就生成完畢。

如果想要計算某一節點的概率值,只需要用鏈式法則計算即可。

例如計算Norfolk terrier的絕對概率值:

2)Dataset combination with WordTree

為了驗證這一個方法,作者先在WordTree上訓練Darknet19的model,使用1000類的ImageNet進行訓練,為了建立WordTree 1K,把所有中間辭彙加入到WordTree上,把標籤空間從1000擴大到了1369。

這裡我解釋一下標籤是怎麼擴充的,比如一張圖片是「Norfolk terrior」,那麼根據WordTree的最短路徑,這張圖片還會獲得「dog」和「mammal」的標籤,即現在的標籤向量元素為1的位置不唯一。比如原數據標籤為(0,0,0,0,0,1,0,0,0,0),那麼擴充後的數據標籤則為(0,0,0,0,0,1,0,0,0,0,1,1)。之前的ImageNet分類是使用一個大的softmax進行分類。而現在,WordTree只需要對同一級別下的辭彙類別進行softmax分類。如圖所示:

使用相同的訓練參數,這種分層結構的Darknet19達到71.9%top-1精度和90.4%top-5精確度,精度只有微小的下降。 這種方法的好處是在對未知或者新的物體進行分類時,性能降低的很優雅(gracefully)。比如看到一個狗的照片,但不知道是哪種種類的狗,那麼就高置信度(confidence)預測是「狗」,而其他狗的種類的同義詞如」哈士奇「」牛頭梗「」金毛「等這些則為低置信度。

有了這種映射機制,WordTree就可以將不同的數據集結合起來,由於WordTree本身變化多端,所以可以將大多數的數據集結合起來。

3)Joint classification and detection

在使用WordTree混合了COCO與ImageNet數據集後,混合數據集對應的WordTree包含9418類。由於ImageNet數據集跟COCO比太大了,產生了樣本傾斜的問題,因此作者將COCO過採樣,使得COCO與ImageNet的比例為1: 4。

YOLO9000的訓練基於YOLO v2的構架,但是使用3「priors」(論文看到這裡我也是很懵逼啊,3 priors代表什麼我個人也不確定啊,覺得可能是anchor box,如果有大神知道代表什麼,十分歡迎指出)來限制輸出的大小。當網路遇到檢測數據集中的圖片時則正常地反方向傳播,當遇到分類數據集圖片的時候,只使用分類的loss功能進行反向傳播。

使用聯合訓練法,YOLO9000可以從COCO數據集中學習檢測圖片中物體的位置,從ImageNet中學習物體的分類。

三、創新點

最大的創新點就是通過WordTree將不同數據集結合聯合訓練。將目標檢測領域的分類範圍一下子就提高到跟物體識別一個量級上。

再其次,YOLOv2中也有很多改進值得稱道的,比如Convolutional With Anchor Boxes, Dimension Clusters, Direct location prediction等等。可以說YOLOv2/YOLO9000就是目標檢測領域的state-of-art。這學期的project就想做這個啦^_^。

四、評估方法

在PASCAL VOC2007、COCO、ImageNet進行測試,評估檢測和分類效果。

五、結果分析

1.評估YOLOv2——PASCAL VOC2007 & COCO

如圖所示,在PASCAL VOC2007(上)和COCO test-dev2015(下)數據集中,YOLOv2的在準確度(mAP)同一級別的情況下,識別速度(FPS)吊打其他網路。並且比較方便的一點是,YOLOv2可以通過調整解析度,輕鬆地權衡mAP和FPS。不同的解析度的YOLOv2隻是輸入尺寸不同,模型與參數均不變。

VOC數據集中各類別詳細mAP如下:

下表為YOLO到YOLOv2的進化之路:

2.評估YOLO-9000——ImageNet

Detection Task

評估結果:

ImageNet檢測任務中有44個對象類別與COCO檢測任務相同,這意味著YOLO9000隻訓練過大多數測試圖像的分類數據,而不是檢測數據。

YOLO9000整體的mAP為19.7。 在未學習過的156個分類數據上進行測試,mAP為16.0。

YOLO9000的mAP比DPM高,而且YOLO9000是使用部分監督的方式在不同訓練集上進行訓練。能實時檢測9000種物體。

雖然YOLO9000對動物的識別性能很好,但是對類別為」sunglasses「或者」swimming trunks「這些衣服或者裝備的類別,它的識別性能不是很好。這跟目標檢測數據集中只考慮「人」這個整體有很大關係。

附錄

數據集

1.PASCAL VOC

PASCAL 的全稱是 Pattern Analysis, Statical Modeling and Computational Learning。PASCAL VOC 挑戰賽是視覺對象的分類識別和檢測的一個基準測試,提供了檢測演算法和學習性能的標準圖像注釋數據集和標準的評估系統。

2. COCO

COCO數據集是微軟團隊獲取的一個可以用來圖像recognition+segmentation+captioning 數據集,其官方說明網址:http://mscoco.org/

3.ImageNet

ImageNet 是一個計算機視覺系統識別項目名稱, 是目前世界上圖像識別最大的資料庫。是美國斯坦福的計算機科學家,模擬人類的識別系統建立的。

出現的術語

1.WordNet

WordNet是由Princeton大學的心理學家,語言學家和計算機工程師聯合設計的一種基於認知語言學的英語詞典(http://t.cn/RORxhF4)。它不是光把單詞以字母順序排列,而且按照單詞的意義組成一個「單詞的網路」。

WordNet採用的是有向圖結構而非樹狀結構,這是因為語言模型很複雜,WordNet中包含一些同義詞。

參考鏈接

1.https://arxiv.org/pdf/1612.0824(http://t.cn/RORxJJA)2.pdf

2.https://arxiv.org/pdf/1506.0264(http://t.cn/RORxKRT)0.pdf()

新人福利

關注 AI 研習社(okweiwu),回復1領取

【超過 1000G 神經網路 / AI / 大數據,教程,論文】

一文詳解YOLO 2與YOLO 9000目標檢測系統 | 分享總結


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 唯物 的精彩文章:

從數據採集與標記行業看數據與深度學習之關係
深度學習目標檢測概覽
下周學術青年分享會預告
DeepMind AI 是如何識別音視頻概念的?
IJCAI 2017提名最佳學生論文作者解讀

TAG:唯物 |