Что такое YOLOv3?

YOLOv3 (You Only Look Once, Version 3) — это алгоритм обнаружения объектов в реальном времени, который идентифицирует определенные объекты в видео, прямых трансляциях или изображениях. YOLO использует функции, изученные глубокой сверточной нейронной сетью, для обнаружения объекта. Версии 1–3 YOLO были созданы Джозефом Редмоном и Али Фархади. Первая версия YOLO была создана в 2016 году, а версия 3, которая широко обсуждается в этой статье, была создана двумя годами позже, в 2018 году. YOLO реализован с использованием библиотек глубокого обучения Keras или OpenCV.

Кратко о том, как работает YOLOv3?

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

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

Давайте разберемся с архитектурой YOLOv3

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

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

Другими сопоставимыми алгоритмами, которые могут выполнять ту же задачу, являются R-CNN (региональные сверточные нейронные сети, созданные в 2015 г.) и Fast R-CNN (улучшение R-CNN, разработанное в 2017 г.) и Mask R-CNN.

Однако, в отличие от таких систем, как R-CNN и Fast R-CNN, YOLO обучен выполнять классификацию и регрессию ограничивающей рамки одновременно.

Чем он лучше YOLOv2?

YOLOv2 использовал Darknet-19 в качестве экстрактора основных функций, а YOLOv3 теперь использует Darknet-53. Darknet-53 — это основа, созданная создателями YOLO Джозефом Редмоном и Али Фархади.

Darknet-53 имеет 53 сверточных слоя вместо предыдущих 19, что делает его более мощным, чем Darknet-19, и более эффективным, чем конкурирующие магистрали (ResNet-101 или ResNet-152).

Сравнение позвоночников. Точность, миллиарды операций (Ops), миллиарды операций с плавающей запятой в секунду (BFLOP/s) и кадров в секунду (FPS) для различных сетей

YOLOv3 является быстрым и точным с точки зрения значений средней точности (mAP) и пересечения по объединению (IOU). Он работает значительно быстрее, чем другие методы обнаружения с сопоставимой производительностью (отсюда и название — Вы смотрите только один раз).

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

Производительность YOLOv3

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

- Hardhats - Vests - Marks - Boots

Работа с BBox

Первый шаг к пониманию YOLO — это то, как он кодирует свой вывод. Входное изображение разделено на сетку S x S ячеек. Говорят, что для каждого объекта, присутствующего на изображении, одна ячейка сетки «отвечает» за его предсказание. Это ячейка, в которую попадает центр объекта. Каждая ячейка сетки предсказывает ограничивающие прямоугольники B, а также вероятности класса C. Предсказание ограничительной рамки имеет 5 компонентов: (x, y, w, h, достоверность). Координаты (x, y) представляют собой центр прямоугольника относительно расположения ячейки сетки (помните, что если центр прямоугольника не попадает внутрь ячейки сетки, то эта ячейка за него не отвечает). Эти координаты нормализованы, чтобы попасть в диапазон от 0 до 1. Размеры блока (w, h) также нормализованы до [0, 1] относительно размера изображения. Давайте посмотрим на пример:

Также необходимо предсказать вероятности класса, Pr(Class(i) | Object). Эта вероятность обусловлена ​​ячейкой сетки, содержащей один объект (см. это, если вы не знаете, что означает условная вероятность). На практике это означает, что если в ячейке сетки нет объекта, функция потерь не будет наказывать его за неправильное предсказание класса, как мы увидим позже. Сеть предсказывает только один набор вероятностей класса на ячейку, независимо от количества ящиков B. Таким образом, суммарные вероятности класса S x S x C

Добавляя предсказания класса к выходному вектору, мы получаем на выходе тензор S x S x (B * 5 +C).

Как это будет работать?

  • Точность для небольших объектов

Точность для мелких объектов в YOLOv2 была несравнима с другими алгоритмами из-за того, насколько неточным был YOLO при обнаружении мелких объектов. С AP 5,0 он бледнел по сравнению с другими алгоритмами, такими как RetinaNet (21,8) или SSD513 (10,2), у которых была вторая самая низкая AP для небольших объектов.

На приведенной выше диаграмме показана средняя точность (AP) обнаружения маленьких, средних и больших изображений с различными алгоритмами и магистральными сетями. Чем выше AP, тем точнее эта переменная.

Новый YOLOv3 использует независимые логистические классификаторы и бинарную кросс-энтропийную потерю для предсказания классов во время обучения. Эти изменения позволяют использовать сложные наборы данных, такие как набор данных Microsoft Open Images (OID) для обучения модели YOLOv3. OID содержит десятки перекрывающихся меток, таких как «человек» и «человек» для изображений в наборе данных.

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

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

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

  • Поля привязки

Хотя якорные или ограничивающие рамки немного обсуждались в начале этой статьи, есть более подробная информация об их реализации и использовании с YOLOv3. Детекторы объектов, использующие YOLOv3, обычно предсказывают преобразования пространства журнала, которые представляют собой смещения к предопределенным ограничивающим рамкам «по умолчанию». Эти конкретные ограничивающие рамки называются якорями. Преобразования позже применяются к полям привязки для получения прогноза. YOLOv3, в частности, имеет три привязки. Это приводит к предсказанию трех ограничивающих рамок на ячейку (ячейка также называется нейроном в более технических терминах).

  • Немаксимальное подавление

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

Изображения

Видео

использованная литература

  1. https://arxiv.org/abs/1804.02767
  2. https://viso.ai/deep-learning/yolov3-overview/
  3. https://pjreddie.com/media/files/papers/YOLOv3.pdf
  4. https://paperswithcode.com/method/yolov3

Авторы