[Обнаружение цели (5)] YOLOv1 - открытие главы по одноэтапному обнаружению цели

глубокое обучение компьютерное зрение
[Обнаружение цели (5)] YOLOv1 - открытие главы по одноэтапному обнаружению цели

[обнаружение цели (1)] Подробное объяснение RCNN - новаторская работа по обнаружению целей с помощью глубокого обучения
[Обнаружение цели (2)] SPP Net - пусть расчет свертки делится
[Обнаружение цели (3)] Быстрый RCNN — пусть модель RCNN будет обучена от начала до конца
[обнаружение цели (4)] Faster RCNN - сеть RPN вместо выборочного поиска
[Обнаружение цели (5)] YOLOv1 - открытие главы по одноэтапному обнаружению цели
[Обнаружение цели (6)] YOLOv2 - Представляем якорь, лучше, быстрее, сильнее
[Обнаружение цели (7)] YOLOv3 - Комплексное улучшение точности
[Обнаружение цели (8)] В этой статье подробно рассматривается функция потери поля регрессии обнаружения цели - принципы IoU, GIoU, DIoU, CIoU и код Python.
[Обнаружение цели (9)] Подробное объяснение FPN - многомасштабное слияние функций через сеть функциональных пирамид
[Обнаружение цели (10)] Подробное объяснение RetinaNet — функция «Потеря очага» доводит одноэтапный алгоритм до пика
[Обнаружение цели (11)] CenterNet — без привязки, без NMS
[Обнаружение цели (12)] FCOS — использование идеи сегментации экземпляра для обнаружения цели Anchor Free

1. Мотивация: превратить двухэтапную сеть обнаружения объектов в одноэтапную.

С точки зрения истории развития обнаружения целей, RCNN создал прецедент для обнаружения целей с глубоким обучением, а затем SPP Net, Fast RCNN и Faster RCNN, Все эти четыре алгоритма требуют предложения региона, а первые три выбираются путем выборочного Этот метод генерирует предложение региона почти 2000. Более быстрая RCNN генерирует область кадра-кандидата через сеть RPN, но без исключения область кадра-кандидата должна быть сгенерирована первой, а затем область кадра-кандидата классифицируется и корректируется с помощью регрессии, поэтому мы унифицировали серию алгоритмов RCNN, которая называется двухэтапным алгоритмом обнаружения объектов.

Идея YOLO заключается в том, что, поскольку сеть RPN может генерировать несколько предлагаемых блоков, она также классифицирует эти блоки (две классификации, является ли это целью) и выполняет регрессионную коррекцию на этих блоках, почему бы не позволить этой сети напрямую предсказывать категория и поле Что насчет местоположения? YOLO объединяет два этапа вместе и может выполнить определение целевой категории и задачу регрессии блока bbox за один этап, поэтому мы в совокупности называем серию алгоритмов YOLO одноэтапным алгоритмом. Эта статья в основном подробно знакомит с алгоритмом YOLOv1.

2. Принцип YOLOv1

2.1 Идея YOLO

  • Разделить изображение на равные частиS*SЯчейка сетки, если центр объекта попадает в эту сетку, то эта сетка отвечает за предсказание этого объекта. Например, центр собаки на рисунке ниже попадает в сетку пятой строки и второго столбца, тогда эта сетка отвечает за предсказание классификации и информации о ящике собаки.
  • Каждая сетка должна предсказывать B ограничивающих рамок (в документе S = 2, B = 2).В дополнение к предсказанию положения каждая ограничивающая рамка также предсказывает значение достоверности. В дополнение к этому каждая сеть также прогнозирует баллы для категорий C (для VOC C = 20). Выходной размерS * S * (B * (4 + 1) + C), возьмите S=7, B=2, C=20 в качестве примера, чтобы вывести тензор, как показано на следующем рисунке:

image.png

  • Каждая ограничивающая рамка содержит 5 предсказанных значений: x, y, w, h и достоверность. x и y представляют относительное положение точки координат центра кадра в ячейке сетки, то естьx,y∈[0, 1], w и h представляют отношение ширины и высоты блока ко всему изображению, а такжеw,h∈[0, 1], достоверность представляет собой значение IOU предсказанного ящика и реального ящика, в частности, его можно понимать как доверие=Pr(object)*IOUpredtruthIOU^{truth}_{pred}, где Pr(object) равен 1, когда ячейка сетки является целевым центром, и Pr(object) равен 0, когда ячейка сетки не содержит целевого центра. Детали приведенных выше выражений в некоторых статьях перехвачены, как показано на рисунке ниже.

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

