3-8 Anchor Boxes


Anchor Boxes

假設你有這樣一張圖片,對於這個例子,我們繼續使用 3×3 網格,注意行人的中點和汽車的中點幾乎在同一個地方,兩者都落入到同一個格子中。所以對於那個格子,如果y輸出這個向量:

你可以檢測這三個類別,行人、汽車和摩托車,它將無法輸出檢測結果,所以我必須從兩個檢測結果中選一個。

而 anchor box 的思路是,這樣子,預先定義兩個不同形狀的 anchor box,或者 anchor box 形狀,你要做的是把預測結果和這兩個 anchor box 關聯起來。你要做的是定義類別標簽,用的向量不再是:

而是重復兩次:

前面的8個參數${p_c}$,${b_x}$,${b_y}$,${b_h}$,${b_w}$,${c_1}$,,${c_2}$,${c_3}$(綠色方框標記的參數)是和 anchor box 1 關聯的 8 個參數,后面的 8 個參數(橙色方框標記的元素)是和 anchor box 2 相關聯。

因為行人的形狀更類似於 anchor box 1 的形狀,所以你可以用這 8 個數值(前8 個參數),這么編碼${p_c} = 1$,是的,代表有個對象,用${b_x}$,${b_y}$,${b_h}$,${b_w}$來編碼包住行人的邊界框,然后用${c_1}$,,${c_2}$,,${c_3}$來說明這個對象是個行人然后是車子,因為車子的邊界框比起 anchor box 1 更像 anchor box 2 的形狀,你就可以這么編碼,這里第二個對象是汽車,然后有這樣的邊界框等等,這里所有參數都和檢測汽車相關。

現在每個對象都和之前一樣分配到同一個格子中,分配到對象中點所在的格子中,以及分配到和對象形狀交並比最高的 anchor box中。這個對象不只分配到一個格子,而是分配到一對,即( grid cell, anchor box)對,這就是對象在目標標簽中的編碼方式。所以現在輸出y就是 3×3×16,或者你也可以看成是3×3×2×8,因為現在這里有 2 個 anchor box,而y是 8 維的。

現在還有一些額外的細節,如果你有兩個 anchor box,但在同一個格子中有三個對象,這種情況算法處理不好,對於這種情況,我們就引入一些打破僵局的默認手段。還有這種情況,兩個對象都分配到一個格子中,而且它們的 anchor box 形狀也一樣,這是算法處理不好的另一種情況,你需要引入一些打破僵局的默認手段,專門處理這種情況。

我們建立 anchor box 這個概念,是為了處理兩個對象出現在同一個格子的情況,實踐中這種情況很少發生,特別是如果你用的是 19×19 網格而不是3×3 的網格,兩個對象中點處於 361 個格子中同一個格子的概率很低,確實會出現,但出現頻率不高。也許設立 anchor box 的好處在於 anchor box 能讓你的學習算法能夠更有針對性。

人們一般手工指定 anchor box 形狀,你可以選擇 5 到 10 個 anchor box 形狀,覆蓋到多種不同的形狀,可以涵蓋你想要檢測的對象的各種形狀。

YOLO 論文中有更好的做法,就是所謂的 k-平均算法,可以將兩類對象形狀聚類,如果我們用它來選擇一組 anchor box,選擇最具有代表性的一組 anchor box,可以代表你試圖檢測的十幾個對象類別,但這其實是自動選擇 anchor box 的高級方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM