Что такое архитектура YOLO и как она работает? Давайте поговорим о версиях алгоритма YOLO (до YOLO v8) и о том, как их использовать для обучения собственных моделей обнаружения объектов.

Написано Rohit Kundu и первоначально опубликовано в блоге V7 (YOLO: объяснение алгоритма обнаружения объектов [+Примеры])

Обнаружение объектов — популярная задача компьютерного зрения.

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

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

В этой статье мы обсудим, что выделяет YOLO v7 и чем он отличается от других алгоритмов обнаружения объектов.

Давайте катиться!

💡Мы всегда ищем талантливых технических писателей. Хотели бы вы внести свой вклад в блог V7? Отправьте свое портфолио на [email protected]

Что такое обнаружение объекта?

Обнаружение объектов — это задача компьютерного зрения, которая включает в себя идентификацию и определение местоположения объектов на изображениях или видео. Это важная часть многих приложений, таких как наблюдение, беспилотные автомобили или робототехника. Алгоритмы обнаружения объектов можно разделить на две основные категории: однократные детекторы и двухступенчатые детекторы.

Одной из первых успешных попыток решить проблему обнаружения объектов с помощью глубокого обучения была модель R-CNN (регионы с функциями CNN), разработанная Россом Гиршиком и его командой из Microsoft Research в 2014 году. В этой модели использовалась комбинация алгоритмов предложения регионов. и сверточные нейронные сети (CNN) для обнаружения и локализации объектов на изображениях.

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

Обнаружение одиночных объектов

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

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

YOLO — это однократный детектор, в котором для обработки изображения используется полностью сверточная нейронная сеть (CNN). Мы углубимся в модель YOLO в следующем разделе.

Двойное обнаружение объекта

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

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

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

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

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

Двумя наиболее распространенными метриками оценки являются метрики Intersection over Union (IoU) и Average Precision (AP).

Пересечение через союз (IoU)

Пересечение по союзу — популярная метрика для измерения точности локализации и расчета ошибок локализации в моделях обнаружения объектов.

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

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

💡Совет для профессионалов. Хотите начать комментировать с помощью ограничительных рамок? Ознакомьтесь с 9 основными функциями инструмента аннотации ограничивающей рамки.

Средняя точность (AP)

Средняя точность (AP) рассчитывается как площадь под кривой точности и полноты для набора прогнозов.

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

Отзыв и точность предлагают компромисс, который графически представлен в виде кривой путем изменения порога классификации. Площадь под этой кривой зависимости точности от полноты дает нам среднюю точность для каждого класса модели. Среднее значение этого значения, взятое по всем классам, называется средней средней точностью (mAP).

💡 Подробнее: Объяснение средней средней точности (mAP): все, что вам нужно знать

При обнаружении объектов точность и полнота не используются для прогнозирования класса. Вместо этого они служат прогнозами граничных рамок для измерения эффективности решения. Значение IoU > 0,5. считается положительным прогнозом, тогда как значение IoU ‹ 0,5 является отрицательным прогнозом.

Что такое ЙОЛО?

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

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

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

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

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

Как работает YOLO? ЙОЛО Архитектура

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

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

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

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

Одним из ключевых методов, используемых в моделях YOLO, является немаксимальное подавление (NMS). NMS — это этап постобработки, который используется для повышения точности и эффективности обнаружения объектов. При обнаружении объектов обычно создается несколько ограничивающих рамок для одного объекта на изображении. Эти ограничивающие рамки могут перекрываться или располагаться в разных местах, но все они представляют один и тот же объект. NMS используется для выявления и удаления избыточных или неправильных ограничивающих рамок, а также для вывода одной ограничивающей рамки для каждого объекта на изображении.

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

💡 Совет для профессионалов: взгляните на этот список 65+ лучших бесплатных наборов данных для машинного обучения, чтобы найти релевантные данные для обучения ваших моделей.

ЙОЛО v2

YOLO v2, также известный как YOLO9000, был представлен в 2016 году как улучшение оригинального алгоритма YOLO. Он был разработан, чтобы быть быстрее и точнее, чем YOLO, и иметь возможность обнаруживать более широкий спектр классов объектов. В этой обновленной версии также используется другая магистраль CNN под названием Darknet-19, вариант архитектуры VGGNet с простыми слоями прогрессивной свертки и объединения.

