Anchor Boxes
Узнай, как якорные рамки (anchor boxes) выступают в роли шаблонов для детектирования объектов. Открой для себя, как они повышают точность и как модели, подобные Ultralytics YOLO26, используют безъякорные (anchor-free) подходы.
Якорные боксы — это предопределенные опорные прямоугольники с заданными пропорциями и масштабами, которые размещаются на изображении, чтобы помочь моделям обнаружения объектов находить и классифицировать объекты. Вместо того чтобы просить нейронную сеть предсказывать точный размер и положение объекта с нуля — что может быть нестабильным из-за огромного разнообразия форм объектов, — модель использует эти фиксированные шаблоны в качестве отправной точки. Научившись предсказать, насколько нужно скорректировать, или «регрессировать», эти начальные боксы, чтобы они соответствовали истинным данным, система может достичь более быстрой сходимости и более высокой точности. Эта техника кардинально изменила область computer vision (CV), упростив сложную задачу локализации до более управляемой задачи оптимизации.
Механизм работы Anchor Boxes#
В классических anchor-based detectors входное изображение делится на сетку ячеек. В каждой позиции ячейки сеть генерирует несколько якорных боксов с различной геометрией. Например, чтобы одновременно обнаружить высокого пешехода и широкий автомобиль, модель может предложить высокий узкий бокс и низкий широкий бокс в одной и той же центральной точке.
Во время model training эти якоря сопоставляются с реальными объектами с помощью метрики под названием Intersection over Union (IoU). Якоря, которые значительно пересекаются с размеченным объектом, обозначаются как «позитивные» образцы. Затем сеть изучает две параллельные задачи:
-
Classification: Сеть присваивает якорю показатель вероятности, указывающий на вероятность того, что он содержит определенный класс (например, «собака» или «велосипед»). При этом используются стандартные цели supervised learning, такие как перекрестно-энтропийные потери.
-
Box Regression: Сеть вычисляет точные значения смещений (сдвиги координат и масштабные коэффициенты), необходимые для преобразования общего якоря в плотно прилегающий bounding box.
Этот подход позволяет модели обрабатывать несколько объектов разных размеров, расположенных близко друг к другу, так как каждый объект может быть назначен анкору, который лучше всего соответствует его форме.
Реальные приложения#
Хотя более новые архитектуры переходят к проектам без анкоров (anchor-free), anchor boxes остаются важными во многих уже существующих производственных системах, где характеристики объектов предсказуемы.
- Retail and Inventory Management: В AI-driven retail solutions камеры отслеживают запасы на полках. Поскольку такие продукты, как коробки хлопьев или банки с газировкой, имеют стандартизированные размеры, якорные боксы могут быть настроены под эти конкретные пропорции. Эти предварительные знания помогают модели поддерживать высокий recall даже в загроможденной обстановке.
- Autonomous Driving: Стеки восприятия в autonomous vehicles полагаются на обнаружение пешеходов, транспортных средств и дорожных знаков. Поскольку автомобиль, видимый издалека, имеет относительно стабильный профиль формы по сравнению с дорогой, использование якорей, адаптированных под эти формы, обеспечивает надежное object tracking и оценку расстояния.
Anchor-Based vs. Anchor-Free#
Важно различать традиционные методы на основе якорей и современные anchor-free detectors.
- На основе якорей: Модели вроде оригинальной Faster R-CNN или ранних версий YOLO (например, Ultralytics YOLOv5) используют эти предопределенные шаблоны. Они надежны, но часто требуют ручной настройки гиперпараметров (размеров/соотношений сторон якорей) или алгоритмов кластеризации, таких как k-means clustering, для адаптации к новым наборам данных.
- Anchor-Free: Продвинутые модели, включая YOLO26, часто используют подходы без якорей или сквозные (end-to-end) подходы. Эти сети предсказывают центры объектов или ключевые точки напрямую, устраняя необходимость в ручной настройке якорей. Это упрощает архитектуру и ускоряет inference, исключая вычисления, необходимые для обработки тысяч пустых фоновых якорей.
Пример: Доступ к информации об анкорах#
Хотя современные высокоуровневые API, такие как Ultralytics Platform, абстрагируют эти детали во время обучения, понимание якорей полезно при работе со старыми архитектурами моделей или при анализе файлов конфигурации моделей. Следующий фрагмент кода демонстрирует, как загрузить модель и изучить ее конфигурацию, где обычно определяются настройки якорей (если они присутствуют).
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.")Проблемы и соображения#
Будучи эффективными, якорные боксы привносят сложность. Огромное количество генерируемых якорей — часто десятки тысяч на изображение — создает проблему дисбаланса классов, поскольку большинство якорей покрывают только фон. Такие методы, как Focal Loss, используются для смягчения этого за счет снижения веса простых фоновых примеров. Кроме того, для окончательного результата обычно требуется Non-Maximum Suppression (NMS), чтобы отфильтровать избыточные перекрывающиеся боксы и гарантировать, что для каждого объекта останется только наиболее уверенное обнаружение.






