什麼是 錨框(Anchor Box)?
錨框(Anchor Box)是在目標檢測中預先定義的一系列具有不同大小和長寬比的矩形框,用於在圖像中生成候選區域,以便模型進行目標分類和邊界框回歸。
核心概念
錨框(Anchor Box),也稱為先驗框(Prior Box),是目標檢測算法中一個至關重要的概念,尤其是在基於區域提議的(Region Proposal-based)檢測器中,例如Faster R-CNN。其核心思想是在圖像上預先定義一系列具有不同大小和長寬比的矩形框,這些框作為候選區域,供模型進行目標分類和邊界框回歸。錨框的引入解決了目標檢測中目標大小和形狀多樣性的問題,使得模型能夠更有效地檢測不同大小和形狀的目標。
在沒有錨框的情況下,模型需要直接預測目標的邊界框坐標,這是一個非常困難的任務,因為目標的大小和位置是任意的。而通過預先定義錨框,模型只需要學習如何調整這些錨框,使其更準確地包圍目標,這大大簡化了學習過程。
錨框的設計需要考慮到數據集中目標的典型大小和長寬比。通常會選擇多種大小和長寬比的錨框,以覆蓋盡可能多的目標。例如,可以選擇三種大小(如小、中、大)和三種長寬比(如1:1、1:2、2:1)的錨框,這樣每個位置就會有9個錨框。
運作原理
錨框的運作原理可以分為以下幾個步驟:
錨框生成: 首先,在圖像的每個位置(或部分位置,例如卷積神經網路的特徵圖上的每個像素)生成一系列錨框。這些錨框具有預先定義的大小和長寬比。例如,如果選擇了三種大小和三種長寬比,那麼每個位置就會生成9個錨框。
錨框分配: 接下來,需要將每個錨框分配給一個真實目標(Ground Truth)。通常使用IoU(Intersection over Union,交並比)作為分配的標準。如果一個錨框與某個真實目標的IoU大於一個閾值(例如0.5),則將該錨框分配給該真實目標,並將其標記為正樣本。如果一個錨框與所有真實目標的IoU都小於一個閾值(例如0.1),則將其標記為負樣本。如果一個錨框與某個真實目標的IoU介於兩個閾值之間,則忽略該錨框。
目標分類: 模型對每個錨框進行分類,判斷其是否包含目標。對於正樣本錨框,模型需要預測其包含的目標的類別。對於負樣本錨框,模型預測其不包含任何目標。
邊界框回歸: 對於正樣本錨框,模型需要預測邊界框的偏移量,即錨框需要如何調整才能更準確地包圍目標。邊界框回歸通常預測錨框的中心坐標偏移量和寬高縮放比例。
非極大值抑制(Non-Maximum Suppression, NMS): 由於一個目標可能會被多個錨框檢測到,因此需要使用NMS來消除冗餘的檢測結果。NMS選擇IoU最高的檢測結果,並抑制與其IoU大於一定閾值的其他檢測結果。
總結來說,錨框通過預先定義一系列候選區域,簡化了目標檢測的學習過程。模型只需要學習如何調整這些錨框,使其更準確地包圍目標,並對其進行分類。
實際應用
錨框在目標檢測領域有著廣泛的應用,包括:
- Faster R-CNN: Faster R-CNN是基於區域提議的目標檢測器的代表,它使用錨框來生成候選區域,並使用RPN(Region Proposal Network)來對錨框進行分類和邊界框回歸。
- SSD(Single Shot MultiBox Detector): SSD是一種單階段目標檢測器,它直接在卷積神經網路的特徵圖上預測目標的類別和邊界框。SSD也使用錨框來處理不同大小和形狀的目標。
- YOLOv3: YOLOv3是YOLO(You Only Look Once)系列目標檢測器的一個版本,它使用多尺度的錨框來檢測不同大小的目標。
- RetinaNet: RetinaNet是一種單階段目標檢測器,它使用Focal Loss來解決正負樣本不平衡的問題。RetinaNet也使用錨框來生成候選區域。
除了目標檢測,錨框的思想也可以應用於其他視覺任務,如圖像分割、關鍵點檢測等。
常見誤區
誤區1:錨框的大小和長寬比是隨意選擇的。
- 解釋: 錨框的大小和長寬比應該根據數據集中目標的典型大小和長寬比來選擇。如果錨框的大小和長寬比與數據集中的目標不匹配,則會影響檢測的性能。通常需要對數據集進行分析,選擇合適的錨框大小和長寬比。
誤區2:錨框越多越好。
- 解釋: 雖然更多的錨框可以覆蓋更多的目標,但也會增加計算量,並可能導致正負樣本不平衡的問題。因此,需要權衡錨框的數量和計算成本,選擇合適的錨框數量。
誤區3:錨框的位置是固定的。
- 解釋: 錨框的位置通常是在圖像的每個位置(或部分位置)生成。在卷積神經網路中,錨框的位置通常是在特徵圖上的每個像素生成。錨框的位置不是固定的,而是根據特徵圖的大小和步長來確定的。
誤區4:錨框只需要進行邊界框回歸。
- 解釋: 錨框不僅需要進行邊界框回歸,還需要進行目標分類。模型需要判斷每個錨框是否包含目標,並預測其包含的目標的類別。邊界框回歸用於調整錨框的位置和大小,使其更準確地包圍目標。
誤區5:NMS可以完美地消除冗餘的檢測結果。
- 解釋: NMS是一種常用的消除冗餘檢測結果的方法,但它並不能完美地消除所有冗餘的檢測結果。在目標非常密集的情況下,NMS可能會錯誤地抑制一些正確的檢測結果。有一些改進的NMS方法,如Soft-NMS,可以更好地處理密集目標的檢測。
相關術語
常見問題
延伸學習
想看 錨框 的完整影片教學?前往 美第奇 AI 學院