[обнаружение цели (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 в качестве примера, чтобы вывести тензор, как показано на следующем рисунке:
-
Каждая ограничивающая рамка содержит 5 предсказанных значений: x, y, w, h и достоверность. x и y представляют относительное положение точки координат центра кадра в ячейке сетки, то есть
x,y∈[0, 1]
, w и h представляют отношение ширины и высоты блока ко всему изображению, а такжеw,h∈[0, 1]
, достоверность представляет собой значение IOU предсказанного ящика и реального ящика, в частности, его можно понимать как доверие=Pr(object)*, где 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).
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.
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 и прогнозируемых значений, а не компенсация регрессии, увеличивает сложность обучения.
- БН не используется.