[Обнаружение цели (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. Introduction
YOLOv2 — алгоритм второго поколения серии YOLO, оригинальное название статьи —«YOLO9000: лучше, быстрее, сильнее», автор сделал множество улучшений на основе YOLOv1, а также внедрил механизм привязки, предложенный Faster RCNN, получивший награду CVPR 2017 Best Paper Honorable Mention. По сравнению с YOLOv1, в YOLOv2 было внесено множество улучшений, что также значительно улучшило mAP YOLOv2, а скорость YOLOv2 по-прежнему очень высока, сохраняя свои преимущества в качестве одноэтапного метода, YOLOv2 и Faster R-CNN, SSD, и т.д. Сравнение моделей показано на рисунке ниже.
2. Принцип и стратегия улучшения YOLOv2
Эта статья основана на YOLOv1 для объяснения стратегии улучшения YOLOv2.Если вы не знакомы с алгоритмом YOLOv1, вы можете прочитатьПредыдущая статьяТехнический блог YOLOv1. Автор проделал большую работу по улучшению и оптимизации от оптимизации YOLO до YOLOv2, и эффект оптимизации также очень значителен.На VOC2007 уровень точности mAP напрямую оптимизирован с 63,4 до 78,6%.
2.1 Batch Normalization
В 2017 году BN доказал свою роль и эффективность.Автор также использовал слой BN после сверточного слоя во втором поколении YOLO.Слой BN упрощает обучение сети и имеет эффект регуляризации для предотвращения Overfitting с слоями BN улучшает mAP за счет 2 процентных пункта. Кроме того, автор также упомянул, что после использования слоя BN слой отсева больше нельзя использовать для предотвращения переобучения.
2.2 High Resolution Classifier
- Используется в YOLOv1
224*224
Изображение используется в качестве входных данных сети для предварительного обучения магистрали в ImageNet, и сеть должна изучить процесс обнаружения и адаптироваться к более высокому разрешению во время формального обучения. Автор использует большее разрешение в YOLOv2448*448
Продолжайте настраивать десять эпох, чтобы сеть привыкла к большому разрешению. - В то же время автор удалил слой пула в сети, сделав карту выходных объектов сети более плотной (
7*7
-->13*13
). - Классификатор высокого разрешения может улучшить mAP почти на 4 процентных пункта.
2.3 Anchor
2.3.1 Введение анкерного механизма
В YOLOv1 входное изображение, наконец, делится наСетка с 2 ограничивающими прямоугольниками, рассчитанными на ячейку. YOLOv1, наконец, использует полносвязный слой для прямого предсказания ограничивающей рамки, где ширина и высота ограничивающей рамки зависят от размера всего изображения, а также потому, что в нем есть объекты разных масштабов и соотношений сторон (масштабов и соотношений). каждая картинка, YOLOv1 трудно научиться адаптироваться к формам разных объектов во время обучения, что также приводит к плохой работе YOLOv1 в точной локализации. Автор использует механизм привязки Faster RCNN для создания нескольких привязок для каждой точки карты объектов, выводимой сетью:
- якорь — это виртуальная ограничивающая рамка.
- Истинное предсказание bbox генерируется привязкой.
В YOLOv1 окончательная ограничивающая рамка представляет собой непосредственно подобранное прогнозируемое значение и значение GT, в то время как Faster RCNN представляет собой регрессию смещения, то есть отклонение между подобранным прогнозируемым значением и предыдущим полем, а использование предыдущего поля делает модель легче учиться. Таким образом, YOLOv2 удаляет полностью связанный слой в YOLOv1 и использует блоки свертки и привязки для прогнозирования ограничивающих прямоугольников. Чтобы сделать карту объектов, используемую для обнаружения, более высокого разрешения, один из слоев пула удален. В модели обнаружения YOLOv2 не используетизображение в качестве входных данных, вместо этого используйте
размер. Поскольку общий размер шага понижающей дискретизации модели YOLOv2 составляет
, за
Размер изображения, окончательный размер карты объектов
, размерность нечетная, поэтому карта объектов имеет ровно одно центральное положение.
Для YOLOv1 каждая ячейка предсказывает 2 поля, каждое из которых содержит 5 значений:, первые 4 значения — это положение и размер ограничивающей рамки, а последнее значение — оценка достоверности (оценки достоверности, включающие две части: вероятность содержания объекта и долговая расписка предсказанной рамки и наземная истина) . Однако каждая ячейка только предсказывает набор значений вероятности классификации (прогнозы класса, которые на самом деле являются условными значениями вероятности при доверии), которые разделяют 2 блока. После того, как YOLOv2 использует поля привязки, каждое поле привязки в каждой позиции отдельно предсказывает набор значений вероятности классификации.
После использования блоков привязки mAP YOLOv2 немного уменьшился (я думаю, причина снижения здесь в том, что, хотя YOLOv2 использует блоки привязки, он по-прежнему использует метод обучения YOLOv1). YOLOv1 может предсказать только 98 ограничивающих рамок (), в то время как YOLOv2 может предсказать тысячи ограничивающих рамок после использования анкерных рамок ( )
). Таким образом, после использования якорных блоков скорость отзыва YOLOv2 значительно улучшилась с 81% до 88%.
2.3.2 Кластеризация привязок
В Faster RCNN каждая точка карты объектов генерирует якоря 9. Количество и типы созданных здесь якорей основаны на инженерном опыте, поэтому автор пытается решить, как получить лучший якорь с новой сетью? Здесь мы предлагаем использовать алгоритм k-средних для кластеризации GT Box, чтобы получить лучшие гиперпараметры привязки. Как показано на рисунке ниже, авторский экспериментальный кластерный анализ влияния выбора значения k на конечный результат (точность баланса и скорость расчета, в работе выбрано k=5):
Автор определяет расстояние кластеризации k-средних как:
2.3.3 Anchor, True BBoxes & Predicted BBoxes
В этой части в основном объясняется, как механизм Anchor сочетается с GT Box и блоком предсказаний.
Первая часть сначала объясняет значение Anchor, сначала посмотрите на выходные данные группы кластеров привязки, например:
Выведите 5 привязок, каждый набор привязок содержит два числа, все в диапазоне [0, 13] (размер выходной карты объектов равен13*13
), где ширина и высота области изображения, соответствующей реальному якорю, сопоставляются с интервалом карты признаков, то есть каждая ширина и высота сначала делятся на ширину и высоту исходного изображения, а затем умножаются на 13.
Затем во второй части рассматривается, как обрабатываются GT Boxes:
- Original bbox: [xo, yo, wo, ho] ∈ [0,W |TH]
- Normalize in 0~1: [xr, yr, wr, hr] = [xo / W, yo / H, wo / W, ho/H] ∈ [0, 1]
- Transfer to feature map size: [x, y, w, h] = [xr, yr, wr, hr] * (13 | 13)
- Transfer to 0~1 corresponding to each grid cell:
В приведенной выше формуле i и j соответствуют идентификатору ячейки сетки, то естьi=floor(x), j=floor(y)
, относительное смещение координаты центра таблицы bbox относительно ячейки сетки, которой он принадлежит, поскольку центр GT bbox должен находиться внутри этой ячейки сетки, поэтомуi, j ∈ [0, 1]
.
В последней части рассматривается, как используются якоря, GT Box и Predicted BBox:Сначала вспомним, как регрессирует смещение в Faster RCNN:
Подумайте об этом, нет правасделать какие-либо ограничения, скажем здесь, то координаты центральной точки будут прямо смещены на 3, вполне вероятно, что предсказанный центр bbox больше не находится в ячейке сетки. Чтобы исправить эту ситуацию, необходимо ограничить смещение.YOLOv2 улучшает регрессию смещения исходного якоря, подгоняя относительное смещение центральной точки bbox относительно ячейки сетки и ограничивая смещение центральной точки до [0, 1] диапазон, как показано в следующей формуле:
В приведенной выше формуле σ представляет собой сигмовидную функцию;- центральная координата блока, сопоставленная с измерением 0-13;,Даближайшая дискретная целая точка,, — ширина и высота привязки, сопоставленные с размерами 0–13,, — координата центральной точки GT Box, сопоставленная с измерением 0–13;То же самое справедливо.
2.4 Структура сети
Автор больше не использует VGG в качестве основы.Хотя ResNet оказался очень полезным в то время, автор не использовал структуру ResNet, а сам разработал сетевую структуру, названную DarkNet-19. Как показано на рисунке ниже, DarkNet-19 представляет собой структуру сети классификации, которая используется в задаче обнаружения целей, автор изменил размер входного изображения на416*416
, в то же время, чтобы улучшить разрешение, последний слой пула удаляется, а также удаляется полносвязный слой в красном поле.Конечный выход сети представляет собой размерность13*13*1024
карта особенностей .
2.5 Fine-Grained Features (объединение мелких деталей)
В YOLOv1 эффект обнаружения малых целей очень плохой.С одной стороны, это связано с дизайном функции потерь.Потери модели будут смещены в сторону большой цели, что повлияет на обучение маленьких целей ; с другой стороны, это связано с грубой особенностью модели, и сеть находится в процессе понижения дискретизации, теряется много подробной информации. Изученные неглубокие признаки модели глубокого обучения представляют собой подробную информацию, такую как углы и края объектов, в то время как изученные глубокие признаки смещены в сторону абстрактной семантики, поэтому для задачи обнаружения цели поверхностные и глубокие признаки являются и тем, и другим. задачи локализации требуют подробной информации, чтобы быть точными. Таким образом, YOLOv2 опирается на идею RestNet и включает в себя более совершенные функции. Автор будет26*26*512
Особенности проходного слоя преобразуются в13*13*256
тензор размерности с необработанными крупнозернистыми функциями13*13*1024
Для слияния структура сети показана на следующем рисунке:
Сквозной слой — это способ разделения матрицы объектов по одному, что может уменьшить размер карты объектов вдвое, но канал становится в 4 раза больше исходного, как показано на следующем рисунке:
Такой дизайн слияния признаков улучшает окончательный mAP на 1 балл.
2.6 Multi-Scale Training
Многомасштабное обучение должно заставить сеть адаптироваться к изображениям разных размеров и улучшить способность модели к обобщению.Благодаря многомасштабному обучению mAP можно увеличить на 1%.
- Удалите полностью связанные слои: это позволяет сети получать изображения любого размера, повышая надежность модели.
- Мультимасштаб: установите масштаб [320, 352, 384, ..., 608] и тренируйтесь трансформировать каждые 10 эпох.
2.7 Уравнение потерь
Автор не дал таких подробностей, как расчет потерь и деление положительной и отрицательной выборки в исходной статье (возможно, чтобы заставить читателей поклоняться авторскому коду), вы можете обратиться кэтот технический блог, интерпретировать код авторской части расчета убытков.
Также обратитесь к разделу потерь в техническом блоге:zhuanlan.zhihu.com/p/82099160В этой статье будет скопирована основная формула для справки:
3. Анализ эффекта, преимуществ и недостатков YOLOv2
3.1 Эффект YOLOv2
Как показано на рисунке ниже, преимущества YOLOv2 можно свести к увеличению скорости. В том же масштабе YOLOv2 повышает точность mAP на 13,4% и скорость логического вывода на 50% в наборе данных VOC2007.
3.2 Преимущества и недостатки YOLOv2
преимущество:
- Нет полного уровня подключения, высокая скорость: принята сетевая структура Darknet19, которая содержит только свертки и пулы, а количество слоев меньше, чем у YOLO, и нет полного уровня подключения, что требует меньше вычислений; модель работает быстрее.
- Используйте свертки вместо полносвязных слоев: снимите ограничение на размер ввода.
- Он быстрее, точнее и использует множество методов оптимизации.
недостаток:
- Есть возможности для повышения точности.
- Характеристики обнаружения малых целей не очень хороши и нуждаются в улучшении.
- Плотные объекты трудно обнаружить: хотя разрешение было улучшено, сложность перекрытия YOLOv1 была значительно улучшена, но каждая ячейка сетки может предсказать не более одного объекта, и это не сработает, если он встретит русскую матрешку.