2.2 Структура сети YOLOv1

Вдохновение для дизайна всей сетевой архитектуры исходит от GoogleNet, заменив начальный модуль на1*1и3*3операция свертки. Как показано на рисунке ниже, введите448*448*3, после в общей сложности 24 сверточных слоев размерность7*7*1024Карта объектов , а затем сгладить операцию сглаживания, чтобы получить1*50176Одномерный вектор , затем соедините полностью связанный слой 4096, затем полносвязный слой 1470, а затем выполните операцию изменения формы для вывода7*7*30результат (5 + 5 + 20).

image.png

2.3 Дизайн функции потерь и потерь

Потеря в основном состоит из трех частей: потеря bbox, потеря уверенности и потеря классификации класса.

  • потеря bbox: экспоненциальная функция перед функцией регрессии1Указывает, отвечает ли j-я спрогнозированная ограничительная рамка i-й ячейки сетки за прогнозирование цели (то есть j-я спрогнозированная ограничительная рамка имеет наибольшую IOU с GT Box). Идея расчета потерь очень проста.Рассчитайте расстояние L2 между центральной точкой и шириной и высотой и GT соответственно.Поскольку потери большой цели могут быть намного больше, чем у маленькой цели, добавляется корневой знак, в противном случае потеря будет крайне смещена в сторону крупной цели.

  • Потеря уверенности: она состоит из двух частей. Первая часть - это когда j-я предсказанная ограничивающая рамка i-й ячейки сетки отвечает за предсказание цели. Значение достоверности GT - это значение IOU предсказанной коробки и реальной коробки , Вторая часть, когда значение достоверности GT должно быть равно 0, когда в сетке нет (ответственных) целей.

  • Потеря классификации: функция индикатора указывает, должна ли i-я ячейка сетки отвечать за предсказание цели (то есть находится ли центр цели в i-й ячейке сетки), и вычисляет потерю категории.

  • Коэффициент баланса: поскольку большинство ячеек сетки на изображении не отвечают за прогнозирование цели, то есть элементы в проигрыше в большинстве случаев находятся в состоянии no_object, нам нужно увеличить вес регрессионного проигрыша bbox, уменьшите потерю достоверности без цели, добавьте λcoordи λnoobjДва параметра, λ в статьеcoord=5, λnoobj=0,5.

image.png

3. Оценка эффекта и анализ преимуществ и недостатков YOLO

3.1 Точность и скорость YOLO

Мы ориентируемся на сравнение в красной рамке:

  • И YOLO, и Faster RCNN используют основу VGG16, которая в 3 раза быстрее, но точность mAP снижается на 7 баллов.
  • Если YOLO создаст сеть обнаружения в реальном времени, скорость может достигать 45 кадров в секунду, и обнаружение в реальном времени уже может быть достигнуто, но точность mAP снижается почти на 10 пунктов.

3.2 Анализ преимуществ и недостатков YOLO

  • Преимущества YOLO:

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

    • Невозможно обнаружить перекрывающиеся цели: YOLO выполняет операции построения сетки, и каждая ячейка сетки может предсказывать только одну категорию.Поэтому при перекрытии целей, особенно перекрывающихся малых целей, эффект обнаружения будет плохим, например, стаи птиц.
    • Эффект обнаружения небольших объектов не очень хорош: по двум причинам: во-первых, конструкция функции потерь относительно грубая, хотя метод радикального знака используется для подавления эффекта подавления больших объектов, эффект все еще не очень хороший; другой заключается в том, что после многократного понижения разрешения разрешение конечного признака относительно низкое, то есть получается грубый признак, который может повлиять на позиционирование объекта.
    • YOLO прогнозирует bbox на основе обучающих данных, но когда объекты в тестовых данных имеют соотношение сторон, которого нет у объектов в обучающих данных, способность YOLO к обобщению низкая.
    • Прямая регрессия GT и прогнозируемых значений, а не компенсация регрессии, увеличивает сложность обучения.
    • БН не используется.

Reference:

  1. git TH hub.GitHub.IO/2019/03/17/…
  2. АР Вест V.org/PDF/1506.02…