Anchor Boxes
Çapa kutuları, sabit boyut ve en-boy oranlarına sahip önceden tanımlanmış kutulardır; algılayıcı bunları nesnelere uydurmak için kaydırır ve yeniden boyutlandırır. Boyutlandırılma, eşleştirilme ve kullanılma biçimleri.
Çapa kutuları, sabit boyutlara ve en-boy oranlarına sahip, algılayıcının özellik haritalarındaki her konuma döşenen ve nesnelerin konumu ile şekli için başlangıç tahminleri görevi gören önceden tanımlanmış dikdörtgenlerdir. Çapa tabanlı bir algılayıcı her sınıf için her çapaya puan verir ve çapayı nesneye uyacak şekilde taşıyıp yeniden boyutlandıran küçük ofsetler tahmin eder; bu, sıfırdan kutu tahmin etmeye kıyasla daha kolay öğrenilir. Faster R-CNN her konuma 9 çapa yerleştirir: üç alan (128², 256² ve 512² piksel) ile üç en-boy oranının (1:1, 1:2 ve 2:1) çarpımı. Böylece 1000 × 600 boyutundaki bir görüntü için yaklaşık 20.000 çapa elde edilir.
Çapalar Nasıl Tanımlanır#
Bir çapa kümesi, özellik haritasının her hücresinde tekrarlanan boyut ve en-boy oranlarının listesidir; dolayısıyla çapa sayısı, hücre sayısı × hücre başına şekil sayısına eşittir. Özellik piramit ağı (FPN) kullanan algılayıcılar, küçük çapaları ince ve yüksek çözünürlüklü seviyelere, büyük çapaları ise kaba seviyelere atar: RetinaNet beş seviyenin her birinde konum başına 9 çapa kullanır; bu da görüntü başına yaklaşık 100.000 çapa eder. SSD bunlara varsayılan kutular der ve SSD300 toplam 8.732 kutu döşer.
Elle seçilen şekiller bazı veri kümelerine iyi uymaz. Bu nedenle YOLOv2, eğitim kutularının genişlik ve yüksekliklerine k-means kümeleme uyguladı, uzaklık ölçüsü olarak 1 − IoU kullandı ve çapa olarak 5 küme merkezini seçti. YOLOv3 9 çapayı kümelere ayırdı ve bunları üç çıktı adımına eşit biçimde dağıttı; 8 adımlı seviyedeki 10 × 13 pikselden 32 adımlı seviyedeki 373 × 326 piksele kadar.
Çapaları Nesnelerle Eşleştirme#
Eğitim sırasında her çapa, etiketlenmiş her kutuyla Birleşim Üzerindeki Kesişim (IoU) ölçütüne göre karşılaştırılır. Bir nesneyle yeterince örtüşen çapalar pozitif örnek olur ve nesnenin sınıfını ve sınırlayıcı kutusuna ait ofsetleri öğrenir. Az örtüşen çapalar "arka plan"ı öğrenen negatif örnekler olur; aradakiler ise yok sayılır. Faster R-CNN'nin bölge öneri ağı, IoU değerini 0,7 veya üzeri olanları pozitif, 0,3'ün altındakileri negatif işaretler; ayrıca her nesneyle en iyi eşleşen çapayı pozitif yaparak hiçbir nesnenin eşleşmesiz kalmamasını sağlar.
import torch
from torchvision.ops import box_iou
# Nine anchors centered on one feature-map cell at (200, 200): 3 sizes x 3 aspect ratios (height / width)
shapes = [(size, ratio) for size in (64, 128, 256) for ratio in (0.5, 1.0, 2.0)]
anchors = []
for size, ratio in shapes:
w, h = size / ratio**0.5, size * ratio**0.5
anchors.append([200 - w / 2, 200 - h / 2, 200 + w / 2, 200 + h / 2])
# A labeled pedestrian box (x1, y1, x2, y2): tall and narrow
person = torch.tensor([[160.0, 110.0, 240.0, 290.0]])
# Faster R-CNN RPN rule: IoU >= 0.7 is positive, below 0.3 is negative, anything between is ignored
iou = box_iou(torch.tensor(anchors), person).squeeze(1)
for (size, ratio), value in zip(shapes, iou.tolist()):
label = "positive" if value >= 0.7 else "negative" if value < 0.3 else "ignored"
print(f"size {size}, ratio {ratio}: IoU {value:.2f} -> {label}")Yalnızca uzun 128 piksel çapa (oranı 2,0), 0,88 IoU ile yaya için pozitif sayılacak kadar örtüşür. IoU değerleri 0,31 ve 0,50 olan diğer iki 128 piksellik çapa yok sayılır; yanlış boyuttaki altı çapa ise negatiftir. Ardından pozitif çapa standart parametreleştirmedeki ofsetleri öğrenir: merkez, çapanın genişlik ve yüksekliğinin kesirleri kadar kayar; genişlik ve yükseklik ise tahmin edilen değerlerin üstel fonksiyonlarıyla ölçeklenir.
Veri Kümesi İçin Çapa Boyutlarını Seçme#
Veri kümesindeki nesne şekilleriyle eşleşen çapalar, daha fazla nesnenin pozitif bir çapaya sahip olmasını sağlar ve böylece algılayıcının erişebileceği duyarlılığı artırır. Ultralytics YOLOv5, YOLOv3'ün 9 çapasıyla başlar ve eğitimin öncesinde AutoAnchor ile bunları kontrol eder: çapaların eğitim etiketlerindeki mümkün olan en yüksek duyarlılığını ölçer; bu değer 0,98'i aşmıyorsa çapaları k-means ve 1.000 nesil genetik evrim ile yeniden uyarlar ve yeni çapaları yalnızca duyarlılık artarsa tutar.
Sınırlamalar ve Çapasız Algılayıcılar#
Çapaların üç maliyeti vardır. Görüntüdeki on binlerce çapanın neredeyse tamamı arka planı kapsar ve bu kolay negatifler kayıp değerini bastırır; RetinaNet bu örneklerin ağırlığını azaltmak için odak kaybını geliştirmiştir. Bir nesneye birkaç komşu çapa uyduğu için çıktıda nesne başına tek kutu bırakmak üzere maksimum olmayan bastırma (NMS) gerekir. Boyutlar, en-boy oranları ve IoU eşikleri de her veri kümesine ve görüntü boyutuna göre değişen hiperparametrelerdir.
Çapasız algılayıcılar, kutuları noktalardan veya kilit noktalardan tahmin ederek bu hiperparametreleri ortadan kaldırır. 2021'de YOLOX'in çıkışından bu yana yayımlanan gerçek zamanlı algılayıcıların çoğu çapasızdır. Faster R-CNN, Mask R-CNN ve RetinaNet gibi çapa tabanlı algılayıcılarda çapalar kullanılmaya devam eder. RetinaNet'i çapasız FCOS ile karşılaştıran ATSS, iki model pozitif örnekleri aynı biçimde seçtiğinde, konum başına 9 çapa kullanan RetinaNet'in doğruluğunun 1 çapa kullanan RetinaNet'ten yüksek olmadığını buldu.










