Learn how anchor boxes act as templates for object detection. Explore their role in localization, compare anchor-based vs. anchor-free models like [YOLO26](https://docs.ultralytics.com/models/yolo26/), and discover real-world CV applications.
Los cuadros de anclaje son rectángulos de referencia predefinidos con proporciones y escalas específicas que se colocan en una imagen para ayudar a los modelos de detección de objetos a localizar y clasificar objetos. En lugar de pedir a una red neuronal que prediga el tamaño y la posición exactos de un objeto desde cero, lo que puede resultar inestable debido a la gran variedad de formas de los objetos , el modelo utiliza estas plantillas fijas como punto de partida. Al aprender a predecir cuánto ajustar, o «regresar», estos cuadros iniciales para que se ajusten a la realidad, el sistema puede lograr una convergencia más rápida y una mayor precisión. Esta técnica transformó fundamentalmente el campo de la visión por ordenador (CV) al simplificar la compleja tarea de la localización en un problema de optimización más manejable.
En los detectores clásicos basados en anclajes, la imagen de entrada se divide en una cuadrícula de celdas. En cada ubicación de celda, la red genera múltiples cuadros de anclaje con diferentes geometrías. Por ejemplo, para detect simultáneamente detect peatón alto y un coche ancho, el modelo podría proponer un cuadro alto y estrecho y un cuadro corto y ancho en el mismo punto central.
During model training, these anchors are matched against actual objects using a metric called Intersection over Union (IoU). Anchors that overlap significantly with a labeled object are designated as "positive" samples. The network then learns two parallel tasks:
Este enfoque permite al modelo manejar múltiples objetos de diferentes tamaños situados cerca unos de otros, ya que cada objeto puede asignarse al ancla que mejor se adapte a su forma.
Aunque las arquitecturas más recientes se están orientando hacia diseños sin anclajes, las cajas de anclaje siguen siendo vitales en muchos sistemas de producción establecidos en los que las características de los objetos son predecibles.
Es importante distinguir entre los métodos tradicionales basados en anclajes y los modernos detectores sin anclajes.
Aunque las API modernas de alto nivel, como la Ultralytics , abstraen estos detalles durante el entrenamiento, comprender los anclajes resulta útil cuando se trabaja con arquitecturas de modelos más antiguas o se analizan archivos de configuración de modelos. El siguiente fragmento de código muestra cómo cargar un modelo e inspeccionar su configuración, donde normalmente se definirían los ajustes de anclaje (si los hubiera).
from ultralytics import YOLO
# Load a pre-trained YOLO model (YOLO26 is anchor-free, but legacy configs act similarly)
model = YOLO("yolo26n.pt")
# Inspect the model's stride, which relates to grid cell sizing in detection
print(f"Model strides: {model.model.stride}")
# For older anchor-based models, anchors might be stored in the model's attributes
# Modern anchor-free models calculate targets dynamically without fixed boxes
if hasattr(model.model, "anchors"):
print(f"Anchors: {model.model.anchors}")
else:
print("This model architecture is anchor-free.")
Aunque son eficaces, las cajas de anclaje introducen complejidad. La gran cantidad de anclajes generados, a menudo decenas de miles por imagen, crea un problema de desequilibrio de clases, ya que la mayoría de los anclajes solo cubren el fondo. Técnicas como Focal Loss se utilizan para mitigar esto restando peso a los ejemplos de fondo fáciles. Además, el resultado final suele requerir supresión no máxima (NMS) para filtrar los recuadros superpuestos redundantes, lo que garantiza que solo quede la detección más fiable para cada objeto.