解讀端到端的物體檢測演算法YOLO及YOLOv2 | Paper Reading第一季第二期
該文為Momenta Paper Reading 第一季第二期回顧,始發於2017年3月4日。
分享視頻回放鏈接:Momenta Paper Reading 第一季PPT及論文等資料請見文末,添加小助手微信獲取。
主講人
李翔
南京理工大學PCALab_DeepInsight組博士在讀,師從長江學者楊健教授,曾獲得過天池首屆大數據競賽冠軍和滴滴首屆大數據競賽冠軍。
分享內容
首先,為了便於廣大讀者理解,我們先舉一個極其簡單的例子來詮釋神經網路是如何做簡單的分類和檢測任務的。
一個神經網路模型包含了3個重要的特徵:1)參數;2)計算準則;3)判定規則。如果我們的任務是判斷一個3x3的圖像(像素值只有0或者1)是數字1還是數字0,那麼我們可以給出這樣一個模型,參數的規模也是3x3,和圖像一致:
同時,我們定義計算準則是將圖像的每一個像素值(0或1)和模型參數對應位置相乘,再求和。判定規則則是如果我們最終計算得到的數值為正,則網路判斷該圖像為數字1,否則判斷為數字0。
可以看出,我們的這個模型對上面兩幅圖像的判斷是正確的。當更多的圖像來了之後,我們能對這個模型的性能有了進一步的掌握:
可以發現,在非常斜的數字1圖像和數字0圖像的判斷中,我們的模型都產生了錯誤的結果。這就意味著我們的模型的參數還不夠好,不夠魯棒。我們需要通過學習獲得更優的模型。
那麼網路如何做一個簡單的檢測任務呢?同樣,我們定義一個非常簡單的問題,這次我們要從6x3的圖像中檢測出3x3大小的數字。一個很容易想到的方案就是我們可以滑動我們的模型參數,從而直接生成4x1的結果。如圖:
我們驚訝的發現我們其實通過非常簡單的操作可以得到3個合理的結果。但是有一個結果出現了問題,它看上去既不像0也不像1。怎麼辦?類比一下之前的模型,我們完全可以再附加一個模型,作為檢測結果的判斷依據,這個模型只輸出0~1之間的數值,越接近1,表示它越像數字。
有了這些基礎,想必我們理解YOLO會非常的容易。與YOLO的第一次邂逅是在2015年6月,當時以Fast R-CNN, Faster R-CNN引領的proposal + classification的兩階段檢測方法已非常成熟,YOLO的橫空出世打破了這一架構,將detection的任務統一在端到端的網路之中。它的pipeline異常簡單:
下面一張圖更細緻地講解了YOLO的主體結構。
一張224x224的圖經過卷積,最終得到7x7xn的輸出。這個輸出就encode了我們檢測對象的數據結構,主要分成兩個分支,一個用於預測當前格子所對應的概率;另一個用於回歸框的長寬和中心點,以及該框的置信度。置信度的定義通過IOU來確定,表示這個框離它最近的ground truth框的貼合程度。
YOLO用了幾個常用的trick來訓練網路。
1)包括用224x224的尺寸在imagenet上training,然後再遷移到448x448的網路做檢測;
2)將預測box的寬和長用整個圖像的寬和長normalize到0~1,將中心點到grid cell的偏移normalize到0~1;
3)用5:0.5的loss比例平衡正負樣本的回歸數值,用平方根代替寬度高度平衡大物體和小物體的大小敏感程度。
YOLO的Loss表達比較複雜,因為它涉及到的對象比較多。我們用一張圖形象地展示出來:
YOLO第一個版本的速度很快,但是性能不是非常的強悍。作者特地為此做了很多的分析。比較有意思的一個分析是對於候選框錯誤類型的統計。如圖:
在2016年年底,YOLOv2問世。在全新的YOLOv2中引入了奧林匹克精神:更高、更快、更強。同樣,加強版的YOLOv2以傲人的速度和極高的性能吸引了大量圍觀群眾。作者高調release了一個007的檢測視頻,網路上都可以搜索到。總的來看,性能相當不錯,很多細小、遮擋的對象都能很魯棒地檢測出來。
At 67 FPS, YOLOv2 gets 76.8 mAP, At 40 FPS, YOLOv2 gets 78.6 mAP on VOC 2007。It predicts detections for more than 9000 different object categories. And it still runs in real-time. 擲地有聲。
總體而言,YOLOv2在很多方面做了改進和探索。其中包括:
Batch Normalization,mAP + 2%
High resolution classifier,使用448x448直接pretrain,mAP + 4%
Convolution with anchor boxes,借鑒anchor box思想,recall + 7%
Dimension clusters (anchor box使用k-means聚類,選擇更合適的5個anchor box size)+ Direct location prediction (使用規範化的輸出表達,比如將中心坐標的偏移0~1用Logistic函數規範,從而增加網路訓練的穩定性),mAP + 5%
Fine-Grained Features,將feature map的尺寸更大一個級別的feature通過reshape的方式append到最後的map尺寸上,獲得細粒度的特徵補充從而進行預測,mAP + 1%
Multi-Scale Training,每隔10個batch,替換圖像的尺寸大小訓練,讓網路運行在更廣泛的尺寸圖像中,mAP + 2%
當然,YOLOv2本篇的名字不叫YOLOv2,而是YOLO9000,是因為作者在YOLOv2的基礎上,還做了非常多有趣的探索。
首先,作者用一個網路,同時使用detection的數據和classification的數據用於訓練。具體的策略也很簡單,就是遇到detection的數據回傳detection相關的loss,遇到classification的數據僅回傳與classification相關的loss。看上去簡單,但卻是面臨一個重大挑戰。檢測數據集只有粗粒度的標記信息,像「貓「、「 狗」之類,而分類數據集的標籤信息則更細粒度,更豐富。比如狗這一類就包括」哈士奇「」牛頭梗「」金毛狗「等等。所以如果想同時在監測數據集與分類數據集上進行訓練,那麼就要用一種一致性的方法融合這些標籤信息。 用於分類的方法,大多是用softmax layer方法,softmax意味著分類的類別之間要互相獨立的。盲目地混合數據集訓練,就會出現比如:檢測數據集的分類信息中」狗「這一分類,在分類數據集合中,就會有的不同種類的狗」哈士奇「」牛頭梗「」金毛「這些分類,這兩種數據集之間的分類信息不相互獨立。
作者借鑒了自然語言處理中的Hierarchical Softmax的方法,將所有的對象組織成一個WordTree。
那麼我們要預測一個的對象就變成了條件概率的鏈式法則:
具體的實線也不困難,我們只需要將原來1000類的單一的softmax變為分組的softmax即可:
------------------------------------------------
知乎機構號:Momenta,打造自動駕駛大腦。
基於深度學習的環境感知、高精度地圖、駕駛決策技術,讓無人駕駛成為可能。
Momenta知乎專欄:Paper Reading,集聚自動駕駛知名大咖的前沿知識分享平台,歡迎申請加入或直接投稿。
Paper Reading推薦閱讀:
※不看廣告看療效,盤點2018 CES即將落地自動駕駛方案
※警方稱,Uber無人車「可能」是無辜的
※【首發】前裝50萬台後,這家公司從ADAS走向自動駕駛|甲子光年
※自動駕駛問題之二黑客攻擊問題
TAG:人工智慧 | 自動駕駛 | 深度學習DeepLearning |