1. 程式人生 > >目標檢測中的Anchor Box演算法

目標檢測中的Anchor Box演算法

引入

無論是基於滑動視窗,還是基於網格YOLO的目標檢測演算法,都有可能存在同一個問題:有可能一個BOX中有多個目標,如下圖所示:

在這裡插入圖片描述

這樣的圖中,行人和車同時存在,並且他們的中心位置都位於同一個網格中。這種情況下,傳統檢測方法的輸出,就無法勝任了。怎麼解決這個問題呢?

Anchor Box演算法

對於這個例子,我們引入Anchor Box,如下圖所示,我們這裡只用兩個Anchor Box,說明同一個網格中最多可能存在兩類物體。Anchor Box的個數與每個網格中可能出現的最多物體數量相同,也就是Y值的標註需要標註的物體個數。實際專案中,會用更多的Anchor Box。如下圖:

在這裡插入圖片描述

圖中用了兩個Anchor Box,所以Y值的標註,就需要標註兩類物體(標註的成本是升高的)。Y值中:

  • pc:網格中是否含有目標物件
  • bx:目標物件中心點的x座標
  • by:目標物件中心點的y座標
  • bh:目標物件的高度
  • bw:目標物件的寬度
  • c1,c2,c3:目標物件的類別

可見,標註中,Y值中的每個引數,都是由0/1組成的。對於本文這個例子,Y值的輸出為:3x3x8x2。其中3x3是影象上的網格大小,8是每個物件的輸出,2說明用了兩個Anchor Box。

總結

Anchor Box的概念,是為了解決同一個網格中有多個目標物件的情況。現實情況中,你的網格劃分越細,比如將3x3的網格變為10x10,這種同一個網格中有多個目標物件的情況就越少。

參考

AndrewNG的deep learning