Введение в более быстрый R-CNN
Команда RBG запустила Faster R-CNN в том же году, что и Fast R-CNN в 2015. Давайте рассмотрим развитие каждой сети в задаче обнаружения объектов с самого начала.Во-первых, R-CNN решила проблему обнаружения объектов с классификацией + ограничение box, SPP-Net решает проблему расчета совместного использования свертки, Fast R-CNN решает проблему сквозного обучения, после чего, наконец, в сети все еще можно использовать следующий алгоритм ss, который является отдельной частью, но это алгоритму требуется около 2 секунд, этот момент является узким местом в производительности серии R-CNN, и все быстрые R-CNN не работают в режиме реального времени. Тогда появление Faster R-CNN должно решить эту проблему.
В Faster R-CNN сеть RPN, сеть региональных предложений (Region Proposal Network) предлагается заменить исходный алгоритм ss, который можно просто понять как:
Алгоритм Faster R-CNN = Fast R-CNN+RPN-ss
Таким образом, можно сказать, что, кроме RPN, остальная часть Faster R-CNN такая же, как Fast R-CNN, поэтому ключом к пониманию Faster R-CNN является понимание RPN.
Структура сети РПН
Прежде всего, на приведенном выше рисунке показано положение RPN в Faster R-CNN, которое делает предложения регионов (около 300) на карте объектов после свертки CNN и извлекает карты объектов в соответствии с предложением региона, сгенерированным RPN, объединение RoI выполняется на извлеченных функциях. После объединения RoI это то же самое, что и Fast R-CNN.Таким образом, вход RPN - это карта признаков после свертки, а выход - количество переоцененных ящиков предложений, Так называемая оценка заключается в том, чтобы оценить, является ли ящик объектом, а предлагаемый ящик - четырьмя значениями ( х, у, ш, ч).
RPN — это полностью сверточная сеть, и ее первые несколько сверточных слоев такие же, как и первые пять слоев Faster R-CNN, поэтому RPN — это дополнительный общий расчет сверточных слоев для сокращения времени, затрачиваемого на предложение региона.
Также из-за общей свертки мы обычно думаем, что RPN имеет только два уровня. Количество слоев перед RPN зависит от того, какую исходную модель выберет Faster R-CNN.Если это AlexNet, то 5 слоев, если ZFNet, то тоже 5 слоев, если VGG16, то 13 слоев. , и т.д. .
Тогда мы все еще используем AlexNet в качестве примера, размер карты признаков conv5 в это время составляет 1313256, то есть признаки этого слоя не отправляются в RPN, а RPN использует 3 на этой карте признаков.3256 ядер свертки, всего используется 256. Тогда признак ядра свертки после одной свертки равен 11256, то есть 256-d на рисунке ниже, после чего функция имеет две ветви:
Первая ветвь (рег-уровень) использует 4k 1s1256 сверток ядра свертки, и, наконец, вывести 4k чисел, где 4 является параметром поля предложения, то есть (x, y, w, h);
Вторая ветвь (уровень cls) использует 2k 1s1256 сверток ядра свертки, и, наконец, вывести 2k чисел, где 2 есть ли объект в области, т.е. (объект, не объект).
Итак, что такое к? k - количество типов Anchor box (система отсчета).В Faster R-CNN k=9, которые представляют собой 3 шкалы и 3 отношения соответственно, среди которых:
масштаб (128, 256, 512)
соотношение 1:1, 1:2, 2:1
Центр системы отсчета является центром ядра свертки.
Итак, на слое conv5 используйте 33 Ядро свертки будет генерировать k опорных кадров для каждой свертки, поэтому общее количество опорных кадров должно быть WHK, как было сказано выше, размер conv5 равен 1313, то общее количество сгенерированных блоков Anchor равно 1521.
Затем мы обнаружим, что с помощью приведенного выше объяснения есть некоторые места в RPN, которые не имеют смысла.Давайте объясним эти ямы один за другим:
**1. Общее количество упомянутых выше якорей составляет 1521, так почему же RPN генерирует около 300 региональных предложений? **
Каждый опорный кадр будет иметь оценку того, является ли он объектом или нет.В процессе обнаружения RPN выберет 300 областей с наивысшими оценками после расчета всех опорных кадров.
2. Размер опорного кадра (128, 256, 512), но размер conv5 всего 13*13.Где генерировать эти опорные кадры?
Эти опорные кадры генерируются не на карте объектов, а на исходном изображении, и размер перед исходным изображением не 224 * 244. Этот размер получается путем сжатия исходного изображения, поэтому выбор размера привязки необходимо учитывать перед масштабирование Размер исходного изображения, поскольку размер изображения, который превышает последний якорь, не имеет значения. Итак, что делает RPN, так это сопоставляет 9 опорных кадров, сгенерированных каждой точкой, с исходным изображением, то есть через 4k выходных данных смещения положения и k опорных кадров, чтобы получить положение опорного кадра в исходном изображении. Как и алгоритм ss в Fast R-CNN, он фактически генерируется на исходном изображении, и, наконец, его можно извлечь только на conv5 после изменения координат.
**3.При свертывании ядра свертки в точку выводятся 9 опорных кадров, но характеристики этих 9 предлагаемых кадров одинаковы, все они равны 256 331 получен путем свертки 256 ядер свертки1256, так где же эти 9 эталонных кадров направляют RPN, чтобы сфокусироваться на этих регионах? **
Функции действительно одинаковы, но полученные функции в конечном итоге сопоставляются с исходным изображением, чтобы получить окончательное предложение области, и одни и те же функции соответствуют 9 различным методам эталонного сопоставления, поэтому одни и те же функции сопоставляются с другим полем ссылок, потеря это отличается. Итак, какой метод лучше, конечно, тот, с наименьшими потерями. Таким образом, разница между 9 различными опорными кадрами отражается не в функциях, а в потерях.Давайте посмотрим на функцию потерь RPN ниже.
Функция потерь РПН
Сначала приведите формулу функции:
Эта формула на самом деле очень похожа на многозадачную потерю Fast R-CNN, Одна выполняет классификацию, другая выполняет регрессию, а затем две функции складываются вместе. i — это индекс поля привязки в пакете.
потеря для классификации:
Это по-прежнему отрицательное логарифмическое значение, Pi — прогнозируемая вероятность того, что i-я система отсчета является объектом, Piявляется индикаторной функцией, если якорь является объектом, Piравно 1; если привязкой является фон, то Pi* равно 0.
Тогда, если некоторая область является объектом, если pi=1, pi*=1, функция потерь в это время равна 0; аналогично, если pi=0, функция потерь равна положительной бесконечности.
потеря для регрессии:
где R также является уравнением гладкого L1-сглаживания:
Тот же фон не имеет ограничивающей рамки, поэтому требуется Pi* Lreg.
Распределения ti и ti* соответствуют четырем значениям, которые представляют собой отклонения координат x, y, w и h, где:
x, y, w, h — кадр предсказания (т. е. выходные данные уровня reg);
xa, ya, wa, ha — опорные системы отсчета;
x*, y*, w*, h* — наземные блоки истинности;
ti — отклонение между полем предсказания и привязкой, ti— отклонение между истинной точкой отсчета и привязкой, то мы рассматриваем ситуацию, то есть ti и tiто же самое, что и , функция потерь в это время равна 0, то это означает:
Отклонение между прогнозируемым значением и привязкой = отклонение между истинным значением и привязкой
То есть предсказанное значение в точности равно истинному. Это процесс, в котором упомянутый выше механизм внимания направляет RPN, чтобы обратить внимание на якорь, Когда якорь другой, функция потерь другая. Итак, это обратный процесс: мы выбираем функцию в пределах диапазона 3 * 3 в определенной точке, затем, является ли эта функция объектом или фоном, и когда она соответствует какой области исходного изображения, эффект будет наибольшим. эффективно. Это проблема, которую RPN пытается решить.
Кстати вот личная идея, так будет проще понять, РПН использует 3 на конв53 свертка ядра свертки, то если размер определенной области на исходном изображении на conv5 ровно 33? Тогда эта свертка эквивалентна полноразмерной свертке.Очевидно, что она может изучить все особенности в этой области, а потом мы смотрим на эти размерности, что нам удобно, чтобы понять, почему RPN выбрал свертку 3*3.
Размер conv5 13*13;
Свертка 3*3;
Если исходный размер изображения 1024;
Затем, когда якорь выбран как 256, их соотношения очень близки:
13/3 = 1024/256
Однако размер исходного изображения не обязательно должен быть 1024*1024, поэтому для учета деформации и масштабирования якорь имеет 9 вариантов.
Более быстрое обучение R-CNN
Обучение Faster R-CNN поэтапно, но не поэтапно, потому что сквозная задача решена в fast R-CNN. Как упоминалось ранее, Faster R-CNN = Faster R-CNN +RPN, поэтому процесс обучения необходимо выполнять поэтапно, но каждый шаг является сквозным.
Шаг 1: Обучить сеть RPN, используется исходная модель на ImageNet, т.к. RPN имеет свою функцию потерь, поэтому RPN можно обучить сначала, но во избежание возврата градиента при объединении мини-пакета В случае слишком много отрицательных образцов (фона), мы искусственно выберем 256 якорей в изображении случайным образом, а соотношение выбранных положительных и отрицательных якорей будет 1:1. Если количество положительных образцов в изображении меньше 128, мы заполняем мини-партию отрицательными образцами.
Шаг 2: Обучить Fast R-CNN, после обучения RPN обучить Fast R-CNN отдельно, В это время Fast R-CNN не разделяет сверточный слой с RPN, то есть исходная модель все еще получается на ImageNet, и Используемая область. Рекомендации генерируются RPN, а процесс обучения был представлен в предыдущей статье.
Шаг 3: Настройка RPN, на этом этапе RPN будет обучен снова, но на этот раз первые пять слоев ядер свертки совместно используются с Fast R-CNN, инициализируйте RPN с результатами, полученными на шаге 2, и зафиксируйте сверток. слой, настройте оставшийся слой ниже.
Шаг 4: Настройка быстрого R-CNN, предложение региона, используемое в это время, генерируется RPN после настройки на шаге 3, сверточный слой также фиксируется, а остальные слои настраиваются.
Более быстрая оценка производительности R-CNN
На приведенном выше рисунке показано время тестирования одного изображения и mAP Faster R-CNN, Можно видеть, что время Fast R-CNN и R-CNN отличается от времени серии обнаружения объектов (3) Fast R-CNN. Это связано с тем, что последний добавляет время алгоритма ss, которое составляет около 2 с.Значительное сокращение времени тестирования одного изображения позволяет Fast R-CNN действительно выполнять задачи обнаружения в реальном времени. Но да, оценка производительности Faster R-CNN выполняется на 8 графических процессорах K40.
оригинал:All.Pull/статья/VIE…