YOLO

Материал из MachineLearning.

Перейти к: навигация, поиск
Статья написана с использованием LLM OpenAI GPT-5.5 и проверена участником Georgii Maiorov Georgii Maiorov 23:14, 18 июля 2026 (MSD)


Содержание

YOLO

YOLO (You Only Look Once) — семейство алгоритмов детекции объектов, основанных на представлении задачи обнаружения объектов как единой задачи регрессии. В отличие от двухэтапных детекторов, сначала генерирующих области-кандидаты, а затем классифицирующих их, YOLO одновременно определяет положение объектов, оценивает вероятность их существования и предсказывает их классы за один проход нейронной сети.

Появление первой версии YOLO в 2016 году стало одним из наиболее значимых событий в развитии компьютерного зрения. Благодаря высокой скорости работы алгоритм сделал возможным применение детекторов объектов в системах реального времени: автономных транспортных средствах, робототехнике, видеонаблюдении и мобильных устройствах.

Со временем название YOLO стало обозначать не отдельный алгоритм, а целое семейство архитектур, развивавшихся различными исследовательскими коллективами. Современные версии значительно отличаются от первоначальной модели, однако сохраняют её основную идею — выполнять детекцию объектов за один проход сети.

Происхождение названия

Название You Only Look Once («Смотришь только один раз») отражает ключевую особенность алгоритма. В отличие от ранних методов детекции, многократно анализировавших различные области изображения, YOLO обрабатывает всё изображение целиком одним запуском нейронной сети.

Такой подход позволяет одновременно учитывать глобальный контекст изображения и существенно уменьшить вычислительные затраты по сравнению с двухэтапными алгоритмами.

Постановка задачи

Пусть задано изображение x. Требуется определить все объекты, принадлежащие заранее известным классам.

Для каждого найденного объекта необходимо предсказать:

  • координаты ограничивающего прямоугольника;
  • вероятность наличия объекта;
  • класс объекта.

Результатом работы детектора является множество предсказаний вида


(b_i,c_i,p_i),

где b_i — ограничивающий прямоугольник (bounding box), c_i — предсказанный класс объекта, а p_i — уверенность модели в правильности предсказания.

После завершения предсказаний обычно применяется алгоритм Non-Maximum Suppression, удаляющий дублирующиеся ограничивающие прямоугольники.

Основная идея

Главное отличие YOLO от большинства ранних детекторов состоит в том, что задача обнаружения объектов рассматривается как единая задача регрессии.

В классических двухэтапных алгоритмах, таких как Faster R-CNN, сначала генерируются области-кандидаты, содержащие объекты, после чего каждая область отдельно классифицируется и уточняется.

YOLO выполняет все эти операции одновременно. Изображение проходит через нейронную сеть только один раз, после чего сеть непосредственно предсказывает координаты ограничивающих прямоугольников, вероятность наличия объектов и их классы.

Схематически процесс работы можно представить следующим образом.

Изображение
      │
      ▼
Сверточная нейронная сеть
      │
      ▼
Предсказание:
 • координат объектов;
 • вероятностей объектов;
 • классов объектов.
      │
      ▼
Non-Maximum Suppression
      │
      ▼
Итоговый список объектов

Благодаря единому процессу обработки изображение не анализируется многократно, что значительно уменьшает время работы алгоритма и позволяет выполнять детекцию в режиме реального времени.

Архитектура первой версии YOLO

Первая версия алгоритма, предложенная Джозефом Редмоном и соавторами в 2016 году, использовала свёрточная нейронная сеть, получающую на вход всё изображение целиком.

Изображение разбивалось на регулярную сетку. Каждая её ячейка отвечала за обнаружение объектов, центр которых попадал внутрь данной области.

Для каждой ячейки сеть одновременно предсказывала:

  • несколько ограничивающих прямоугольников;
  • оценку уверенности (confidence);
  • вероятности принадлежности объекта каждому классу.

