Кто не знает YOLOv1?

глубокое обучение

Если вы хотите объяснить видео, пожалуйста, обратите внимание на мой личный паблик WeChat: small confetti

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

YOLOv1 — это первый одноэтапный алгоритм обнаружения объектов после Faster R-CNN, создающий новый жанр алгоритмов обнаружения объектов.Начиная с YOLOv1, обнаружение объектов в основном делится на два жанра: один этап и два этапа.

На рисунке ниже координаты YOLO на протяжении всей истории алгоритмов обнаружения объектов.

задний план

Можно видеть, что YOLOv1 был предложен после Faster R-CNN, но, глядя на время, когда arXiv был впервые загружен (см. рисунок ниже), YOLOv1 и Faster R-CNN в основном были предложены одновременно, поэтому, когда автор YOLO начал писать, Fast R-CNN — это SOTA (современное), Faster R-CNN еще не родился, поэтому основным объектом сравнения авторов YOLO является Fast R-CNN. Разумеется, автор добавит результаты сравнения с Faster R-CNN для справки.

Ниже приводится краткий анализ принципа Fast R-CNN.

Быстрый R-CNN в основном состоит из четырех частей (как показано на рисунке ниже), во-первых, это общий экстрактор признаков, а затем традиционный алгоритм предложения региона. Извлеченная карта объектов помещается в соответствующую часть ROI, которая вырезается, и после объединения ROI она преобразуется в карту объектов с фиксированным разрешением и вводится в часть обнаружения объекта, чтобы вернуться к категории объекта и ограничивающей рамке для завершения. весь процесс обнаружения объекта.

Поскольку Fast R-CNN разделен на два процесса: «Извлечение функции» и «Предложение региона», это два этапа, что часто приводит к высокой точности Fast R-CNN, но скорость не может достичь производительности в реальном времени.

Предложение YOLO состоит в том, чтобы устранить недостатки Fast R-CNN и объединить два этапа в один для достижения производительности в реальном времени.

Idea

Как YOLO объединяет два этапа в один?

1) Сначала разделите входное изображение на сетку 7x7

2) Затем каждая ячейка сетки выводит два прогноза ограничивающей рамки и прогноз общего класса. Как показано ниже. Предсказание каждой ограничивающей рамки содержит пять значений C, x, y, w, h, где C представляет достоверность рамки предсказания, x, y, w, h представляют положение и размер рамки предсказания, p_ci указывает что поле предсказания принадлежит к категории вероятности ci.

Видно, что ячейка предсказывает два ящика, но при выводе может быть выведен только один результат предсказания.Как правило, в качестве результата предсказания этой ячейки берется поле предсказания с большим значением достоверности C, а категория ящика категория с наибольшим значением p_ci. 3) Поскольку в ячейке есть два поля предсказания, как рассчитать основную истину каждого поля предсказания? Во-первых, ячейке, в которой расположен ее центр, назначается поле Истина на земле.Как показано на рисунке ниже, зеленое поле Истина на земле велосипеда назначается розовой ячейке.

Во-вторых, в ячейке Ground Truth будет назначен предиктору с наибольшим IOU, как показано на рисунке ниже, два поля предсказания в розовой ячейке — это красные поля, а зеленое поле GT будет назначено широкому и короткое красное поле предсказания.

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

Network

На следующем рисунке показана упрощенная версия структуры сети.

На следующем рисунке показана подробная структура сети,

Видно, что изображение сначала проходит через 24-слойный Feature Extractor, разработанный автором для извлечения признаков, а затем проходит через два полносвязных слоя, чтобы получить окончательный вывод 7x7x30.

Следует отметить, что смысл этого вывода 7x7 заключается в том, что автор сказал разделить сетку на сетки 7x7.

Loss

Потеря в основном делится на три части: потеря местоположения, потеря уверенности и потеря категории.

В приведенной выше формуле SxS — это разрешение выходного результата и количество ячеек, B — количество блоков предсказания в ячейке, две сигмы означают сумму всех блоков, проходящих через все ячейки, лямбда — вес потерь, 1 A function — это индикаторная функция, которая принимает 1, если условие истинно, и 0, если оно ложно.

1) Потеря позиции

Прежде всего здесь нужно выяснить значение предсказанных значений x, y, w и h с учетом предиктора, а соответствующая метка обведена красным. Значения x и y представляют собой относительные координаты центральной точки кадра предсказания относительно левого верхнего угла ячейки, а их значение находится в диапазоне от 0 до 1. Значение w и h — это отношение ширины поля предсказания к ширине изображения и отношение высоты поля предсказания к высоте изображения, и его значение также находится в диапазоне от 0 до 1. То есть x, y, w и h, предсказанные предиктором, являются нормализованными относительными значениями.На следующем рисунке приведен пример.Красный прямоугольник – это блок прогноза зеленого блока GT, затем Прогноз x=X/64, y=Y/64, w=W/448, h=H/448. Метки, соответствующие предсказанным полям x, y, w и h, также вычисляются таким же образом.

2) Потеря доверия

Ci предсказывает Pr(object)*IOU, что всесторонне отражает вероятность того, что блок предсказания имеет объект, а также размер долгового обязательства блока предсказания и истинность. Таким образом, метод расчета метки C_i ячейки:

3) Потеря категории

Прогнозируемая p_ci — это условная вероятность, то есть вероятность Class_i, когда объект известен.Если категория GT равна ci, метка p_ci равна 1, а метка других p_ci равна 0.

Training

В обучении модели YOLO используются следующие техники: 1) Увеличение данных Включая случайное масштабирование, случайное кадрирование, случайную настройку экспозиции и насыщенности. 2) отсев Подсчитано, что это полностью подключенный слой с использованием отсева, а коэффициент отсева составляет 0,5. 3) Оптимизатор Используется оптимизатор импульса, а бета гиперпараметра принимается равной 0,9. 4) распад веса Распад веса используется с коэффициентом 0,0005. 5) Размер партии 64 6) скорость обучения

Всего обучается 136 эпох, первая эпоха, скорость обучения неуклонно увеличивается с 0,001 до 0,01, затем скорость обучения сохраняется на уровне 0,01 в течение 75 эпох, затем скорость обучения снижается до 0,001, 30 эпох, а затем скорость обучения снижена до 0,0001. Тренировка на 30 эпох.

Experiments

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

Error Analysis

Автор также провел анализ ошибок на YOLO и сравнил источники ошибок Fast R-CNN и YOLO. Во-первых, автор делит результаты распознавания на пять категорий:

  1. Правильная классификация: класс правильный, IOU>0,5
  2. Неверная позиция: класс правильный, 0,1
  3. Ошибка аппроксимации: класс определен как приблизительный класс, IOU>0,1
  4. Другие ошибки: ошибка категории, IOU>0,1
  5. Фоновая ошибка: IOU

Состав ошибок Fast R-CNN и YOLO следующий:

Видно, что в Fast R-CNN преобладают фоновые ошибки, а в YOLO преобладают ошибки положения.

в заключении

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