Мы научились раньше
[серия алгоритмов обнаружения целей] 1. Алгоритм R-CNN
[Серия алгоритмов обнаружения целей] 2. Алгоритм SPP-Net.
[Серия алгоритмов обнаружения целей] 3. Быстрый алгоритм R-CNN
На этот раз давайте продолжим смотреть на Faster R-CNN.
Когда мы говорили о Fast R-CNN в прошлый раз, мы сказали, что, хотя Fast R-CNN сделал много улучшений по сравнению с предыдущими сериями алгоритмов R-CNN, и скорость, и точность были значительно улучшены, но все еще есть одно место, которое может быть оптимизированным — это алгоритм извлечения кадра-кандидата в начале. Будь то R-CNN, SPP-Net, Fast R-CNN, все они полагаются на алгоритм выбора региона для определения целевого местоположения, но это решение требует много времени. Предложение Faster R-CNN, наконец, решает эту проблему. Faster R-CNN использует новую сеть предложений регионов (RPN), которая будет совместно использовать сверточные функции всего изображения с сетью обнаружения, тем самым значительно сокращая временные затраты. извлечение блока-кандидата, делая Faster R-CNN настоящей сквозной сетевой моделью. Давайте посмотрим поближе
1. Общая архитектура Faster R-CNN
Общая архитектура Faster R-CNN показана на рисунке выше и состоит из двух модулей: сетевого модуля RPN, отвечающего за извлечение кадров-кандидатов, и модуля обнаружения Fast R-CNN, который использует извлеченные кадры-кандидаты для обнаружения. В частности, связь между этими двумя модулями заключается в том, что RPN сообщает Fast R-CNN, где искать. Два модуля имеют общие функции свертки, и вся система Faster R-CNN представляет собой унифицированную сетевую модель обнаружения целей.
2. Подробное объяснение региональной сети предложений (RPN)
Модель Faster R-CNN, самое главное - это предложение сети RPN, давайте рассмотрим его подробно.
1. Обзор сети RPN
RPN является полностью сверточной сетью, которая принимает карту признаков, извлеченную соответствующим общим модулем свертки базовой сети (VGG и т. д.), в качестве входных данных, и, наконец, выводит набор блоков предложений (блоков-кандидатов), каждый из которых имеет соответствующая информация о категории (фон или передний план) и информация о координатах соответствующего поля.
В сети RPN на карте входных объектов сдвиньте небольшое сетевое окно размером n*n (обычно 3*3), и каждое скользящее окно будет сопоставлено с низкоразмерным вектором (256-d для ZF, для VGG, это 521-d), и выведите этот вектор на два полносвязных слоя одного уровня, а именно на слой регрессии поля обнаружения (reg) и слой классификации поля обнаружения (cls). как показано на рисунке:
(Примечание: Как было сказано выше, сеть RPN является полностью сверточной сетью, зачем в этом блоке полносвязный слой? Фактически это для одного скользящего окна, объединенного в одно, общая карта признаков для всего входа , то есть сначала выполните свертку 3*3, а затем не отставайте от двух фильтров свертки 1*1 того же уровня для классификации и регрессии, как показано на следующем рисунке:)
2.anchor boxs
Для решения проблемы переменного размера каждого обнаруживаемого объекта в RPN вводятся блоки привязки.
Чтобы обнаруживать объекты разных размеров, в положении каждого из вышеперечисленных скользящих окон с центром скользящего окна в качестве центральной точки, мы одновременно предсказываем k якорей.Якорь обычно принимает три размера области (128 ^ 2, 256 ^ 2, 512 ^ 2) и каждый. Для каждого размера существует три соотношения сторон (1: 1, 1: 2, 2: 1), поэтому для каждого скользящего окна необходимо использовать k = 9 якорей. Как показано ниже:
Потому что в сети РПН длина и ширина конечного входа и выхода неизменны, а меняется только количество каналов.карта объектов, всего
Якорь, окончательный результат уровня классификации сети RPN:
, выход слоя регрессии:
.
(Поскольку RPN выполняет только грубую классификацию переднего плана и фона, для каждой позиции на карте объектов выходные данные составляют 2 тыс. за 4к)
3. Специальное извлечение якоря
Хотя привязки определяются на основе карты объектов после общего сверточного слоя, окончательные привязки строятся на исходном изображении.
Поэтому мы генерируем привязки на основе исходного изображения. Ранее мы говорили о слое ROIpooling в Fast R-CNN. Поскольку сверточный модуль для извлечения карты объектов имеет только сверточный слой и слой объединения, размер карты объектов составляет такой же, как и у слоя пула. Размер исходного изображения пропорционален отношениям сопоставления. Если размер изображения равен w * h, размер карты объектов равен w / r * h / r. Если привязка определена в пространственном положении карты объектов свертки окончательное изображение будет иметь набор привязок, разделенных на r пикселей (в VGG, r = 16). Кроме того, для тех якорей, которые пересекают границу изображения, мы их напрямую игнорируем.
4. Процесс обучения сети RPN
Во-первых, вход сети RPN — это карта признаков, извлеченная общим модулем свертки. При обучении все якоря нужно разделить на положительные образцы (передний план) и отрицательные образцы (фон).
Положительные образцы содержат следующие два типа якорей:
Якорь с самой высокой долговой распиской с достоверностью (кадр истинного обнаружения)
Якорь с долговой распиской больше 0,7 с любой наземной правдой (наземной правдой)
Как видите, истина может соответствовать нескольким якорям.
А для якорей, у которых IOU со всеми правдами земли меньше 0,3, мы назначаем отрицательные выборки. Остальные неположительные и неотрицательные якоря отбрасываем и не тренируем.
Для якорей всех положительных и отрицательных образцов изображения они не будут использоваться для обучения, а будут случайным образом выбирать 256 якорей на изображении в виде мини-пакета и вычислять функцию потерь мини-пакета, где выбранные положительные Соотношение отрицательных якорей не более 1:1. Если количество положительных образцов в изображении меньше 128, мы заполняем мини-партию отрицательными образцами. (Если используются все привязки, результаты прогнозирования будут смещены в сторону отрицательных выборок, потому что отрицательные выборки составляют большинство).
Функция потерь в сети RPN в основном такая же, как и в Fast R-CNN, а именно:
Соответствующие параметры имеют следующие значения:
вВероятность того, что i-й якорь окажется на переднем плане, когда i-й якорь является положительной выборкой,
, когда i-я якорь является отрицательной выборкой,
видно, что только когда образец положительный, будет выполнено обнаружение регрессии за отношением.
это мини-партия
- соответствующие 4 параметра масштабирования перевода с i-го якоря (положительного образца) в область предсказания,
Это соответствующие 4 параметра масштабирования перевода с i-го якоря (положительная выборка) на истину (истинный кадр обнаружения).
То есть мини-партия.
Посмотрите нижеи
.
Для функции потери классификации, потому что классификация в RPN является бинарным классификатором, поэтому
функция потерь регрессииесть (разница между двумя преобразованиями сведена к минимуму):
в,
Наконец,Параметр используется для взвешивания потери классификации и регрессии, значение по умолчанию равно
=10
Пока соответствующий блок предложений и оценка каждого блока предложений получаются через сеть RPN, а для оценки используется NMS (немаксимальное подавление), порог равен 0,7, а наивысшая оценка TOP-N (300 в документ) получен. Каждое поле предложения передается на следующий уровень объединения ROI.
3. Слой объединения ROI
Уровень объединения ROI в Faster R-CNN такой же, как и в Fast R-CNN. Для карты объектов, извлеченной из предыдущего общего сверточного слоя, она будет предоставлена не только в сеть RPN для извлечения блока предложений, но и в слой пула ROI.
Для слоя объединения ROI для входной карты объектов сопоставление соответствующего кадра предложения на карте признаков будет найдено в соответствии с кадром предложения, окончательно предоставленным сетью RPN, то есть соответствующей ROI (картой признаков, соответствующей кадр-кандидат) ). Как и прежде, RPN сообщает Fast R-CNN, где искать. Затем, как и в Fast R-CNN, разделите входные различные ROI (карты функций, соответствующие полям-кандидатам) на блоки H * W, а затем используйте максимальный слой объединения в каждом блоке для извлечения функции. Соответствующая операция объединения не зависит от каждого канала карты признаков и, наконец, выводит признаки H*W*c (c — количество каналов). Преобразуйте входные объекты в векторы объектов и передайте их в следующие полносвязные слои. (Для используемой модели на базе VGG16 это H*W равно 7*7).
В-четвертых, окончательная классификация и регрессия
Как упоминалось выше, слой пула ROI извлекает вектор признаков фиксированной длины и выполняет последующий полносвязный слой, классификацию и регрессию, что точно так же, как в Fast R-CNN, поэтому я не буду повторяться.
Пять, Faster R-CNN завершить учебный процесс
Из приведенного выше описания мы знаем, что Faster R-CNN извлекает кадр-кандидат из карты объектов, извлеченной общим модулем свертки через сеть RPN, одновременно выполняет грубую классификацию и грубую регрессию, а затем проходит через слой объединения ROI. , Чтобы извлечь фиксированный вектор признаков, отправьте его на полносвязный слой для окончательной точной классификации и регрессии.
Полный процесс обучения выглядит следующим образом:
1. Сначала используйте набор данных ImageNet для обучения сети CNN (здесь используется VGG).
2. Выполните предварительную обработку данных и зафиксируйте размер входного изображения до 600*600 после масштабирования.
3. Используйте модуль свертки предварительно обученной сети (в частности, block5_conv3) для извлечения карты признаков, отправки ее в сеть RPN и точной настройки сети RPN от начала до конца.
4. Сначала зафиксируйте веса RPN и используйте блок предложений, сгенерированный RPN на шаге 3, для обучения отдельной сети обнаружения Fast R-CNN.Сеть обнаружения также инициализируется предварительно обученной моделью ImageNet, и в это время две сети еще не совместно используют сверточные слои.
5. Используйте сеть обнаружения, обученную на шаге 4, для инициализации обучения RPN, но во время обучения мы исправили общий сверточный слой, используемый для извлечения карт объектов, и только точно настроили слои, уникальные для RPN.
6. Продолжайте поддерживать фиксированные общие сверточные слои и точно настраивайте слои FC Fast R-CNN.
Таким образом, две сети используют одни и те же сверточные слои, образуя единую сеть. Последнее чередующееся обучение, описанное выше, может быть повторено несколько раз, но в документе предполагается, что результаты не сильно улучшатся.
Вышеприведенное является соответствующим содержанием Faster R-CNN, реальной модели сквозной сети.По сравнению с предыдущей серией RCNN, скорость обнаружения была значительно улучшена.Он может обеспечить обнаружение почти в реальном времени, а точность также выше.Большой импульс.
Позже мы реализуем Faster RCNN через keras.
Добро пожаловать, чтобы обратить внимание на мою личную общедоступную учетную запись AI Computer Vision Workshop, Эта общедоступная учетная запись иногда выдвигает связанные статьи о машинном обучении, глубоком обучении, компьютерном зрении и т. д. Приветствую всех, кто учится и общается со мной.