0
雷鋒網(wǎng) AI 科技評論按:隨著計算機視覺技術(shù)逐年火熱,利用計算機圖像處理技術(shù)對目標進行實時跟蹤的研究越來越熱門。那么如何提高目標檢測的質(zhì)量?Anders Christiansen 認為,正確地調(diào)整 Anchor Boxes 可以大大提高模型檢測某些未知大小和形狀的對象的能力。下面是他的觀點, 雷鋒網(wǎng) AI 科技評論編譯整理。
在學習用于目標檢測的卷積神經(jīng)網(wǎng)絡(luò)時,Anchor Boxes 是最難掌握的概念之一。它還是你在提高數(shù)據(jù)集的性能的時候,能夠調(diào)優(yōu)的最重要的參數(shù)之一。事實上,如果 Anchor Boxes 沒有正確地調(diào)整,你的神經(jīng)網(wǎng)絡(luò)將永遠不會知道某些小的、大的或不規(guī)則對象的存在,并且永遠不會有機會檢測它們。幸運的是,你可以采取一些簡單的步驟來確保你不會掉進這個陷阱。
當你使用像 YOLO 或 SDD 這樣的神經(jīng)網(wǎng)絡(luò)來檢測一幅圖像中的多個對象時,這個網(wǎng)絡(luò)實際上正在進行數(shù)千個檢測,并且只顯示出它確定為一個對象的那些檢測結(jié)果。多個檢測以以下格式輸出:
預測 1:(x,y,高度,寬度),類
…
預測~(80000):(x,y,高度,寬度),類
其中,(X,Y,高度,寬度) 被稱為「bounding box」。該框和對象類由人類注釋人員手動標記。
在一個極其簡化的示例中,假設(shè)我們有一個模型,該模型具有兩個預測并接收以下圖像:
我們需要告訴我們的網(wǎng)絡(luò),它的每一個預測是否正確,以便它能夠?qū)W習。但是我們應(yīng)該告訴神經(jīng)網(wǎng)絡(luò)它的預測類是什么呢?預測類應(yīng)該是:
預測 1:梨
預測 2:蘋果
或者是:
預測 1:蘋果
預測 2:梨
如果網(wǎng)絡(luò)預測為:
預測 1:蘋果
預測 2:蘋果
我們需要我們網(wǎng)絡(luò)的兩個預測器能夠分辨出梨和蘋果,這是它們的工作。要做到這一點,有幾個工具。預測器可以專門用于特定大小的對象、具有一定縱橫比(高和寬)的對象,或者圖像上不同部分的對象。大多數(shù)網(wǎng)絡(luò)使用所有三個標準。在我們的梨/蘋果圖像的示例中,我們可以使用 Prediction 1 表示左側(cè)的對象,使用 Prediction 2 表示右側(cè)的對象。然后我們就可以回答網(wǎng)絡(luò)應(yīng)該預測什么:
預測 1:梨
預測 2:蘋果
目前最先進的物體檢測系統(tǒng)如下:
為每個預測器創(chuàng)建數(shù)千個「bounding box」或「prior boxes」,它們表示它專門用于預測對象的理想位置、形狀和大小。
對于每個 bounding boxes,計算哪個對象的 bounding boxes 具有最高的重疊除以非重疊。這被稱為交叉或聯(lián)合。
如果最高 IOU 大于 50%,則告訴 anchor box 它應(yīng)該檢測出最高 IOU 的對象。
否則,如果 IOU 大于 40%,則告訴神經(jīng)網(wǎng)絡(luò),真正的檢測是模糊的,不要從該示例中學習。
如果最高 IOU 小于 40%,那么 anchor box 應(yīng)該預測為沒有對象。
這個方法在實踐中表現(xiàn)得很好,并且數(shù)千個預測器在判斷它們的對象類型是否出現(xiàn)在圖像中這方面做得非常好??匆幌?RetinaNet 的開源實現(xiàn),它是一個最先進的對象檢測器,我們可以可視化 anchor box。有太多對象時不能同時可視化,但是這里只有 1% 個:
使用默認 anchor box 配置可以創(chuàng)建過于專用的預測器,并且圖像中出現(xiàn)的對象可能無法使用任何 anchor box 獲得 50% 的 IOU。在這種情況下,神經(jīng)網(wǎng)絡(luò)將永遠不會知道這些對象的存在,也永遠不會學習預測它們。我們可以調(diào)整我們的 anchor box 使它變得小得多,比如這 1% 個樣本:
在視網(wǎng)膜網(wǎng)配置中,最小錨盒大小為 32×32。這意味著許多比這個小的物體都不會被檢測到。這里是來自 WiderFace 數(shù)據(jù)集的一個示例,我們在其中將邊界框匹配到它們各自的錨定框,但有些則陷入了裂縫中。數(shù)據(jù)集的網(wǎng)址為:
http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/
在這種情況下,只有四個地面真值邊界框與任何 anchor boxs 重疊。神經(jīng)網(wǎng)絡(luò)永遠也學不會預測其他人臉。我們可以通過更改默認的 anchor box 配置來修復這個問題。
因為我們有非常小的面部,其預測依賴于其周圍的像素(如果存在手臂和腿,則更有可能是面部),所以我們減小了最小的 anchor box 大小,同時保持了用于預測 32x32 對象的相同接收字段。使用我們的新配置,所有的面與至少一個 anchor box 排列,我們的神經(jīng)網(wǎng)絡(luò)可以學習如何檢測它們!
作為一般規(guī)則,在開始訓練模型之前,您應(yīng)該問自己關(guān)于數(shù)據(jù)集的下列問題:
我想檢測的最小尺寸的 box 是什么?
我想要檢測的最大尺寸的 box 是什么?
box 和檢測區(qū)域之間的比例應(yīng)該是多少?即,每個 bounding box 在預測時有多少依賴于它周圍的數(shù)據(jù)?
這個 box 能做什么形狀?例如,汽車檢測器可能具有短而寬的 anchor boxes,只要汽車或照相機沒有機會側(cè)轉(zhuǎn)。
您可以通過實際計算數(shù)據(jù)集中最極端的大小和長寬比來粗略估計這些參數(shù)。另一個對象檢測器 YOLO v3 使用 K-means 來估計理想的 bounding boxes。另一個選擇是學習 anchor box 配置。然而,重要的是要記住,您不僅希望優(yōu)化對象到 anchor boxs 的映射。您還必須考慮需要多少來自周圍像素的信息才能正確檢測對象。例如,檢測一個小小的臉部,你需要依賴于對整個人體的檢測。
一旦你仔細考慮過這些問題,你就可以開始設(shè)計你的 anchor boxs 了。一定要通過編碼你的實際參考標準來測試它們,然后解碼,它們太多了。你應(yīng)該能夠恢復 bounding boxes。
此外,請記住,如果 bounding boxes 和 anchor boxs 的中心不同,這將降低 IOU。即使你有小 anchor boxs,如果 anchor boxs 之間的距離很大,你可能會錯過一些符合標準的檢測對象。改善這一點的一種方法是將 IOU 閾值從 50% 降低到 40%。
要了解為什么 anchor boxs 如此重要,請參閱 David Pacassi Torrico 的文章,比較當前人臉檢測的 API 實現(xiàn)方法和效果。你可以看到,除了檢測小臉部,這些算法效果不錯。下面是一些照片,其中沒有檢測到一張臉。David Pacassi Torrico 的文章地址為:
https://www.liip.ch/en/blog/face-detection-an-overview-and-comparison-of-different-solutions-part1
這是我們新模型對相同圖片的檢測效果:
更多關(guān)于 anchor boxs 的知識,您可以參考 Andrew Ng 的 Deep Learning Specialization。
雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。