Узнайте, как анкорные боксы действуют в качестве эталонных шаблонов для обнаружения объектов. Узнайте, как они повышают точность и как модели, такие как Ultralytics , используют конструкции без анкоров.
Ячейки-якоря — это заранее определенные прямоугольники с определенными пропорциями и масштабами, которые размещаются по всему изображению , чтобы помочь моделям обнаружения объектов в их поиске и классификации. Вместо того, чтобы просить нейронную сеть с нуля предсказывать точный размер и положение объекта, что может быть нестабильным из-за огромного разнообразия форм объектов, модель использует эти фиксированные шаблоны в качестве отправной точки. Обучаясь предсказывать, насколько необходимо скорректировать, или «регрессировать», эти начальные рамки, чтобы они соответствовали реальной ситуации, система может достичь более быстрой конвергенции и более высокой точности. Эта техника коренным образом преобразовала область компьютерного зрения (CV), упростив сложную задачу локализации до более управляемой задачи оптимизации.
В классических детекторах на основе якорей входное изображение делится на сетку ячеек. В каждой ячейке сеть генерирует несколько якорных рамок с различными геометриями. Например, для одновременного detect высокого detect и широкого автомобиля модель может предложить высокую узкую рамку и короткую широкую рамку в одной и той же центральной точке.
Во время обучения модели эти анкоры сопоставляются с реальными объектами с помощью метрики, называемой Intersection over Union (IoU). Анкоры, которые значительно перекрываются с помеченным объектом, обозначаются как «положительные» образцы. Затем сеть обучается двум параллельным задачам:
Такой подход позволяет модели обрабатывать несколько объектов разных размеров, расположенных рядом друг с другом, поскольку каждый объект можно привязать к тому анкеру, который наиболее соответствует его форме.
Хотя новые архитектуры движутся в сторону конструкций без анкеров, анкерные коробки по-прежнему играют важную роль во многих устоявшихся производственных системах, где характеристики объектов предсказуемы.
Важно проводить различие между традиционными методами на основе якорей и современными безякорными детекторами.
Хотя современные высокоуровневые API, такие как Ultralytics , абстрагируются от этих деталей во время обучения, понимание анкоров полезно при работе со старыми архитектурами моделей или анализе файлов конфигурации моделей. Следующий фрагмент кода демонстрирует, как загрузить модель и проверить ее конфигурацию, где обычно определяются настройки анкоров (если они присутствуют).
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) для фильтрации избыточных перекрывающихся блоков, что гарантирует сохранение только наиболее достоверных результатов обнаружения для каждого объекта.