[Обнаружение цели (6)] YOLOv2 - Представляем якорь, лучше, быстрее, сильнее

глубокое обучение компьютерное зрение
[Обнаружение цели (6)] YOLOv2 - Представляем якорь, лучше, быстрее, сильнее

[Обнаружение цели (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, и т.д. Сравнение моделей показано на рисунке ниже.

image.png

2. Принцип и стратегия улучшения YOLOv2

Эта статья основана на YOLOv1 для объяснения стратегии улучшения YOLOv2.Если вы не знакомы с алгоритмом YOLOv1, вы можете прочитатьПредыдущая статьяТехнический блог YOLOv1. Автор проделал большую работу по улучшению и оптимизации от оптимизации YOLO до YOLOv2, и эффект оптимизации также очень значителен.На VOC2007 уровень точности mAP напрямую оптимизирован с 63,4 до 78,6%.

image.png

2.1 Batch Normalization

В 2017 году BN доказал свою роль и эффективность.Автор также использовал слой BN после сверточного слоя во втором поколении YOLO.Слой BN упрощает обучение сети и имеет эффект регуляризации для предотвращения Overfitting с слоями BN улучшает mAP за счет 2 процентных пункта. Кроме того, автор также упомянул, что после использования слоя BN слой отсева больше нельзя использовать для предотвращения переобучения.

2.2 High Resolution Classifier

  • Используется в YOLOv1224*224Изображение используется в качестве входных данных сети для предварительного обучения магистрали в ImageNet, и сеть должна изучить процесс обнаружения и адаптироваться к более высокому разрешению во время формального обучения. Автор использует большее разрешение в YOLOv2448*448Продолжайте настраивать десять эпох, чтобы сеть привыкла к большому разрешению.
  • В то же время автор удалил слой пула в сети, сделав карту выходных объектов сети более плотной (7*7-->13*13).
  • Классификатор высокого разрешения может улучшить mAP почти на 4 процентных пункта.

2.3 Anchor

2.3.1 Введение анкерного механизма

В YOLOv1 входное изображение, наконец, делится на[公式]Сетка с 2 ограничивающими прямоугольниками, рассчитанными на ячейку. YOLOv1, наконец, использует полносвязный слой для прямого предсказания ограничивающей рамки, где ширина и высота ограничивающей рамки зависят от размера всего изображения, а также потому, что в нем есть объекты разных масштабов и соотношений сторон (масштабов и соотношений). каждая картинка, YOLOv1 трудно научиться адаптироваться к формам разных объектов во время обучения, что также приводит к плохой работе YOLOv1 в точной локализации. Автор использует механизм привязки Faster RCNN для создания нескольких привязок для каждой точки карты объектов, выводимой сетью:

  • якорь — это виртуальная ограничивающая рамка.
  • Истинное предсказание bbox генерируется привязкой.

image.png

В 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):

image.png

Автор определяет расстояние кластеризации k-средних как:

image.png

2.3.3 Anchor, True BBoxes & Predicted BBoxes

В этой части в основном объясняется, как механизм Anchor сочетается с GT Box и блоком предсказаний.

Первая часть сначала объясняет значение Anchor, сначала посмотрите на выходные данные группы кластеров привязки, например:

image.png

Выведите 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:

{xf=xiyf=yiwf=log(w/anchors[0])hf=log(h/anchors[1])\begin{cases} x_f = x - i\\ y_f = y - i\\ w_f = log(w/anchors[0])\\ h_f = log(h/anchors[1]) \end{cases}

В приведенной выше формуле i и j соответствуют идентификатору ячейки сетки, то естьi=floor(x), j=floor(y), относительное смещение координаты центра таблицы bbox относительно ячейки сетки, которой он принадлежит, поскольку центр GT bbox должен находиться внутри этой ячейки сетки, поэтомуi, j ∈ [0, 1].

В последней части рассматривается, как используются якоря, GT Box и Predicted BBox:Сначала вспомним, как регрессирует смещение в Faster RCNN:

{txp=xpxawa,typ=ypyahatwp=log(wpwa),thp=log(hpha)txg=xgxawa,tyg=ygyahatwg=log(wgwa),thg=log(hgha)\begin{cases} t_x^p = \frac{x_p - x_a}{w_a}, t_y^p = \frac{y_p - y_a}{h_a}\\ t_w^p = log(\frac{w_p}{w_a}), t_h^p = log(\frac{h_p}{h_a})\\ t_x^g = \frac{x_g - x_a}{w_a}, t_y^g = \frac{y_g - y_a}{h_a}\\ t_w^g = log(\frac{w_g}{w_a}), t_h^g = log(\frac{h_g}{h_a}) \end{cases}

Подумайте об этом, нет праваtxpt_x^pсделать какие-либо ограничения, скажем здесьtxp=3t_x^p=3, то координаты центральной точки будут прямо смещены на 3waw_a, вполне вероятно, что предсказанный центр bbox больше не находится в ячейке сетки. Чтобы исправить эту ситуацию, необходимо ограничить смещение.YOLOv2 улучшает регрессию смещения исходного якоря, подгоняя относительное смещение центральной точки bbox относительно ячейки сетки и ограничивая смещение центральной точки до [0, 1] диапазон, как показано в следующей формуле:

{о(txp)=bxCx,о(typ)=byCytwp=log(wpwa'),thp=log(hpha')txg=gxfloor(gx),tyg=gyfloor(gy)twg=log(wgwa'),thg=log(hgha')\begin{cases} σ(t_x^p) = b_x - C_x, σ(t_y^p) = b_y - C_y\\ t_w^p = log(\frac{w_p}{w_a'}), t_h^p = log (\frac{h_p}{h_a'})\\ t_x^g = g_x - пол(g_x), t_y^g = g_y - пол(g_y)\\ t_w^g = log(\frac{w_g}{w_a' }), t_h^g = log(\frac{h_g}{h_a'}) \end{cases}

В приведенной выше формуле σ представляет собой сигмовидную функцию;bx,byе[0,13]b_x, b_y ∈ [0, 13]- центральная координата блока, сопоставленная с измерением 0-13;(Cx,Cy)(C_x, C_y),Даbx,byb_x, b_yближайшая дискретная целая точка,wa',ha'е[0,13]w_a', h_a' ∈ [0, 13], — ширина и высота привязки, сопоставленные с размерами 0–13,gx,gyе[0,13]g_x, g_y ∈ [0, 13], — координата центральной точки GT Box, сопоставленная с измерением 0–13;gw,ghе[0,13]g_w, g_h ∈ [0, 13]То же самое справедливо.

image.png

2.4 Структура сети

Автор больше не использует VGG в качестве основы.Хотя ResNet оказался очень полезным в то время, автор не использовал структуру ResNet, а сам разработал сетевую структуру, названную DarkNet-19. Как показано на рисунке ниже, DarkNet-19 представляет собой структуру сети классификации, которая используется в задаче обнаружения целей, автор изменил размер входного изображения на416*416, в то же время, чтобы улучшить разрешение, последний слой пула удаляется, а также удаляется полносвязный слой в красном поле.Конечный выход сети представляет собой размерность13*13*1024карта особенностей .

image.png

2.5 Fine-Grained Features (объединение мелких деталей)

В YOLOv1 эффект обнаружения малых целей очень плохой.С одной стороны, это связано с дизайном функции потерь.Потери модели будут смещены в сторону большой цели, что повлияет на обучение маленьких целей ; с другой стороны, это связано с грубой особенностью модели, и сеть находится в процессе понижения дискретизации, теряется много подробной информации. Изученные неглубокие признаки модели глубокого обучения представляют собой подробную информацию, такую ​​как углы и края объектов, в то время как изученные глубокие признаки смещены в сторону абстрактной семантики, поэтому для задачи обнаружения цели поверхностные и глубокие признаки являются и тем, и другим. задачи локализации требуют подробной информации, чтобы быть точными. Таким образом, YOLOv2 опирается на идею RestNet и включает в себя более совершенные функции. Автор будет26*26*512Особенности проходного слоя преобразуются в13*13*256тензор размерности с необработанными крупнозернистыми функциями13*13*1024Для слияния структура сети показана на следующем рисунке:

image.png

Сквозной слой — это способ разделения матрицы объектов по одному, что может уменьшить размер карты объектов вдвое, но канал становится в 4 раза больше исходного, как показано на следующем рисунке:

image.png

Такой дизайн слияния признаков улучшает окончательный mAP на 1 балл.

2.6 Multi-Scale Training

Многомасштабное обучение должно заставить сеть адаптироваться к изображениям разных размеров и улучшить способность модели к обобщению.Благодаря многомасштабному обучению mAP можно увеличить на 1%.

  • Удалите полностью связанные слои: это позволяет сети получать изображения любого размера, повышая надежность модели.
  • Мультимасштаб: установите масштаб [320, 352, 384, ..., 608] и тренируйтесь трансформировать каждые 10 эпох.

2.7 Уравнение потерь

Автор не дал таких подробностей, как расчет потерь и деление положительной и отрицательной выборки в исходной статье (возможно, чтобы заставить читателей поклоняться авторскому коду), вы можете обратиться кэтот технический блог, интерпретировать код авторской части расчета убытков.

Также обратитесь к разделу потерь в техническом блоге:zhuanlan.zhihu.com/p/82099160В этой статье будет скопирована основная формула для справки:

image.png

image.png

3. Анализ эффекта, преимуществ и недостатков YOLOv2

3.1 Эффект YOLOv2

Как показано на рисунке ниже, преимущества YOLOv2 можно свести к увеличению скорости. В том же масштабе YOLOv2 повышает точность mAP на 13,4% и скорость логического вывода на 50% в наборе данных VOC2007.

image.png

3.2 Преимущества и недостатки YOLOv2

преимущество:

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

недостаток:

  • Есть возможности для повышения точности.
  • Характеристики обнаружения малых целей не очень хороши и нуждаются в улучшении.
  • Плотные объекты трудно обнаружить: хотя разрешение было улучшено, сложность перекрытия YOLOv1 была значительно улучшена, но каждая ячейка сетки может предсказать не более одного объекта, и это не сработает, если он встретит русскую матрешку.

Reference

  1. АР Вест V.org/PDF/1612.08…
  2. zhuanlan.zhihu.com/p/35325884
  3. Чжан Сюй.blog.CSDN.net/article/decent…
  4. woohoo.cn blog on.com/Y Ixia oz post/…
  5. zhuanlan.zhihu.com/p/82099160