Вступление
Детекция объектов в реальном времени является важнейшей задачей и охватывает большое количество областей, таких как беспилотные транспортные средства, робототехника, видеонаблюдение, дополненная реальность и многие другие. Сейчас такая задача решается с помощью двух типов алгоритмов: one-step алгоритм детекции, например You Only Look Once (YOLO), и two-steps алгоритм, например Faster Region-Based Convolutional Neural Network (Faster R-CNN). Двухстадийный подход имеет ряд недостатков: долгое обучение и инференс, плохое качество детекции маленьких объектов, неустойчивость к различным размерам входных данных. Одностадийный алгоритм детекции подразумевает одновременное выполнение детекции и классификации, что обеспечивает end-to-end обучение с сохранением высоких показателей как точности, так и скорости.
Эта статья — первая часть обзора, посвященного семейству одностадийных детекторов YOLO со своей большой и интересной историей длиной в 9 лет. Мы рассмотрим основные концепции, которые заложили основу для последующих достижений, а также затронем улучшения, внесённые в каждую версию, начиная с YOLOv2 и заканчивая YOLOv9.
YOLO: You Only Look Once
Статья
Подход YOLO решает проблему долгой и сложной оптимизации с помощью обучения одной цельной модели вместо двух, как происходит в методах, использующих region proposals (будем называть их region proposals методами). Таким образом, архитектура имеет ряд преимуществ перед другими моделями детекции:
Высокая скорость инференса и обучения. Поскольку авторы рассматривают детекцию исключительно как проблему регрессии, пайплайн модели является более простым.
Умение считывать контекст. В отличие от region proposals методов, YOLO во время обучения и инференса видит всё изображение целиком, поэтому модель неявно кодирует контекстную информацию об объектах, что положительно влияет на точность предсказания.
Высокая обобщаемость. YOLO хорошо выучивает общие признаки, что обеспечивает точный инференс даже на новых доменах.
Архитектура и особенности
Как показано на изображении ниже, YOLO делит входное изображение на S ✕ S ячеек, содержащих предсказания B боксов (bounding boxes). Каждое предсказание состоит из пяти значений: координаты центра бокса по двум осям, ширина и высота бокса и оценка уверенности в том, содержит ли бокс с такими координатами объект и с какой вероятностью (от 0 до 1). Также для всех ячеек YOLO предсказывает вероятность принадлежности к каждому из C классов.
Выходом YOLO является тензор S ✕ S × (B ✕ 5 + C), который может быть обработан алгоритмом Non-Maximum Suppression (NMS) для удаления дубликатов боксов.
Архитектура содержит следующие компоненты:
24 свёрточных слоя, за которыми следуют 2 полносвязных слоя для предсказания координат боксов и их вероятностей.
В последнем слое используется линейная функция активации, а во всех остальных — Leaky ReLU.
Свёрточные слои 1 × 1 для уменьшения количества карт признаков.
Результаты
Авторы показали, что вариации модели YOLO являются лучшими среди real-time детекторов как по скорости инференса, так и по метрике качества.
Также YOLO показала лучшие результаты при тестировании моделей на новых доменах.
Недостатки
YOLOv1 допускает больше ошибок с координатами боксов по сравнению с Fast R-CNN.
Трудности в предсказании объектов с соотношением сторон, отсутствующих в обучающих данных.
Из-за наличия down-sampling слоев, модель выучивает по большей мере «грубые» признаки и лучше умеет находить большие объекты в ущерб маленьким.
YOLOv2
Статья
Архитектура YOLOv2 разработана с целью улучшения метрики Recall и минимизации количества ошибок в предсказаниях боксов по сравнению с region proposals методами. Также авторы предложили решение проблемы ограниченности классов в датасетах детекции.
Архитектура и особенности
Batch normalization на всех свёрточных слоях улучшает сходимость и действует как регуляризатор для уменьшения переобучения.
Дообучение на изображениях высокого разрешения.
Архитектура полностью свёрточная.
Использование более крупномасштабных признаков благодаря удалению некоторых pooling слоев.
-
Конкатенация признаков высокого разрешения с признаками низкого разрешения.
Обучение на картинках разного размера. Отсутствие в YOLOv2 полносвязных слоев дало возможность обучать модель на изображениях разного размера, чтобы сделать ее устойчивой к различным размерам входных данных.
Использование анкер-боксов. Для каждой ячейки задается несколько предварительно установленных «прототипных» боксов, и модель предсказывает координаты и класс для каждого из них. Размер выходного тензора сети пропорционален их количеству на ячейку.
В этой же работе авторы представили метод совместного обучения детекции и классификации на отдельных датасетах — COCO и ImageNet соответственно. В результате получилась модель YOLO9000, способная обнаружить более 9000 классов.
Результаты
Благодаря всем улучшениям YOLOv2 достигла 78,6% по метрике Average Precision (AP) на датасете PASCAL VOC 2007, по сравнению с 63,4%, полученными на YOLOv1.
Недостатки
Достаточно низкие метрики на изображениях слишком высокого или слишком низкого разрешения.
Возможность присвоить боксу только одну метку класса.
Ошибки в детекции маленьких объектов.
YOLOv3
Статья
При проектировании архитектуры YOLOv3 авторы вдохновились идеями других работ и итеративно внедрили их в свою модель детекции.
Архитектура и особенности
Предсказание bounding boxes. YOLOv3 предсказывает оценку объектности для каждого бокса с помощью логистической регрессии. Эта оценка равна единице для анкер-бокса, ближайшего к «истинному», и нулю для всех остальных.
Прогнозирование класса. Вместо softmax для классификации используется бинарная кросс-энтропия для обучения независимых логистических классификаторов. Это изменение позволяет присваивать одному боксу несколько меток класса, что может иметь место в некоторых датасетах с перекрывающимися метками. Например, один и тот же объект может быть и человеком, и мужчиной.
Новый backbone. В YOLOv3 используется Darknet-53 для извлечения признаков из изображения, состоящий из 53 свёрточных слоев.
Предсказания боксов разного масштаба. Подобно сетям Feature Pyramid Networks, YOLOv3 предсказывает три бокса в трех различных масштабах.
Spatial pyramid pooling (SPP). Авторы добавили блок SPP, который конкатенирует несколько выходов max pooling с различными размерами ядра k × k для увеличения поля восприятия.
Результаты
Модель немного уступает в метрике AP другим моделям, таким как RetinaNet, однако значение метрики mAP при 0,5 IoU (AP50) находится почти на одном уровне с RetinaNet и намного превосходит вариации SSD.
Однако YOLOv3 выигрывает другие подходы по скорости инференса при сравнимых значениях метрики AP50.
Недостатки
Модель хуже работает с объектами среднего и большого размера относительно качества детекции на небольших объектах.
YOLOv3 показывает сравнительно низкую метрику AP при значениях порога IoU > 0,5.
YOLOv4
Статья
Основной целью авторов является создание качественного real-time детектора c возможностью обучения и использования модели на одном графическом процессоре.
Архитектура и особенности
Авторы разбили существующие методы улучшения на две категории — bag-of-freebies (увеличение вычислительной стоимости обучения без влияния на время инференса, например, увеличение датасета) и bag-of-specials (незначительное увеличение стоимости обучения с заметным повышением точности, например, увеличение поля восприятия или постобработка).
Архитектура и особенности
Улучшенная архитектура с использованием bag-of-specials методов. В качестве бэкбона лучший результат показала модификация Darknet-53 с Cross-Stage Partial connections (CSPNet) и с функцией активации Mish. Также использовались spatial pyramid pooling (SPP) из YOLOv3, предсказания признаков разного масштаба, PANet вместо FPN и модуль пространственного внимания SAM. А для головы в новой версии YOLO используются такие же анкер-боксы, как и в YOLOv3.
Новые подходы к обучению с использованием bag-of-freebies методов. Авторы реализовали мозаичную аугментацию, которая объединяет четыре изображения в одно, помещая объекты вне их обычного контекста. Для регуляризации они использовали label smoothing и DropBlock, который работает как Dropout для свёрточных нейронных сетей. Для детектора добавили лосс CIoU и Cross mini-Batch Normalization (CmBN) для сбора статистик по всему батчу, а не по отдельным мини-батчам, как при обычном BatchNorm.
Self-adversarial Training (SAT). На первом backward проходе вместо настройки весов для минимизации лосса, модель изменяет исходное изображение, как бы подстраивая картинку под лосс. На следующем forward проходе это измененное изображение используется для обучения сети, что делает модель более универсальной.
Подбор гиперпараметров с помощью генетических алгоритмов. Чтобы найти оптимальные гиперпараметры, авторы используют генетические алгоритмы для первых 10% эпох и косинусный шедулер для изменения скорости обучения.
Результаты
YOLOv4 по скорости (FPS) и точности (MS COCO AP50...95 и AP50) превосходит все существующие альтернативные детекторы. Также модель может быть обучена и использована на одной GPU с 8+ ГБ оперативной памяти.
Недостатки
Не полностью эффективное использование датасета при обучении из-за использования только одной аугментации.
YOLOv5
GitHub
YOLOv5 была представлена спустя пару месяцев после публикации YOLOv4 в 2020 году. Новая версия модели содержит ряд доработок, однако архитектура YOLOv5 остается близкой к YOLOv4, а улучшение модели было достигнуто в основном благодаря обучению на PyTorch.
Архитектура и особенности
Алгоритм AutoAnchor. Этот алгоритм во время предобучения старается подобрать оптимальные анкер-боксы под датасет и гиперпараметры обучения.
В основе лежит модифицированный CSPDarknet53. Это свёрточная нейронная сеть, использующая DarkNet-53 и стратегию CSPNet для разделения потока градиента на две части, что позволяет значительно сократить объем вычислений, повысить скорость и точность вывода.
В YOLOv5 используется несколько аугментаций, таких как Mosaic, CopyPaste, RandomAffine, MixUp, HSV, Flip, а также другие аугментации из библиотеки Albumentations.
YOLOv5 имеет пять версий, отличающихся по своему размеру: YOLOv5n (nano), YOLOv5s (small), YOLOv5m (medium), YOLOv5l (large) и YOLOv5x (extra large). Например, YOLOv5n и YOLOv5s — это легковесные модели, предназначенные для мобильных устройств, а YOLOv5x оптимизирована для высокой производительности, хотя и в ущерб скорости.
YOLOv5 имеет открытый исходный код и активно поддерживается компанией Ultralytics. Она проста в использовании, обучении и развертывании. Ultralytics предлагает мобильную версию для iOS и Android и множество прочих интеграций.
Результаты
YOLOv5x достигла на датасете MS COCO 50,7% по метрике Average Precision. На графике ниже видно, что все варианты YOLOv5 работают гораздо быстрее чем EfficientDet, не уступая ей и по качеству.
Недостатки
Сложности в обнаружении объектов небольшого размера.
Scaled-YOLOv4
Статья
Через год после публикации YOLOv4 была представлена архитектура Scaled YOLOv4, целью которой была возможность использовать модель на устройствах разных размеров, обучившись всего один раз.
Архитектура и особенности
Изменение не только глубины, ширины и разрешения, но и структуры сети.
Уменьшение размеров карт признаков, входов и выходов свёрточных слоёв и анализ асимптотического поведения модели.
В основе лежат CSP-соединения (Cross Stage Partial), позволяющие масштабировать глубину, ширину, разрешение и структуру сети, сохраняя при этом скорость и точность.
Уменьшенная и расширенная архитектуры получили названия YOLOv4-tiny и YOLOv4-large соответственно.
Результаты
Сравнение моделей детекции показывает, что Scaled-YOLOv4 опережает современные модели детекции как по метрике Average Precision, так и по скорости инференса.
Недостатки
Обучение на GPU без тензорных ядер может потребовать гораздо больше времени, чем обучение предыдущих моделей семейства YOLO.
Мы рассмотрели только часть моделей YOLO, где каждая новая версия принесла важные улучшения в качестве и скорости детекции. Во второй части статьи мы продолжим обзор с модели YOLOR, в которую авторы внедрили неявные знания для генерализации сети под множество задач.
Также подписывайтесь на канал RnD CV команды SberDevices, чтобы следить за актуальными новостями в области компьютерного зрения и нашими последними разработками!
Комментарии (4)
Inkor
15.08.2024 13:32А какие еще в планах? Кроме нумерованных до 10 версии, есть еще pp-yoloe, pp-yoloe-v2, yolox, еще один интересный образчик yoloworld который детектит на базе текстовых промтов. Есть еще очень родственная rtmdet.
Dynasaur
Самая популярная сейчас YOLOv8, что же о ней даже не упомянули, раз уж 2/3 статьи посвятили описанию прочих версий?
romacckka Автор
Остальные версии рассмотрим во второй части статьи :)
digtatordigtatorov
9 и 10 версии? Версии с префиксом p2/p6? Аналог на трансформерах DETR/RT-DETR?