One-Stage Object Detectors
Одностадийные детекторы объектов предсказывают все рамки и классы за один проход сети, без этапа формирования областей-кандидатов. Разбираем принцип работы, ключевые модели и компромиссы.
Одноэтапные детекторы объектов — это модели обнаружения объектов, которые за один прямой проход одной сети предсказывают ограничивающие рамки и метки классов всех объектов на изображении, одновременно оценивая плотную сетку возможных местоположений. В них нет отдельного этапа предложения областей: двухэтапные детекторы объектов сначала предлагают области, в которых может находиться объект, а затем запускают вторую голову для каждой области. Устранение этого этапа сделало одноэтапные детекторы основой обнаружения в реальном времени: от YOLO, базовая модель которого в 2015 году обрабатывала 45 кадров в секунду, до современных моделей.
Как работают одноэтапные детекторы#
Базовая сеть преобразует изображение в карты признаков, шея объединяет их на разных масштабах, а плотная голова детектора предсказывает оценку класса и рамку в каждой точке каждого масштаба. Ранние одноэтапные модели, например SSD, YOLOv2 и RetinaNet, предсказывали смещения относительно нескольких опорных рамок в каждой точке. Начиная с FCOS в 2019 году большинство моделей предсказывают расстояния от каждой точки до четырёх краёв рамки — так устроены безанкерные детекторы. В результате получаются тысячи кандидатов на рамки. Порог уверенности и подавление немаксимумов (NMS) сокращают их количество до одной рамки на объект, либо голова, обученная с помощью сопоставления «один к одному», сразу выдаёт итоговый результат.
Для запуска одноэтапного детектора достаточно одного вызова; разбор времени показывает один проход сети:
from ultralytics import YOLO
# Load YOLO26n, a one-stage detector pretrained on the 80 COCO classes
model = YOLO("yolo26n.pt")
# One forward pass predicts the box and class of every object in the image
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
print(f"{len(result.boxes)} objects: {[result.names[int(c)] for c in result.boxes.cls]}")
# Milliseconds for resizing the image, the single network pass, and NMS
print(result.speed)result.speed показывает три этапа: предобработку, инференс и постобработку. Один проход инференса охватывает все объекты на изображении.
Одностадийные и двухстадийные детекторы#
В обеих архитектурах используются одна и та же базовая сеть и шея. Затем двухэтапный детектор запускает сеть предложений областей, которая выбирает несколько сотен областей-кандидатов, вырезает признаки каждой области и передаёт каждое обрезанное изображение второй голове для классификации и уточнения. Одноэтапный детектор заменяет все эти этапы одной плотной головой, работающей в каждой точке сетки.
Семейство R-CNN много лет лидировало по точности обнаружения: Faster R-CNN уточняет около 300 предложенных областей на изображение и работал со скоростью 5 FPS с базовой сетью VGG-16. Одноэтапные детекторы были намного быстрее, но уступали по точности, пока в 2017 году RetinaNet не показал, что разрыв вызван дисбалансом между передним и задним планом: плотный детектор оценивает около 100 000 возможных областей на изображение, почти все из которых относятся к фону, и эти простые отрицательные примеры преобладают в стандартной функции потерь. Фокальная функция потерь уменьшает их вес, благодаря чему RetinaNet сравнялся по скорости с ранними одноэтапными детекторами и превзошёл по точности тогдашние двухэтапные модели. Детекторы на основе Transformer, такие как DETR и RT-DETR, также работают как одна сеть, предсказывая набор рамок фиксированного размера с сопоставлением «один к одному».
Примеры применения в реальных условиях#
- Аналитика дорожного движения и видео: детекторы запускаются на каждом кадре с каждой камеры, чтобы считать автомобили, измерять поток и передавать данные трекерам объектов.
- Контроль качества на производстве: камеры на производственной линии обнаруживают дефекты и отсутствующие компоненты на деталях, проходящих перед камерой за доли секунды.
- Дроны и встраиваемые устройства: одна компактная сеть укладывается в вычислительный бюджет и бюджет энергопотребления дрона, телефона или умной камеры.
Идеи, лежащие в основе современных одноэтапных детекторов#
- Сети пирамиды признаков (FPN): предсказания на нескольких разрешениях позволяют картам с мелким масштабом обнаруживать небольшие объекты, а картам с крупным масштабом — большие.
- Фокальная функция потерь: уменьшение веса простых кандидатов фона устранило дисбаланс классов, который снижал эффективность ранних плотных детекторов.
- Назначение меток: методы, такие как SimOTA и назначение с выравниванием задач, во время обучения выбирают положительные позиции для каждого объекта на основе самих предсказаний.
- Головы без NMS: голова, обученная с помощью сопоставления «один к одному», выдаёт по одной рамке на объект, устраняя этап постобработки, стоимость которого растёт с количеством кандидатов.
YOLO26 — одноэтапный детектор без якорей с обоими типами головы: по умолчанию он применяет NMS, а nms=False переключает его на голову один-к-одному. YOLO26n достигает 40,9 mAP50-95 на COCO с NMS и 40,1 без неё; время обработки изображения на GPU NVIDIA T4 с TensorRT составляет 1,7 мс.










