Серия обнаружения объектов глубокого обучения (6) YOLO2

искусственный интеллект глубокое обучение

YOLO2 структура

Реализация серии YOLO имеет собственную структуру под названием draknet, которая представляет собой чистую структуру C. Будь то YOLO или YOLO2, в реализации кода используется даркнет, а файл конфигурации сетевой структуры изменен.Давайте посмотрим на это сначала. Как именно это выглядит:

На картинке выше видно, что YOLO 2 имеет 32 слоя. Структура все еще относительно традиционна, в основном с использованием 3Свертка 3, 2Объединение 2 и свертка 1*1. В дополнение к вышеупомянутым трем обычным операциям есть reorg и route, где route находится на слоях 25 и 28, а reorg — на уровне 27.

route:

Слой маршрута означает слияние.Например, маршрут 28-го слоя объединяет 27-й слой и 24-й слой и выводит его на следующий слой.Вывод 27-го слоя 1313256, 24 слоя выход 13131024, поэтому сращивание в третьем измерении является выходом 28 слоев, а также входом 29 слоев: 13131280. Точно так же маршрут на 24-м слое имеет только 16, поэтому он не будет объединен, а выход 16-го слоя будет напрямую принят за выход 24-го слоя: 2626512.

reorg:

reorg очень похож на reshape, но способ reshape очень новый, он будет 2626Выходная форма 64 становится 1313256, это потому что 26261 может стать 13134.

Таким образом, 32-слойная структура YOLO2 может сортировать вход и выход Наконец, мы фокусируемся на выходе 30-го слоя, который равен 13.13125. Поскольку слой 30 выполняет 11 свертка, поэтому используется 125 11Ядро свертки 1024, конечный результат 1313*125. Так почему же на выходе такая форма?

1313 Тут и говорить нечего, это 169 пикселей, каждый пиксель имеет толщину 125 слоев. И это предсказано сразу после этого слоя, так что это 169125 номеров содержат всю необходимую информацию YOLO2, границы, категории и многое другое.

125 относится к 25 * 5, из которых 5 относится к 5 региональным блокам предложений. Эта операция относится к якорному блоку предложений в более быстром r-cnn. Если вы читали эту серию, число в более быстром r-cnn равно 9. , только в YOLO2 становится 5.

Осталось последнее число: 25, что связано с количеством категорий, которые необходимо обнаружить.YOLO2 прогнозирует 20 категорий (набор данных VOC), поэтому расположение 25 равно 20+4+1, где:

20 — оценка класса (вероятность), то есть вероятность того, что определенный текущий пиксель соответствует определенному классу в определенном опорном кадре;

4 — δ(tx)δ(tx), δ(ty)δ(ty), txtx, tyty, эти 4 числа будут использоваться для расчета положения и размера границы;

1 — это достоверность, указывающая на вероятность того, что в предсказании ограничительной рамки есть реальный объект.

Следовательно, структура YOLO2 изменяется в зависимости от количества обнаруженных категорий.Если мы делаем обнаружение одной цели, а остальные такие же, как указано выше, то вывод последнего слоя будет: 1313(5*(1+4+1)), что равно 131330. Кстати, давайте поговорим о структуре CNN. Когда мы проводим анализ структуры сети или проектирование структуры сети, у нас часто возникает ощущение, что выходное число представляет то, что оно хочет представлять. Иногда это даже кажется очень неразумным, но, в конце концов, такая операция может быть эффективной.Самая важная причина заключается в том, что операция свертки не имеет практического значения.Это только сильная способность извлечения, но она не знает, что она будет извлекать, поэтому, если мы разработаем соответствующую функцию потерь, вы можете указать вывод произвольно, даже если эта спецификация кажется бессмысленной. CNN, по сути, является чрезвычайно сложной, выразительной и потенциальной функцией, соединяющей ввод и вывод, но можно ли полностью использовать конечные возможности этой функции, зависит от многих вещей, функции потерь, советов по обучению, наборов данных и многого другого.

Расчет границы YOLO2