Таким образом, вся информация о расположении и принадлежности объектов вычислялась одним запуском сети без промежуточных этапов генерации кандидатов.

Несмотря на сравнительно простую архитектуру, первая версия YOLO продемонстрировала скорость, значительно превосходившую существовавшие на тот момент методы детекции.

Эволюция семейства YOLO

После публикации первой версии алгоритма развитие семейства YOLO происходило чрезвычайно быстро. Каждая новая версия стремилась повысить точность детекции, сохранив при этом высокую скорость работы.

Следует отметить, что начиная с 2020 года развитие семейства перестало быть линейным. Если версии YOLO и YOLOv2–YOLOv4 разрабатывались под руководством Джозефа Редмона и Алексея Бочковского, то последующие версии создавались различными исследовательскими коллективами независимо друг от друга. Поэтому номера версий не отражают единую последовательность развития архитектуры.

YOLOv2

YOLOv2 (YOLO9000) значительно улучшила качество локализации объектов по сравнению с первой версией.

Основными нововведениями стали:

  • использование anchor boxes;
  • пакетная нормализация (Batch Normalization);
  • обучение на изображениях различных размеров;
  • более мощная базовая сеть Darknet-19.

Кроме того, была предложена возможность совместного обучения на нескольких наборах данных, что позволило распознавать значительно большее число классов объектов.

YOLOv3

В YOLOv3 архитектура была существенно переработана.

Основными изменениями стали:

  • новая базовая сеть Darknet-53;
  • предсказание объектов на нескольких масштабах;
  • использование независимых логистических классификаторов вместо Softmax.

Многомасштабное предсказание значительно повысило качество обнаружения небольших объектов, которые ранее являлись одной из слабых сторон алгоритма.

YOLOv4

YOLOv4 объединила большое количество инженерных улучшений, накопленных в исследованиях по детекции объектов.

Среди наиболее важных изменений:

  • улучшенная архитектура CSPDarknet53;
  • использование PANet для объединения признаков;
  • современные методы аугментации данных;
  • оптимизированные функции потерь локализации.

YOLOv4 стала одной из наиболее популярных моделей благодаря удачному балансу между скоростью работы и качеством детекции.

Независимое развитие семейства

После публикации YOLOv4 дальнейшее развитие происходило несколькими независимыми командами.

Версия YOLOv5, разработанная компанией Ultralytics, получила широкое распространение благодаря удобной реализации, высокой скорости обучения и простой интеграции. Несмотря на название, она не является официальым продолжением первоначальной линейки YOLO.

Впоследствии появились и другие версии, предложенные различными авторами:

Каждая из них предлагала собственные архитектурные решения, методы обучения и оптимизации.

Основные тенденции развития

Несмотря на разнообразие современных реализаций, развитие семейства YOLO происходило в нескольких общих направлениях.

Улучшение архитектуры сети.

Каждое новое поколение использовало более эффективные базовые сети, обеспечивающие лучшее качество извлечения признаков при меньшем числе вычислений.

Многомасштабная детекция.

Современные версии одновременно анализируют признаки различных пространственных масштабов, благодаря чему значительно улучшается обнаружение небольших объектов.

Совершенствование функций потерь.

Классические ошибки регрессии постепенно были заменены функциями потерь, основанными на Intersection over Union, такими как GIoU, DIoU и CIoU. Это позволило улучшить качество локализации ограничивающих прямоугольников.

Улучшение процедуры сопоставления объектов.

Современные алгоритмы используют более эффективные методы назначения объектов предсказаниям во время обучения, что повышает устойчивость оптимизации.

Переход к anchor-free подходам.

Если ранние версии YOLO использовали заранее заданные якорные прямоугольники (anchor boxes), то в современных архитектурах всё чаще применяется прямое предсказание координат объектов без использования фиксированного набора якорей. Это упрощает обучение и уменьшает число настраиваемых параметров.

