YOLO — детекция объектов
Задача детекции
Классические подходы к детекции объектов работали в два этапа:
- Распределение пикселей по классам (сегментация).
- Группировка пикселей и выдача bounding boxes.
YOLO (You Only Look Once) решает задачу за один проход сети, что на порядок быстрее двухэтапных подходов.
IoU — Intersection over Union
Метрика качества предсказанного bounding box:
\[\text{IoU} = \frac{A \cap B}{A \cup B}\]
где \(A\) — предсказанный bounding box, \(B\) — истинный. Значение от 0 до 1; обычно порог детекции — IoU \(\geq 0.5\).
YOLOv1
Изображение делится на сетку ячеек. Каждая ячейка предсказывает несколько bounding boxes и вероятности классов. Всё это происходит в одном прямом проходе.
Функция потерь состоит из трёх компонент:
- Regression Loss — MSE по координатам и размерам предсказанных bounding boxes.
- Confidence Loss — ошибка уверенности модели, считается через IoU.
- Classification Loss — MSE по предсказанным меткам классов.
Инференс:
- Считаем метки для каждой ячейки сетки.
- Удаляем рамки с IoU \(< 0.5\).
- Применяем Non-Maximum Suppression (NMS): сортируем bounding boxes по убыванию IoU, последовательно оставляем наиболее уверенные, удаляя сильно перекрывающиеся с ними.
YOLOv2
- Убраны полносвязные слои.
- Вместо прямого предсказания bounding boxes предсказываются anchor boxes — сдвиги относительно заранее заданных якорных рамок.
- Переконфигурированы свёртки.
- Добавлен Batch Normalization.
YOLOv3
- Используется более глубокая архитектура — Feature Pyramid Network (FPN): пирамида признаков для детекции объектов разного масштаба.
- Изменён Confidence Loss.
- Детекция на трёх масштабах одновременно.
| Версия | Ключевые изменения |
|---|---|
| YOLOv1 | Один проход, сетка ячеек, три компоненты лосса |
| YOLOv2 | Anchor boxes, убраны FC-слои, Batch Norm |
| YOLOv3 | FPN, детекция на трёх масштабах, изменён Confidence Loss |