Anchor Boxes
Узнай, как якорные блоки служат эталонными шаблонами для обнаружения объектов. Открой для себя, как они повышают точность и как модели, такие как Ultralytics YOLO26, используют безъякорные архитектуры.
Анкерные блоки — это заранее определённые опорные прямоугольники с определёнными соотношениями сторон и масштабами, которые размещаются по всему изображению, чтобы помогать моделям обнаружения объектов находить и классифицировать объекты. Вместо того чтобы просить нейронную сеть с нуля предсказывать точный размер и положение объекта, что может быть нестабильным из-за огромного разнообразия форм объектов, модель использует эти фиксированные шаблоны в качестве отправной точки. Обучаясь предсказывать, насколько нужно изменить, или «регрессировать», эти исходные блоки, чтобы подогнать их под эталонную разметку, система может достичь более быстрой сходимости и более высокой точности. Этот метод коренным образом изменил область компьютерного зрения (CV), упростив сложную задачу локализации до более управляемой задачи оптимизации.
Механизм работы анкерных блоков#
В классических детекторах на основе анкеров входное изображение разделяется на сетку ячеек. В каждой позиции ячейки сеть создаёт несколько анкерных блоков с различной геометрией. Например, чтобы одновременно обнаружить высокого пешехода и широкий автомобиль, модель может предложить в одной и той же центральной точке высокий узкий блок и низкий широкий блок.
Во время обучения модели эти анкеры сопоставляются с реальными объектами с помощью метрики, называемой пересечением над объединением (IoU). Анкеры, которые значительно перекрываются с размеченным объектом, обозначаются как «положительные» образцы. Затем сеть обучается выполнению двух параллельных задач:
-
Классификация: модель назначает анкеру вероятностную оценку, показывающую вероятность того, что он содержит объект определённого класса (например, «собака» или «велосипед»). Для этого используются стандартные цели обучения с учителем, такие как функция потерь перекрёстной энтропии.
-
Регрессия блока: модель вычисляет точные значения смещения (сдвиги координат и коэффициенты масштабирования), необходимые для преобразования общего анкера в плотно охватывающий ограничивающий блок.
Такой подход позволяет модели обрабатывать несколько объектов разных размеров, расположенных близко друг к другу, поскольку каждому объекту можно назначить анкер, который лучше всего соответствует его форме.
Практические применения#
Хотя новые архитектуры переходят к дизайнам без анкеров, анкерные блоки по-прежнему играют важную роль во многих проверенных временем промышленных системах, где характеристики объектов предсказуемы.
- Розничная торговля и управление запасами: В решениях для розничной торговли на основе ИИ камеры отслеживают наличие товаров на полках. Поскольку такие товары, как коробки с хлопьями или банки с газировкой, имеют стандартизированные размеры, анкерные блоки можно настроить под эти конкретные соотношения сторон. Эти априорные знания помогают модели сохранять высокий показатель полноты даже в загромождённых сценах.
- Автономное вождение: Стэки восприятия в автономных транспортных средствах полагаются на обнаружение пешеходов, транспортных средств и дорожных знаков. Поскольку автомобиль, видимый издалека, имеет относительно стабильный профиль формы по сравнению с дорогой, использование анкеров, адаптированных под эти формы, обеспечивает надёжное отслеживание объектов и оценку расстояния.
На основе анкеров и без анкеров#
Важно различать традиционные методы на основе анкеров и современные детекторы без анкеров.
- На основе анкеров: такие модели, как исходная Faster R-CNN или ранние версии YOLO (например, Ultralytics YOLOv5), используют эти заранее определённые шаблоны. Они надёжны, но часто требуют ручной настройки гиперпараметров (размеров и соотношений сторон анкеров) или алгоритмов кластеризации, таких как кластеризация k-means, для адаптации к новым наборам данных.
- Без анкеров: современные модели, включая YOLO26, часто используют подходы без анкеров или сквозные подходы. Эти сети напрямую предсказывают центры объектов или ключевые точки, устраняя необходимость в ручной настройке анкеров. Это упрощает архитектуру и ускоряет инференс, поскольку устраняются вычисления, необходимые для обработки тысяч пустых анкеров фона.
Пример: доступ к информации об анкерах#
Хотя современные высокоуровневые 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, которые уменьшают вес простых примеров фона. Кроме того, для фильтрации избыточных перекрывающихся блоков обычно требуется подавление немаксимумов (NMS), чтобы для каждого объекта оставалось только обнаружение с наибольшей уверенностью.