Кадр YOLO2 связан с каждым пикселем на окончательной карте объектов.Каждый пиксель будет иметь пять опорных кадров.Эти пять опорных кадров связаны с якорем и номерами stx, sty, tw и th. Мы просто посмотрим на формула ниже:

Мы уже говорили об якоре, но это вовсе не абстрактно, а очень конкретно. Якорь — это пара чисел, ширина и высота. Например, если мы напишем пару (1,1), то это якорь. В приведенной выше формуле ширина равна PwPw, а высота — PhPh. Когда YOLO2 определяет значение привязки, оно основывается на прогнозируемом наборе данных.Он заранее подсчитывает распределение длины и ширины ограничительной рамки в VOC и выбирает 5 пар более подходящих привязок.Этот статистический метод находится в статья, называемая кластерами измерений (размерная кластеризация), на самом деле является K-средним, с количеством кластеров k в качестве количества ячеек привязки, а также шириной и высотой k центральных ячеек кластера в качестве размера ячейки привязки. Однако существует проблема с использованием стандартных K-средних, то есть большие b-боксы будут давать большие ошибки, чем маленькие b-боксы, даже если они ближе к фактическому центру кластера, поэтому для решения этой проблемы переработана кластеризация измерений. : d(коробка,центроид)=1-IOU(коробка,центроид)d(коробка,центроид)=1-IOU(коробка,центроид)

После предсказания K-средних они таковы:

(1.3221, 1.73145)

(3.19275, 4.00944)

(5.00587, 8.09892)

(9.47112, 4.84053)

(11.2364, 10.0071)

Кроме того, CxCx и CyCy — это позиции пикселей на карте объектов, δ(tx)δ(tx), δ(ty)δ(ty), txtx, tyty — выходные данные на карте объектов.

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

Порог YOLO2 и классификация

В конце YOLO2 наберет все классы 20. Очевидно, что тот, у кого самый высокий балл, является категорией последнего ящика предложений, и вероятность этой категории будет исключена.

YOLO2 для структуры VOC, наконец, произведет 1313Цель 5, но невозможно иметь столько объектов на обычном изображении, поэтому в конце концов необходим порог для ограничения этих выходов.Порог, указанный в статье, равен 0,24, так какое значение следует сравнивать с 0,24 ? Мы извлекли указанную выше вероятность, и другим выходом является уверенность, а сравнение — это произведение двух.

На официальном сайте даркнета приведена схема, из которой видно, что если порог очень маленький, то это будет выглядеть так:

Функция потерь YOLO2

YOLO2 также является многозадачной потерей.В серии R-CNN регрессии классификации обычно складываются вместе в качестве окончательной функции потерь.В YOLO2 функция потерь состоит из четырех элементов, и веса этих четырех элементов различны.Они являются:

object_scale:5

noobject_scale:1

class_scale:1

corrd_scale:1

Что это обозначает? объект — это область, в которой есть объект, который оценивается как отсутствие объекта, noobject — это область, в которой нет объекта, который считается там, класс — это неправильная классификация, corrd — это отклонение bbox, вы можете видеть, что YOLO2 дает штраф за не обнаружение объекта велик.

Конкретный процесс заключается в том, что YOLO2 сначала фокусируется на классе noobject, а последний слой выводит 13135 bboxes, сравните эти bboxes с каждой базовой истиной один за другим, если есть еще несколько bbox и IOU истинности земли меньше 0,6, то считается, что он принадлежит noobject, и возвращается значение noobject_scale*confidence. Далее обращаем внимание на бокс с наибольшей степенью совпадения с земной истиной, и вычисляем оставшиеся три проигрыша, Эти три проигрыша не имеют условий суждения, и они будут выведены несмотря ни на что:

1. Класс объекта вернет object_scale*(1-достоверность)

2. Класс corrd вернет расстояние L1 четырех чисел.

3. Класс класса напрямую возвращает кросс-энтропию

Оценка производительности YOLO2

YOLO2 для VOC2007:

YOLO2 для VOC2012 и COCO:

оригинал:All.Pull/статья/VIE…