Одним из основных улучшений в YOLO v2 является использование якорных ящиков. Якорные рамки представляют собой набор предопределенных ограничивающих рамок с различными соотношениями сторон и масштабами. При прогнозировании ограничивающих рамок YOLO v2 использует комбинацию опорных рамок и предсказанных смещений для определения конечной ограничивающей рамки. Это позволяет алгоритму обрабатывать более широкий диапазон размеров объектов и соотношений сторон.

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

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

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

ЙОЛО v3

YOLO v3 — третья версия алгоритма обнаружения объектов YOLO. Он был представлен в 2018 году как улучшение YOLO v2 с целью повышения точности и скорости алгоритма.

Одним из основных улучшений в YOLO v3 является использование новой архитектуры CNN под названием Darknet-53. Darknet-53 представляет собой вариант архитектуры ResNet и разработан специально для задач обнаружения объектов. Он имеет 53 сверточных слоя и способен достигать самых современных результатов на различных тестах обнаружения объектов.

Еще одно улучшение в YOLO v3 — это блоки привязки с различными масштабами и соотношениями сторон. В YOLO v2 все якорные блоки были одинакового размера, что ограничивало возможности алгоритма по обнаружению объектов разных размеров и форм. В YOLO v3 рамки привязки масштабируются, а соотношения сторон варьируются, чтобы лучше соответствовать размеру и форме обнаруживаемых объектов.

YOLO v3 также представляет концепцию «сетей функциональных пирамид» (FPN). FPN — это архитектура CNN, используемая для обнаружения объектов в разных масштабах. Они строят пирамиду из карт объектов, причем каждый уровень пирамиды используется для обнаружения объектов разного масштаба. Это помогает повысить эффективность обнаружения небольших объектов, поскольку модель может видеть объекты в разных масштабах.

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

ЙОЛО v4

Примечание. Джозеф Редмонд, первоначальный создатель YOLO, покинул сообщество ИИ за несколько лет до этого, поэтому YOLOv4 и другие прошлые версии не являются его официальной работой. Некоторые из них поддерживаются соавторами, но ни один из выпусков, предшествующих YOLOv3, не считается «официальным» YOLO.

YOLO v4 — четвертая версия алгоритма обнаружения объектов YOLO, представленная в 2020 году Бочковским и др. как улучшение по сравнению с YOLO v3.

Основным улучшением YOLO v4 по сравнению с YOLO v3 является использование новой архитектуры CNN под названием CSPNet (показано ниже). CSPNet расшифровывается как Cross Stage Partial Network и представляет собой вариант архитектуры ResNet, разработанный специально для задач обнаружения объектов. Он имеет относительно неглубокую структуру, всего 54 сверточных слоя. Тем не менее, он может достигать самых современных результатов на различных тестах обнаружения объектов.

И YOLO v3, и YOLO v4 используют поля привязки с разными масштабами и соотношениями сторон, чтобы лучше соответствовать размеру и форме обнаруженных объектов. YOLO v4 представляет новый метод создания полей привязки, который называется «кластеризация k-средних». Он включает в себя использование алгоритма кластеризации для группировки ограничивающих рамок наземной истины в кластеры, а затем использование центроидов кластеров в качестве анкерных рамок. Это позволяет более точно совмещать якорные поля с размером и формой обнаруженных объектов.

Хотя и YOLO v3, и YOLO v4 используют одинаковую функцию потерь для обучения модели, YOLO v4 вводит новый термин под названием «потеря GHM». Это вариант функции потери фокуса, предназначенный для повышения производительности модели на несбалансированных наборах данных. YOLO v4 также улучшает архитектуру FPN, используемую в YOLO v3.

ЙОЛО v5

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

В отличие от YOLO, YOLO v5 использует более сложную архитектуру под названием EfficientDet (архитектура показана ниже), основанную на сетевой архитектуре EfficientNet. Использование более сложной архитектуры в YOLO v5 позволяет добиться более высокой точности и лучшего обобщения для более широкого диапазона категорий объектов.

Еще одно различие между YOLO и YOLO v5 — это данные для обучения, используемые для изучения модели обнаружения объектов. YOLO обучался на наборе данных PASCAL VOC, который состоит из 20 категорий объектов. YOLO v5, с другой стороны, был обучен на более крупном и разнообразном наборе данных под названием D5, который включает в общей сложности 600 категорий объектов.

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

YOLO v5 также представляет концепцию «объединения пространственных пирамид» (SPP), тип слоя объединения, используемый для уменьшения пространственного разрешения карт объектов. SPP используется для повышения эффективности обнаружения небольших объектов, поскольку позволяет модели видеть объекты в разных масштабах. YOLO v4 также использует SPP, но YOLO v5 включает в себя несколько улучшений архитектуры SPP, которые позволяют достигать лучших результатов.

