1. Введение в архитектуру YOLO и принципы работы детекции объектов
Введение в архитектуру YOLO и принципы работы детекции объектов
Добро пожаловать на курс «Основы детекции объектов с использованием YOLO». Это первая статья, в которой мы заложим фундамент для понимания того, как компьютеры «видят» и находят объекты на изображениях. Мы разберем, чем детекция отличается от классификации, почему старые методы были медленными и как архитектура YOLO совершила революцию в компьютерном зрении.
Что такое детекция объектов?
Прежде чем погружаться в архитектуру нейросетей, важно четко разграничить понятия. В компьютерном зрении существует несколько ключевых задач:
!Иллюстрация различий между классификацией, локализацией и детекцией объектов.
Детекция объектов — это комбинация двух задач: выяснить, что это за объект, и определить, где он находится.
Проблема традиционных подходов
До появления современных алгоритмов, таких как YOLO, задача детекции решалась методом «скользящего окна» (Sliding Window). Представьте, что вы смотрите на мир через узкую трубку. Вы перемещаете эту трубку по всему изображению слева направо, сверху вниз, пытаясь понять, попал ли в поле зрения объект.
Этот метод имел существенные недостатки:
* Низкая скорость: Чтобы найти объекты разного размера, нужно было прогонять окно разного масштаба тысячи раз. * Высокая вычислительная стоимость: Нейросеть классифицировала каждый фрагмент отдельно.
Более продвинутые методы, такие как R-CNN (Region-based Convolutional Neural Networks), использовали алгоритмы для предложения регионов (Region Proposals), где мог бы находиться объект, и затем классифицировали их. Это было точнее, но все еще слишком медленно для работы в реальном времени (Real-Time).
Революция YOLO: You Only Look Once
В 2015 году Джозеф Редмон (Joseph Redmon) представил архитектуру YOLO, название которой расшифровывается как «You Only Look Once» («Ты смотришь только один раз»).
Главная идея YOLO заключается в том, чтобы рассматривать детекцию объектов не как последовательность классификаций множества окон, а как единую задачу регрессии.
> Люди смотрят на картинку и мгновенно понимают, какие объекты на ней есть, где они находятся и как взаимодействуют. Человеческая зрительная система быстрая и точная.
Нейросеть YOLO «смотрит» на изображение целиком один раз (отсюда и название) и предсказывает координаты рамок и вероятности классов одновременно.
Принцип работы: Сетка (The Grid)
Основа работы YOLO — разделение входного изображения на сетку размером .
!Визуализация разделения изображения на сетку S x S для работы алгоритма YOLO.
Если центр объекта попадает в определенную ячейку сетки, то именно эта ячейка несет ответственность за детекцию этого объекта.
Каждая ячейка сетки предсказывает ограничивающих рамок (bounding boxes) и оценки уверенности (confidence scores) для этих рамок. Оценка уверенности показывает, насколько модель уверена в том, что в рамке есть объект, и насколько точно рамка его охватывает.
Формально оценка уверенности определяется как:
где: * — итоговая оценка уверенности; * — вероятность того, что в данной ячейке вообще есть объект (от 0 до 1); * — метрика Intersection over Union (пересечение через объединение) между предсказанной рамкой и реальной рамкой (ground truth).
Если объекта в ячейке нет, то , и, следовательно, .
Параметры предсказания
Каждая ограничивающая рамка состоит из 5 предсказанных значений: и .
Помимо рамок, каждая ячейка также предсказывает вероятности классов (). Это условные вероятности того, что объект принадлежит к определенному классу (например, «собака», «машина», «велосипед»), при условии, что в ячейке есть объект.
где: * — вероятность того, что объект относится к классу , при условии наличия объекта.
Выходной тензор
В результате одного прохода через нейросеть мы получаем трехмерный тензор (массив данных). Если мы используем сетку , предсказываем рамок и имеем классов, то размер выхода будет:
где: * — количество ячеек сетки по одной стороне; * — количество предсказываемых рамок на одну ячейку; * — количество параметров рамки (); * — количество классов объектов.
Например, в первой версии YOLO использовалась сетка , 2 рамки на ячейку и 20 классов (датасет PASCAL VOC). Размер выхода составлял .
Метрика IoU (Intersection over Union)
Как мы понимаем, насколько точно нейросеть нашла объект? Для этого используется метрика IoU (Intersection over Union — Пересечение через Объединение).
!Графическое объяснение метрики Intersection over Union.
где: * — коэффициент перекрытия (от 0 до 1); * — площадь пересечения предсказанной рамки и реальной рамки; * — общая площадь, занимаемая обеими рамками вместе.
Если , рамки идеально совпадают. Если , рамки не пересекаются вовсе. Обычно детекция считается успешной, если (или другое пороговое значение).
Фильтрация результатов: Non-Maximum Suppression (NMS)
Поскольку каждая ячейка сетки пытается предсказать рамки, для одного большого объекта (например, машины, занимающей несколько ячеек) может быть предсказано множество перекрывающихся рамок. Нам нужно оставить только одну — самую точную.
Для этого используется алгоритм Non-Maximum Suppression (NMS):
Преимущества архитектуры YOLO
Подводя итог, выделим ключевые преимущества, которые сделали YOLO стандартом индустрии:
* Скорость: Благодаря единому проходу (single stage) сеть работает невероятно быстро, позволяя обрабатывать видеопоток в реальном времени (45-150 кадров в секунду). * Глобальный контекст: Сеть видит все изображение целиком, поэтому она реже ошибается, принимая фон за объект (меньше ложноположительных срабатываний на фоне), по сравнению с методами скользящего окна. * Обобщающая способность: YOLO хорошо изучает общие признаки объектов, что позволяет ей неплохо работать даже на изображениях, отличных от тех, на которых она обучалась (например, картины или рисунки).
В следующих статьях мы углубимся в структуру нейросети, разберем процесс подготовки данных и начнем практическую работу с современными версиями YOLO.