Чем двухстадийные детекторы отличаются от одностадийных по архитектуре, скорости и качеству?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
Двухстадийные детекторы сначала генерируют кандидаты объектов, а потом уточняют их класс и координаты. Одностадийные делают предсказание сразу по всей картинке без отдельного этапа proposals. Обычно двухстадийные дают лучшее качество, а одностадийные — выше скорость и проще в продакшене.
Определение:
Двухстадийный детектор строится вокруг двух последовательных этапов: сначала модель находит области, где потенциально есть объект, затем классифицирует эти области и уточняет bounding box. Классический пример — семейство R-CNN, Faster R-CNN.
Одностадийный детектор объединяет поиск объекта и классификацию в одном проходе: модель сразу предсказывает классы и координаты для множества якорей или сеточных ячеек. Примеры — YOLO, SSD, RetinaNet.
По архитектуре ключевое отличие в наличии отдельной стадии proposal/refinement у двухстадийных моделей. По скорости одностадийные обычно быстрее, потому что не делают дополнительную обработку кандидатов. По качеству двухстадийные долгое время были сильнее на сложных сценах, особенно когда важна точность локализации и распознавание мелких объектов, но современные одностадийные модели сильно сократили этот разрыв.
Пример использования:
Если нужно делать офлайн-анализ снимков с упором на точность, например поиск дефектов на производственной линии, часто выбирают двухстадийную модель. Если нужна обработка видео в реальном времени, например детекция пешеходов в ADAS или на камере наблюдения, чаще берут одностадийную.
# Концептуальный пример сравнения пайплайнов
# Two-stage:
image -> backbone -> region proposals -> roi pooling -> classifier + box regressor -> detections
# One-stage:
image -> backbone + detection head -> class scores + box regressions -> detections
Пояснение кода:
Код показывает только разницу в логике пайплайна, а не конкретную реализацию фреймворка.
- В двухстадийном варианте изображение сначала проходит через backbone, который извлекает признаки.
- Затем proposal-модуль предлагает области, где могут быть объекты.
- Для каждой области отдельная голова уточняет класс и координаты рамки.
- В одностадийном варианте backbone сразу передает признаки в detection head.
- Голова одновременно предсказывает классы и координаты для множества позиций на карте признаков.
Ключевые моменты:
- Двухстадийные детекторы: сначала proposals, потом классификация и регрессия.
- Одностадийные детекторы: один проход, без отдельной стадии proposals.
- Двухстадийные обычно точнее на сложных сценах, но медленнее.
- Одностадийные обычно быстрее и лучше подходят для real-time.
- Разрыв в качестве сократился: современные одностадийные модели часто близки к двухстадийным по метрикам.
- Выбор зависит от приоритета: точность и сложные объекты против скорости и простоты внедрения.