YOLO v4 и YOLO v5 используют аналогичную функцию потерь для обучения модели. Однако YOLO v5 вводит новый термин под названием «потери CIoU», который представляет собой вариант функции потерь IOU, предназначенный для повышения производительности модели на несбалансированных наборах данных.

ЙОЛО v6

YOLO v6 был предложен в 2022 году Li et al. как улучшение по сравнению с предыдущими версиями. Одним из основных различий между YOLO v5 и YOLO v6 является используемая архитектура CNN. YOLO v6 использует вариант архитектуры EfficientNet под названием EfficientNet-L2. Это более эффективная архитектура, чем EfficientDet, используемая в YOLO v5, с меньшим количеством параметров и более высокой вычислительной эффективностью. Он может достигать самых современных результатов на различных тестах обнаружения объектов. Каркас модели YOLO v6 показан ниже.

YOLO v6 также представляет новый метод создания блоков привязки, называемый «плотными блоками привязки».

Результаты, полученные YOLO v6 по сравнению с другими современными методами, показаны ниже.

Что нового в YOLO v7?

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

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

Вот YOLO v7 в действии:

Ключевым улучшением в YOLO v7 является использование новой функции потерь, называемой «фокальной потерей». В предыдущих версиях YOLO использовалась стандартная функция кросс-энтропийной потери, которая, как известно, менее эффективна при обнаружении небольших объектов. Фокусная потеря решает эту проблему, занижая вес потери для хорошо классифицированных примеров и сосредотачиваясь на сложных примерах — объектах, которые трудно обнаружить.

YOLO v7 также имеет более высокое разрешение, чем предыдущие версии. Он обрабатывает изображения с разрешением 608 на 608 пикселей, что выше, чем разрешение 416 на 416, используемое в YOLO v3. Это более высокое разрешение позволяет YOLO v7 обнаруживать более мелкие объекты и в целом иметь более высокую точность.

Одним из главных преимуществ YOLO v7 является его скорость. Он может обрабатывать изображения со скоростью 155 кадров в секунду, что намного быстрее, чем другие современные алгоритмы обнаружения объектов. Даже исходная базовая модель YOLO могла обрабатывать с максимальной скоростью 45 кадров в секунду. Это делает его подходящим для чувствительных приложений реального времени, таких как наблюдение и беспилотные автомобили, где решающее значение имеет более высокая скорость обработки.

Что касается точности, YOLO v7 работает хорошо по сравнению с другими алгоритмами обнаружения объектов. Он достигает средней точности 37,2% при пороге IoU (пересечение над объединением) 0,5 в популярном наборе данных COCO, что сопоставимо с другими современными алгоритмами обнаружения объектов. Количественное сравнение производительности показано ниже.

Однако следует отметить, что YOLO v7 менее точен, чем двухэтапные детекторы, такие как Faster R-CNN и Mask R-CNN, которые, как правило, обеспечивают более высокую среднюю точность в наборе данных COCO, но также требуют более длительного времени вывода.

Ограничения YOLO v7

YOLO v7 — мощный и эффективный алгоритм обнаружения объектов, но у него есть несколько ограничений.

  1. YOLO v7, как и многие алгоритмы обнаружения объектов, с трудом обнаруживает мелкие объекты. Он может не точно обнаруживать объекты в многолюдных сценах или когда объекты находятся далеко от камеры.
  2. YOLO v7 также не идеален в обнаружении объектов в разных масштабах. Это может затруднить обнаружение объектов, которые либо очень большие, либо очень маленькие по сравнению с другими объектами в сцене.
  3. YOLO v7 может быть чувствителен к изменениям освещения или других условий окружающей среды, поэтому его может быть неудобно использовать в реальных приложениях, где условия освещения могут меняться.
  4. YOLO v7 может требовать значительных вычислительных ресурсов, что может затруднить работу в режиме реального времени на устройствах с ограниченными ресурсами, таких как смартфоны или другие периферийные устройства.

ЙОЛО v8

На момент написания этой статьи выпуск YOLO v8 был подтвержден Ultralytics, что обещает новые функции и улучшенную производительность по сравнению с предшественниками. YOLO v8 может похвастаться новым API, который значительно упростит обучение и вывод как на устройствах с процессором, так и на графическом процессоре, а платформа будет поддерживать предыдущие версии YOLO. Разработчики все еще работают над выпуском научной статьи, которая будет включать подробное описание архитектуры и производительности модели.

Основные выводы

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

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

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