前言
本文介紹了anchor的基本概念,基于anchor的實際應用流程,以及anchor的設定。
本文講的很淺,僅用于幫助小白了解基本概念。後續還會發一些深入了解anchor的文章,請繼續關注公衆号CV技術指南。
本文來自公衆号CV技術指南的技術總結系列
關注公衆号CV技術指南 ,專注于計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
在學習用于目标檢測的卷積神經網絡時,最難掌握的概念之一是錨框(anchor)的概念。它也是可以調整以提高資料集性能的最重要參數之一。事實上,如果錨框(anchor)沒有正确調整,神經網絡甚至永遠不會知道某些極大、極小或不規則物體的存在,也永遠沒有機會檢測到它們。幸運的是,你可以采取一些簡單的步驟來確定不會落入這個陷阱。
什麼是錨框(anchor box)?
當使用 YOLO 或 SDD 等神經網絡來預測圖檔中的多個目标時,該網絡實際上會進行數以千計的預測,并且隻顯示它确定為目标的那些。多個預測以以下格式輸出:
預測 1:(X、Y、高度、寬度)、類别
……
預測 ~80,000:(X,Y,高度,寬度),類别
其中 (X, Y, Height, Width) 稱為“邊界框(bounding box)”,或圍繞目标的框。該框和目标類由人工注釋者手動标記。
在一個極其簡化的示例中,假設我們有一個模型,它有兩個預測并接收以下圖像:

我們需要告訴我們的網絡它的每個預測是否正确,以便它能夠學習。但是我們告訴神經網絡它的預測應該是什麼?預測的類應該是:
- 預測1:梨
- 預測2:蘋果
或者應該是:
- 預測1:蘋果
- 預測2:梨
如果網絡預測:
我們需要網絡的兩個預測器來判斷他們的工作是預測梨還是蘋果。要做到這一點,有幾個工具。預測器可以專門研究特定大小的對象、具有特定縱橫比(高與寬)的對象或圖像不同部分的對象。
大多數網絡使用所有三個标準。在我們的梨/蘋果圖像示例中,我們可以将預測 1 用于圖像左側的目标,将預測 2 用于圖像右側的目标。然後我們就會得到網絡應該預測什麼的答案:
實踐中的anchor box
基于anchor-based的目标檢測模型通常執行以下操作:
1. 為每個預測器建立數千個“錨框”或“先驗框”,代表它專門預測的目标的理想位置、形狀和大小。
2. 對于每個anchor box,計算哪個目标的bounding box有最高重疊除以非重疊。這稱為 IOU (Intersection Over Union)。
3. 如果最高IOU大于50%,告訴anchor box它應該檢測給出最高IOU的目标。
4. 否則如果IOU大于40%,告訴神經網絡真正的檢測是不明确的,不要從那個例子中學習。
5. 如果最高IOU小于40%,那麼anchor box應該預測沒有目标。
這在實踐中效果很好,成千上萬的預測器在決定它們的目标類型是否出現在圖像中方面做得非常好。
将RetinaNet 中的錨框可視化如下圖所示,這裡隻展示了其中的 1%:
使用預設錨框配置可能會建立過于專業化的預測器,并且圖像中出現的目标可能無法使用任何錨框實作 50% 的 IOU。在這種情況下,神經網絡永遠不會知道這些目标存在,也永遠不會學習預測它們。我們可以将錨框調整得更小,比如這個 1% 的樣本:
在 RetinaNet 配置中,最小的錨框尺寸是 32x32。這意味着許多比這更小的物體将不會被檢測到。下面是來自 WiderFace 資料集的一個例子,我們将邊界框與它們各自的錨框比對,但有些卻漏了:
在這種情況下,隻有四個ground truth邊界框與錨框重疊。神經網絡永遠不會學習預測其他人臉。我們可以通過更改預設的錨框配置來解決這個問題。減少最小的錨框大小,所有的人臉至少與我們的一個錨框對齊,我們的神經網絡可以學習檢測它們!
改進錨框配置
作為一般規則,在深入訓練模型之前,你應該了解以下有關資料集的問題:
- 你希望能夠檢測到的最小尺寸的box是多少?
- 你希望能夠檢測到的最大尺寸的box是多少?
box可以做成什麼形狀?例如,汽車探測器可能有短而寬的錨框,隻要汽車或攝像頭不可能側向轉動。
可以通過實際計算資料集中最極端的尺寸和縱橫比來粗略估計這些。YOLO v3 是另一個目标檢測器,它使用 K 均值來估計理想的邊界框。另一種選擇是學習錨框配置。
一旦你想通了這些問題,你就可以開始設計你的錨框了。
如果邊界框和錨框的中心不同,得到的 IOU會很小。即使有小的錨框,如果錨框之間的步幅很寬,也可能會錯過一些gound truth框。改善這種情況的一種方法是将 IOU 門檻值從 50% 降低到 40%。
David Pacassi Torrico 最近的一篇文章比較了目前人臉檢測的 API 實作,強調了正确指定錨框的重要性。
文章名稱:Face detection - An overview and comparison of different solutions
文章連結:https://www.liip.ch/en/blog/face-detection-an-overview-and-comparison-of-different-solutions-part1
可以看到除了小臉外,算法都做得很好。下面是一些 API 根本無法檢測到任何人臉的圖檔,但我們的新模型檢測到了很多:
這篇僅僅是了解anchor的文章,後續還會發一些關于深入了解anchor的文章,請繼續關注公衆号CV技術指南。
作者:Anders Christiansen
編譯:CV技術指南
原文連結:https://towardsdatascience.com/anchor-boxes-the-key-to-quality-object-detection-ddf9d612d4f9
歡迎關注公衆号 CV技術指南 ,專注于計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
在公衆号中回複關鍵字 “技術總結”可擷取公衆号原創技術總結文章的彙總pdf。
其它文章
增量學習深度神經網絡
深度學習中的人體姿态估計概述
小目标檢測常用方法總結
CV技術指南--精華文章彙總分類
歸一化方法總結 | 欠拟合與過拟合技術總結
NMS總結 | 損失函數技術總結
注意力機制技術總結 | 特征金字塔技術總結
池化技術總結 | 資料增強方法總結
論文創新的常見思路總結 | GPU多卡并行訓練總結
CNN結構演變總結(一)經典模型
CNN結構演變總結(二)輕量化模型
CNN結構演變總結(三)設計原則
CNN可視化技術總結(一)特征圖可視化
CNN可視化技術總結(二)卷積核可視化
CNN可視化技術總結(三)類可視化
CNN可視化技術總結(四)可視化工具與項目
計算機視覺中的圖像标注工具總結
各種 Optimizer 梯度下降優化算法回顧和總結
彙總 | 國内外經典開源資料集
Softmax 函數和它的誤解
提高機器學習模型性能的常用政策
資源分享 | SAHI:超大圖檔中對小目标檢測的切片輔助超推理庫
Batch Size對神經網絡訓練的影響
神經網絡超參數的調參方法總結
使用 Ray 将 PyTorch 模型加載速度提高 340 倍
2021年小目标檢測最新研究綜述
經典論文系列--膠囊網絡:新的深度學習網絡
計算機視覺專業術語總結(一)建構計算機視覺的知識體系
計算機視覺中的小樣本學習綜述