В результате современные версии YOLO существенно отличаются от первоначальной архитектуры, однако сохраняют её основную идею — выполнять обнаружение объектов за один проход нейронной сети.

Обучение и функции потерь

Как и большинство современных детекторов объектов, YOLO решает одновременно несколько подзадач:

  • определение наличия объекта;
  • классификацию объекта;
  • локализацию ограничивающего прямоугольника.

Поэтому обучение осуществляется с использованием многокомпонентной функции потерь, объединяющей ошибки различных типов:


L=\lambda_{cls}L_{cls}+\lambda_{box}L_{box}+\lambda_{obj}L_{obj},

где L_{cls} отвечает за классификацию объектов, L_{box} — за точность локализации ограничивающих прямоугольников, а L_{obj} — за оценку вероятности наличия объекта. Весовые коэффициенты позволяют сбалансировать вклад отдельных компонентов в процессе обучения.

В ранних версиях YOLO для локализации использовались классические функции потерь регрессии. Современные реализации преимущественно применяют функции потерь, основанные на Intersection over Union, поскольку они лучше отражают качество совпадения предсказанного и истинного ограничивающих прямоугольников.

Подробное описание современных функций потерь приведено в статье Функции потерь в задачах детекции объектов.

Преимущества

Популярность семейства YOLO обусловлена сочетанием высокой скорости работы и хорошего качества детекции.

К основным достоинствам алгоритма относятся:

  • высокая скорость обработки изображений;
  • возможность работы в режиме реального времени;
  • единая архитектура, одновременно выполняющая локализацию и классификацию объектов;
  • сравнительно простая процедура обучения и применения;
  • большое количество открытых реализаций и предварительно обученных моделей.

Благодаря этим свойствам алгоритмы семейства YOLO широко используются как в научных исследованиях, так и в прикладных системах компьютерного зрения.

Ограничения

Несмотря на многочисленные достоинства, алгоритмы семейства YOLO имеют ряд ограничений.

Первые версии испытывали трудности при обнаружении небольших объектов и объектов, расположенных близко друг к другу. Современные архитектуры значительно уменьшили влияние этих недостатков благодаря многомасштабным предсказаниям и усовершенствованным методам извлечения признаков, однако задача детекции мелких объектов остаётся одной из наиболее сложных.

Кроме того, качество работы детектора существенно зависит от объёма и разнообразия обучающей выборки. При переносе модели на новую предметную область обычно требуется дополнительное обучение на специализированных данных.

Применение

Алгоритмы семейства YOLO используются во многих практических задачах компьютерного зрения.

Наиболее распространённые области применения:

  • системы автономного вождения;
  • робототехника;
  • интеллектуальное видеонаблюдение;
  • промышленный контроль качества;
  • медицинский анализ изображений;
  • анализ спутниковых и аэрофотоснимков;
  • беспилотные летательные аппараты;
  • мобильные приложения дополненной реальности.

Высокая скорость обработки делает YOLO особенно востребованным в задачах, требующих принятия решений в реальном времени.

См. также

Литература

  1. Redmon J., Divvala S., Girshick R., Farhadi A. You Only Look Once: Unified, Real-Time Object Detection. CVPR, 2016.
  2. Redmon J., Farhadi A. YOLO9000: Better, Faster, Stronger. CVPR, 2017.
  3. Redmon J., Farhadi A. YOLOv3: An Incremental Improvement. arXiv:1804.02767, 2018.
  4. Bochkovskiy A., Wang C.-Y., Liao H.-Y. M. YOLOv4: Optimal Speed and Accuracy of Object Detection. arXiv:2004.10934, 2020.
  5. Wang C.-Y., Bochkovskiy A., Liao H.-Y. M. YOLOv7: Trainable Bag-of-Freebies Sets New State-of-the-Art for Real-Time Object Detectors. CVPR, 2023.
  6. Jocher G. et al. Ultralytics YOLO Documentation.
  7. Szeliski R. Computer Vision: Algorithms and Applications. Springer, 2022.
Личные инструменты