1. 程式人生 > 其它 >YOLO的Grid Cells機制 VS. Faster RCNN的Anchor Boxes機制

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

轉載:https://blog.csdn.net/zbgjhy88/article/details/86841525

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,來確定相應的正負樣本。


————————————————
版權宣告:本文為CSDN博主「Forskamse」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/zbgjhy88/article/details/86841525