[ 教學 ]  關於物件偵測 PART I : YOLO (v1~v3)
  回覆文章總數:

關於物件偵測 PART I : YOLO (v1~v3)

  By : Leadtek AI Expert     2110
物件偵測(Object Detection)主要分成兩種不同方法實現,以程序來說可分成一階段的物件偵測(one-stage object detection)和二階段的物件偵測(two-stage object detection),常見的應用方法如下:
一階段物件偵測:YOLO (v1~v3)
二階段物件偵測:R-CNN (或Fast R-CNN及Faster R-CNN)

YOLOv1:

YOLOv1的特徵提取是藉由GoogLeNet提取,再經由fully-connected layers (FC),最後重整尺寸(reshape)到7x7x30的輸出結果。
 

至於YOLOv1是如何進行預測的?7x7的每一個元素 (稱cell grid)都預測兩個不同形狀的框框,而通道數為30的意思是2*(4+1)+20 = 30,也就是 
(標記方框數量)*(方框的中心位置座標(x、y)與寬和高(w、h)+方框內有物件的Confidence )+(分類類別數量),在(4+1)不變的情況下,只要增加或減少分類類別數量,整體的輸出尺寸也會不同。


YOLOv1同時要預測該物件在框裡的可能機率外,還要同時預測預測框與真實框之間的IOU。
 


因為在預測類別機率時,該機率代表”已知有物件下該類別發生機率”,而YOLOv1在做預測時,則會額外乘以Confidence。


上式為“該類別發生機率”乘以IOU當作參考值,之後根據類別的不同分別做Non-maximum suppression (NMS),得到最後輸出的結果。


何謂IOU(intersection over union)?

衡量預測框與真實框之間相似度的方法。IOU數值介於0到1之間,越高則表示兩個框彼此位置與大小越相似。
 


何謂NMS(Non-maximum suppression)?

當許多cell grid都表明預測出有物件與對應的類別時,如果沒有加以修正直接輸出結果,則會得到許多位置與大小相似的預測框交互重疊。所以需要根據每個cell grid預測出來的Confidence以及對應的類別機率,找出最高數值的預測框並保留下來,再計算是否有機率較小的預測框與該預測框的IOU大於某個閥值 (如0.5),大於該閥值則捨棄掉機率較小的預測框,小於該閥值則繼續保留機率較小的預測框,最後再輸出結果。
 



YOLOv1缺陷:

如果有兩個物件中心點都分配在同一個cell grid,在YOLOv1是無法同時預測出兩物件與類別,只能從類別預測值中找出最高機率的類別,認定該grid cell中只有該類別。
 


YOLOv2:

為解決YOLOv1缺陷,此版本做了改進,在每個不同大小的預測框中各別預測類別值,進而使得一個grid cell能輸出不只一種類別的預測框。相較於使用GoogLeNet的YOLOv1,YOLOv2改以DarkNet-19。並做了些許改進。

YOLOv2在所有的卷積層都添加了Batch normalization,以避免梯度消失。並且在訓練模型時多加了一個階段,使得在最後偵測物件的模型訓練時只要學習物件辨識的能力,但YOLOv1卻要同時適應解析度的改變與學習物件辨識的能力,這也是YOLOv2改進的其中一點,使得最後的性能得以提升。
 

另外,YOLOv1在預測預測框時是直接輸出位置與大小,YOLOv2參考了Faster R-CNN的Anchor box概念,希望在做預測時只是輸出anchor box的平移量與縮放量。與Faster R-CNN不同的是YOLOv2使用了k-means clustering algorithm來定義anchor box的大小,目的是為了能使得預測框與真實框之間的IOU越高越好,同時在演算法中將IOU取代了歐式距離來當作相似性衡量方式。
YOLOv2增加了pass-through層,目的是讓高解析度的特徵圖接到低解析度的特徵圖上 (接在channel後),使得含有更精確位置的資訊能得以保留。
 

在學習偵測物件時,希望輸入不同大小的影像都能預測的精確,所以每當訓練10個batch後,輸入影像的尺寸會隨機更動,更動的尺寸為416±32倍數,而輸出的特徵圖大小會依輸入圖尺寸而有所改變。
 


YOLOv3:

YOLOv3改以DarkNet-53。其網路中包含了residual block結構,在輸入的地方多了一個shortcut,直接加入了經由weight與activation轉換後的結果。residual block主要的功能為增加信息的流動,以及使得非線性轉換層的結構得以更容易形成Identity mapping。

另一項改進是關於Feature Pyramid network。最經典、傳統的方法是single feature map,圖片經由卷積層後做單一的輸出。而Feature pyramid network (FPN)是每層尺度的預測都因為綜合了不同尺度的特徵圖資訊。使得在做預測時,對於不同尺度的圖片語意與空間特徵擷取量較足夠,因而得出更好的預測結果。
 

YOLOv3對於anchor box 的數量也從YOLOv2的5個增加到了9個,在最後的三個不同尺度輸出層分別用3個anchor box做預測,以增加預測準確率。



近期還會介紹[二階段物件偵測的應用方法Faster R-CNN],敬請期待啊~
以下是回覆文