История и основные принципы YOLO
YOLO (You Only Look Once) представляет собой архитектуру компьютерного зрения, известную высокой скоростью обработки и наличием множества версий.[1] Эта модель вышла в 2016 году с первой версией, а последняя обновление датируется сентябрем текущего года.[1] YOLO эффективно решает задачи детекции объектов, классификации, трекинга и оценки поз в реальном времени, что делает её востребованной в различных приложениях.[1]
Разработка YOLO началась как ответ на необходимость быстрого анализа изображений. В отличие от предшественников, она объединяет все этапы обработки в единую сеть, обеспечивая производительность, подходящую для динамичных сценариев. Пользователи отмечают простоту интеграции YOLO в проекты, где требуется мгновенная реакция на визуальные данные.[1]
Сравнение с другими моделями
До появления YOLO ведущей моделью считалась Faster R-CNN, но её сложная структура приводила к низкой скорости работы.[1] YOLO превзошла конкурентов как по скорости, так и по ключевым метрикам, радикально изменив подходы в компьютерном зрении.[1]
Это достижение стало возможным благодаря инновационному взгляду на детекцию: вместо пошагового анализа YOLO смотрит на изображение целиком за один проход. Такие улучшения открыли путь для применения в реальном времени, где задержки недопустимы.[1]
Задача детекции
Детекция подразумевает выделение нескольких объектов на изображении с определением их координат и классов принадлежности.[1] В отличие от задач классификации с локализацией, здесь количество объектов заранее неизвестно, что усложняет процесс.[1]
Пользователь, работающий с YOLO, получает готовые bounding box'ы для каждого объекта. Это позволяет автоматизировать анализ сцен с переменным числом элементов, от уличного трафика до медицинских снимков.[1]
Архитектура YOLOv1
YOLOv1 построена на базе GoogLeNet с добавлением двух сверточных и полносвязных слоев.[1] Изображение делится на сетку 7x7 ячеек, где каждая ячейка предсказывает 30 значений: координаты двух bounding box'ов и вероятности классов.[1]
Такая структура упрощает вычисления по сравнению с двухэтапными методами. Разделение на ячейки позволяет модели фокусироваться на локальных областях, сохраняя глобальный контекст изображения.[1]
Обучение YOLOv1
Обучение использует многосоставную функцию потерь, включающую regression loss, classification loss и confidence loss.[1] Regression loss penalizes ошибки в координатах и размерах bounding box'ов.[1]
Classification loss измеряет расхождения в предсказанных метках классов, а confidence loss помогает определять наличие объекта в ячейке через IoU.[1] Суммарно эти компоненты обеспечивают баланс между точностью локализации и классификацией.
Инференс YOLOv1
Инференс подразумевает применение обученной модели к новым изображениям для обнаружения объектов.[1] Сбор ответа начинается с тензора предсказаний.[1]
Далее метки классов привязываются к bounding box'ам путём умножения confidence score на вероятности классов. Удаляются боксы с IoU ниже 0.5, а Non-Maximum Suppression устраняет перекрытия.[1]
YOLOv2
В YOLOv2 убрали полносвязные слои, заменив их свертками и добавив batch normalization.[1] Базовая сеть стала Darknet-19, входное разрешение увеличено, сетка — 13x13 с пятью боксами на ячейку.[1]
Добавлены skip connections и anchor boxes, подобранные через K-means. YOLO9000 интегрировала классы ImageNet и COCO, сократив якоря до трёх.[1]
YOLOv3
YOLOv3 перешла на Darknet-53, улучшив метрики ценой скорости.[1] Три фиче-мапы разных масштабов позволяют детектировать объекты разного размера.[1]
Функция потерь обновлена: confidence score заменён на objectness score. Это повысило точность в многоклассовых сценариях.[1]
Objectness score и изменения в YOLO
Objectness score равен единице для наиболее уверенного бокса в ячейке.[1] Новая функция потерь применяет кросс-энтропию вместо квадратичной ошибки.[1]
Благодаря этому YOLO обрела способность к мульти-классификации, расширив спектр задач.[1]
YOLOv4
YOLOv4 создана с участием Алексея Бочковского и использует CSPDarknet53 с активацией Mish и Cross Stage Partial.[1] Добавлены DropBlock, Mosaic augmentation, CutMix, PANet и SPP.[1]
Изменены расчёт координат боксов и постобработка, что сделало модель на 20% эффективнее предшественников.[1]
YOLOv5
YOLOv5 вышла через месяц после YOLOv4 без научной публикации, с начальными ошибками в метриках.[1] Ultralytics продолжила развитие, обновив блоки, активацию, loss и аугментации.[1]
Популярность выросла за счёт MLOps-среды и регулярных обновлений.[1]
YOLOv6 и YOLOv7
YOLOv7 опередила YOLOv6 из-за разногласий разработчиков.[1] YOLOv6 предлагает бэкенды по размеру моделей, Anchor-Free Decoupled Head и оптимизации скорости.[1]
YOLOv7 ввела расширенную агрегацию слоев, техники скейлинга и репараметризацию.[1]
YOLOv8: новая модель и её особенности
Ultralytics представила YOLOv8 в начале 2023 года как единую платформу для детекции, сегментации и классификации.[1] Доступны пять вариантов от Nano до YOLOv8x, с экспортом в разные форматы и работой на CPU/GPU.[1]
API совместимо с CLI и Python, упрощая использование.[1]
Изменения в модели
YOLOv8 имеет новый Backbone, функцию потерь и Anchor-Free head.[1] Обучение проходит этапы на COCO detection, сегментации и ImageNet, с классификацией на 224x224.[1]
Модель достигла SOTA-метрик среди версий YOLO.[1]
Последующие версии
Ultralytics выпустила YOLOv9, YOLOv10 и YOLOv11, фокусируясь на оптимизации инференса, сокращении параметров и совместимости.[1] YOLOv9 ввела GELAN и PGI.[1]
Метрики улучшаются через накопленные доработки.[1]
Современное состояние YOLO
YOLO остаётся наиболее точной и эффективной архитектурой для задач компьютерного зрения.[1] Её популярность сохраняется спустя годы благодаря универсальности и скорости.[1]
Разработчики продолжают адаптировать YOLO под новые вызовы, подтверждая статус лидера в области.[1]