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

Полезные ссылки

← Назад к списку тем