Anchor Boxes
Las cajas de anclaje son cajas predefinidas de tamaños y relaciones de aspecto fijos que un detector desplaza y redimensiona para ajustarlas a los objetos. Cómo se dimensionan, emparejan y utilizan.
Las cajas de anclaje son rectángulos predefinidos de tamaños y proporciones fijos que se distribuyen en cada posición de los mapas de características de un detector y sirven como estimaciones iniciales de la ubicación y la forma de los objetos. Un detector basado en anclajes asigna una puntuación a cada anclaje para cada clase y predice pequeños desplazamientos que lo mueven y redimensionan para ajustarlo al objeto, algo más fácil de aprender que predecir una caja desde cero. Faster R-CNN coloca 9 anclajes en cada posición: tres áreas (128², 256² y 512² píxeles) por tres proporciones (1:1, 1:2 y 2:1), lo que suma unos 20 000 anclajes para una imagen de 1000 × 600.
Cómo se definen los anclajes#
Un conjunto de anclajes es una lista de tamaños y proporciones que se repite en cada celda de un mapa de características, por lo que el número de anclajes equivale a celdas × formas por celda. Los detectores con una red piramidal de características (FPN) asignan anclajes pequeños a niveles detallados y de alta resolución, y anclajes grandes a niveles más gruesos: RetinaNet usa 9 anclajes por ubicación en cada uno de los cinco niveles, unos 100 000 por imagen. SSD los denomina cajas predeterminadas, y SSD300 distribuye 8732.
Las formas elegidas manualmente se ajustan mal a algunos conjuntos de datos, así que YOLOv2 aplicó agrupamiento k-means a las anchuras y alturas de las cajas de entrenamiento, usando 1 − IoU como distancia, y conservó 5 centros de grupos como anclajes. YOLOv3 agrupó 9 anclajes y los repartió por igual entre sus tres strides de salida, desde 10 × 13 píxeles en el nivel de stride 8 hasta 373 × 326 en el de stride 32.
Asignación de anclajes a objetos#
Durante el entrenamiento, cada anclaje se compara con todas las cajas etiquetadas mediante la intersección sobre la unión (IoU). Los anclajes que se solapan suficientemente con un objeto se convierten en muestras positivas y aprenden la clase del objeto y los desplazamientos hasta su caja delimitadora; los que apenas se solapan se convierten en negativos y aprenden «fondo», mientras que los intermedios se ignoran. La red de propuestas de regiones de Faster R-CNN marca como positivos los IoU de 0,7 o más y como negativos los inferiores a 0,3. También marca como positivo el anclaje que mejor coincide con cada objeto, para que ninguno se quede sin uno.
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}")Solo el anclaje alto de 128 píxeles (proporción 2,0) se solapa lo suficiente con el peatón para ser positivo, con un IoU de 0,88. Se ignoran otros dos anclajes de 128 píxeles, con IoU de 0,31 y 0,50, y los seis anclajes de tamaño incorrecto son negativos. A continuación, el anclaje positivo aprende desplazamientos con la parametrización estándar: el centro se mueve en fracciones de la anchura y la altura del anclaje, y la anchura y la altura se escalan exponencialmente según los valores predichos.
Elección del tamaño de los anclajes para un conjunto de datos#
Los anclajes que se ajustan a las formas de los objetos de un conjunto de datos permiten que más objetos tengan un anclaje positivo, lo que aumenta el recall que puede alcanzar un detector. Ultralytics YOLOv5 parte de los 9 anclajes de YOLOv3 y los comprueba antes del entrenamiento con AutoAnchor: mide el recall máximo posible de sus anclajes en las etiquetas de entrenamiento y, si no supera 0,98, vuelve a ajustarlos con k-means y 1000 generaciones de evolución genética, y solo conserva los nuevos anclajes si mejora el recall.
Limitaciones y detectores sin anclajes#
Los anclajes tienen tres inconvenientes. Casi todos los miles de anclajes de una imagen cubren el fondo, lo que hace que los negativos fáciles dominen la función de pérdida; RetinaNet introdujo la pérdida focal para reducir su peso. Varios anclajes vecinos se ajustan al mismo objeto, así que la salida necesita supresión no máxima (NMS) para conservar una caja por objeto. Además, los tamaños, las proporciones y los umbrales de IoU son hiperparámetros que cambian con cada conjunto de datos y tamaño de imagen.
Los detectores sin anclajes eliminan esos hiperparámetros al predecir cajas a partir de puntos o puntos clave, y la mayoría de los detectores en tiempo real publicados desde YOLOX en 2021 no usan anclajes. Los anclajes siguen presentes en detectores basados en anclajes como Faster R-CNN, Mask R-CNN y RetinaNet. Al comparar RetinaNet con FCOS, que no usa anclajes, ATSS descubrió que, una vez que ambos seleccionaban las muestras positivas de la misma forma, RetinaNet con 9 anclajes por ubicación no era más preciso que con 1.










