[Обнаружение цели (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 была значительно улучшена, но каждая ячейка сетки может предсказать не более одного объекта, и это не сработает, если он встретит русскую матрешку.