YOLO詳解 - YOLO的Grid Cells機制 VS. Faster RCNN的Anchor Boxes機制

Grid Cells機制

雖然YOLO中設置了兩個Predictor(這裏記爲Predictor A和Predictor B),但是YOLO並沒有讓一個Grid Cell去預測多個Object,它的機制是通過計算Grid Cell與不同Object的IOU,讓這個Grid Cell去負責IOU最大的哪個Object,也就是說兩個Predictor都去預測這個Object。
就以下圖爲例(請暫時忽略其中的兩個紫色框,他們並非“車”與“人”的Ground Truth Box),“車”與“人”的中心都位於8號Grid Cell(圖中的黑點,本例中二者重合)。
在這裏插入圖片描述
這時候需要分別計算8號Grid Cell與“車”Ground Truth Box的IOU和8號Grid Cell與“人”Ground Truth Box的IOU,如果8號Grid Cell與“車”Ground Truth Box的IOU > 8號Grid Cell與“人”Ground Truth Box的IOU,那麼8號Grid Cell就負責預測“車”這個Object,Predictor A和Predictor B都不會再去管“人”這個Object,而是專注於將Predict Box迴歸到“車”的Ground Truth Box上。

Predict Box機制

在YOLOv1的文章中,作者提到了YOLO的一個缺陷,正是其無法對中心位於同一個Grid Cell上的多個Object進行預測。究其原因,正是因爲Grid Cell機制捨棄了對多個Object的中心位於同一個Grid Cell上這種情況的考慮。因此,有些人提出了這樣的想法,姑且稱之爲Predict Box機制:不計算Grid Cell與不同Object的IOU,而是分別計算兩個Predict Box與兩個Ground Truth Box的IOU,假設有結果:Predictor A的Predict Box與“車”Ground Truth Box的IOU > Predictor B的Predict Box與“車”Ground Truth Box的IOU;Predictor B的Predict Box與“人”Ground Truth Box的IOU > Predictor A的Predict Box與“人”Ground Truth Box的IOU,那麼就由Predictor A來負責預測“車”,而由Predictor B來負責預測“人”。不能排除對不同Object的IOU,Predictor A都要大於Predictor B的可能性,這時候無法做出完美的決策;如果假設Predictor A的Predict Box與“車”Ground Truth Box的IOU > Predictor A的Predict Box與“人”Ground Truth Box的IOU,那麼就使Predictor A預測“車”,Predictor B預測“人”。
乍看之下可能感覺Predict Box機制還不錯,可以解決原有問題。可是仔細分析一下,就能發現問題了。
首先,由於Predict Box都是隨機初始化的,其與Grid Cell並沒有相關性,何談用其來指定Predictor到底應該用於迴歸中心落於這個Grid Cell上的哪個Object呢?舉個例子,Predictor A的初始化Predict Box可能是在1號Grid Cell,Predictor B的初始化Predict Box可能是在2號Grid Cell,用其來確定應該回歸中心落於8號Grid Cell上的哪個Ground Truth Box顯然是不妥的。
其次,從結果來看,這樣得到的結果似乎與直接指定Predictor A預測Ground Truth Box A,Predictor B預測Ground Truth Box B沒有差別,因爲大家都是隨機的。
或許有人想每一步都重新計算相應的IOU,然後調整更新方向。這個也顯然是不合適的,一方面,重複計算正負樣本,這是對計算資源的浪費;另一方面,前面Predictor A還在朝着“車”的Ground Truth Box優化loss function,後面如果又要求其朝着“人”的Ground Truth Box優化loss function,不斷調整更新的方向極易造成收斂問題,至少也有延長了收斂時間的問題。

Anchor Boxes機制

我們回到圖n的例子:現在我們知道,這兩個紫色的框就是兩個預設的Anchor Boxes,如果計算IOU,橫的Anchor Box與“車”Ground Truth Box的IOU大於其與“人”Ground Truth Box的IOU,因此橫的Anchor Box將用於預測車;豎的Anchor Box與“人”Ground Truth Box的IOU大於其與“車”Ground Truth Box的IOU,因此豎的Anchor Box將用於預測人。

小結

YOLO的Grid Cell與Faster RCNN的Anchor Box實際上作用都是相同的,其作用都是通過計算其與一個或者多個Object的Ground Truth Box的IOU,來確定相應的正負樣本。

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