Подробное объяснение модели сегментации экземпляров Mask R-CNN
БазаАнализ эволюции технологии обнаружения целей в глубоком обучении
эта статьяПерепечатать адрес
Mask R-CNN — лучшая статья ICCV 2017, в которой освещаются последние достижения в области машинного обучения и компьютерного зрения в 2017 году. В последних разработках машинного обучения в 2017 году однозадачная сетевая структура постепенно потеряла свое внимание.вместопредставляет собой интегрированную, сложную, многозадачную сетевую модель, которая убивает многих зайцев одним выстрелом. Маска R-CNN является типичным представителем. Первая работа этого шедевра — He Kaiming, когда статья была опубликована, He Kaiming уже попала в FaceBook. Давайте сначала посмотрим, чего добился Mask R-CNN.
Как видите, в экземпляре Segmentation Mask R-CNN Framework, три вещи в основном выполнены:
1) Обнаружение цели, которое рисует ограничивающую рамку прямо на карте результатов.
2) Классификация целей, для каждой цели вам необходимо найти соответствующий класс, чтобы различать, является ли это человеком, автомобилем или другими категориями.
3) Сегментация цели на уровне пикселей, в каждой цели необходимо различать, что является передним планом, а что фоном на уровне пикселей.
Однако, прежде чем анализировать Mask R-CNN, я должен сообщить вам тот факт, что Mask R-CNN унаследован от Faster R-CNN (2016), а Mask R-CNN просто добавляет Mask Prediction в Faster R-CNN Branch (Mask ветвь прогнозирования) и улучшенный ROI Pooling, предложенныйROI Align. Со статистической точки зрения «Faster R-CNN» появляется более двадцати раз в первых трех главах статьи Mask R-CNN, поэтому трудно понять Mask R, не понимая предыдущую работу Росса Гиршика и Кайминга Хе. -Си-Эн-Эн. Поэтому, прежде чем анализировать Mask R-CNN, я сначала проанализирую Faster R-CNN для вас.
Прежде чем я проанализирую Faster R-CNN, я хочу еще раз сказать вам, что Faster R-CNN унаследован от Fast R-CNN (2015), а Fast R-CNN унаследован от R-CNN (2014). Поэтому просто сломайте лодку, в этом сообщении в блоге автор будет следоватьR-CNN, быстрый R-CNN, более быстрый R-CNN для маскировки R-CNNПоследовательность развития полностью проанализирована.
Во-первых, время уходит в 2014 год. В 2014 году это было глубокое обучение.в полном разгаретретий год разработки. Представлено Россом Гиршиком на CVPR 2014.R-CNN, использовалСверточная нейронная сетьдля обнаружения цели. Далее автор расскажет, как R-CNN использует сверточные нейронные сети для обнаружения целей.
Сначала на вход модели подается картинка, затем на картинке предлагается около 2000 областей для обнаружения, а затем предлагаются эти 2000 областей для обнаружения.по одному(Метод конкатенации) Извлечение признаков с помощью сверточной нейронной сети, а затем эти извлеченные признаки классифицируются с помощью машины опорных векторов (SVM) для получения категории объекта и корректировки размера целевого ограничивающего прямоугольника с помощью регрессии ограничивающего прямоугольника. Ниже автор кратко описывает, как R-CNN реализует вышеуказанные шаги.
Во-первых, когда на первом этапе выделяются 2000 областей, подлежащих обнаружению, используется метод, предложенный в 2012 г., называемыйselective search. Проще говоря, изображение делится на несколько блоков некоторыми традиционными методами обработки изображений, а затем SVM извлекает несколько блоков, принадлежащих одной и той же цели. Ядром выборочного поиска является SVM со следующей архитектурой:
Затем, на втором этапе извлечения признаков, Росс напрямую использовал последние результаты глубокого обучения того времени.AlexNet(2012). Итак, как обучается эта сеть? обучается непосредственно в ImageNet, то есть сеть, которая используется только для извлечения признаков, обучается с использованием набора данных классификации изображений.
На третьем этапе при совмещении цели используется машина опорных векторов (SVM).При обучении машины опорных векторов обучение сочетается с меткой (категорией) цели и размером ограничивающей рамки.Поэтому, машина опорных векторов также обучается индивидуально.
Когда в 2014 году родилась R-CNN, она отменила предыдущую схему обнаружения целей, и точность была значительно улучшена. Что касается вклада R-CNN, его можно в основном разделить на два аспекта:
1) Сверточная нейронная сеть используется для извлечения признаков.
2) Используйте регрессию ограничивающей рамки, чтобы исправить целевую ограничивающую рамку.
Однако давайте посмотрим, что не так с R-CNN:
1) Отнимающий много времени выборочный поиск, для одного кадра изображения требуется 2 с.
2) Отнимающее много времени последовательное прямое распространение CNN, для каждой области интереса необходимо пройти через AlexNet для извлечения признаков, а для извлечения признаков для всех областей интереса требуется около 47 секунд.
3) Три модулятренироваться отдельно, а во время обучения занимает много места для хранения.
Итак, перед лицом этой ситуации Росс предложил в 2015 году:Fast R-CNNБыли внесены улучшения, поэтому давайте обрисуем решение Fast R-CNN:
Сначала путем выборочного поиска извлекаются 2000 полей-кандидатов, а затем используется нейронная сеть для извлечения признаков из всего изображения. Затем используется слой пула RoI для извлечения соответствующих функций каждой области интереса на полном изображении, а затем классификация и коррекция ограничивающей рамки выполняются через полностью связанный слой (уровень FC). Вклад Fast R-CNN можно в основном разделить на два аспекта:
1) Вместо метода последовательного выделения признаков R-CNN нейронная сеть напрямую используется для извлечения признаков из всего изображения (вот почему необходим пул RoI).
2) За исключением выборочного поиска, другие части можно обучать вместе.
Однако у Fast R-CNN также есть недостатки, отражающиеся в трудоемком выборочном поиске. Итак, как исправить этот недостаток? Опубликовано в 2016 г.Faster R-CNNБыли сделаны следующие новшества:
Вместо выборочного поиска обнаруживаемая область создается непосредственно через сеть предложений регионов (RPN), что позволяет сократить время генерации области интереса с 2 с до 10 мс. Давайте посмотрим, как это делает Faster R-CNN.
Сначала используется общий слой свертки для извлечения признаков всего изображения, а затем полученные карты признаков отправляются в RPN, который генерирует кадр для обнаружения (указывается положение области интереса) и выполняет первую коррекцию ограничивающий прямоугольник области интереса. После этого следует архитектура Fast R-CNN.Уровень пула RoI выбирает соответствующую функцию каждой области интереса на карте функций в соответствии с выходными данными RPN и устанавливает для измерения фиксированное значение. Наконец, полносвязный слой (уровень FC) используется для классификации прямоугольников и выполняется вторая коррекция целевого ограничивающего прямоугольника. В частности, Faster R-CNN действительно обеспечивает сквозное обучение.
Чтобы понять Mask R-CNN, вы должны сначала понять Faster R-CNN. Поэтому согласно архитектуре Faster R-CNN (train.prototxt модели ZF Faster R-CNN) автор нарисовал структурную схему, как показано ниже:
Как показано на рисунке выше, структура Faster R-CNN в основном разделена на три части: первая часть представляет собой общую опорную сеть сверточного уровня, вторая часть представляет собой сеть генерации региона-кандидата-RPN, а третья часть представляет собой классификация регионов-кандидатов сетевым классификатором. Среди них обе части RPN и классификатора имеют поправки к целевому кадру. Часть классификатораПервоначальноУнаследованная структура Fast R-CNN. Давайте кратко рассмотрим различные модули Faster R-CNN.
Во-первых, давайте посмотрим, как работает RPN:
Проще говоря, RPN опирается на скользящее окно на общей карте объектов для создания 9 целевых блоков (называемых якорями в тексте) с предварительно заданными соотношениями сторон и областями для каждого местоположения. Эти 9 исходных якорей содержат три области (128×128, 256×256, 512×512), и каждая область содержит три соотношения сторон (1:1, 1:2, 2:1). Схема показана ниже:
Поскольку размер общей карты объектов составляет около 40 × 60, общее количество начальных привязок, сгенерированных RPN, составляет около 20 000 (40 × 60 × 9). Для сгенерированного якоря RPN должен сделать две вещи: во-первых, определить, является ли якорь передним или задним планом, что означает определить, покрыл ли якорь цель или нет, исправление координат. Для первой задачи Faster R-CNN использует SoftmaxLoss для прямого обучения и исключает якоря за границей изображения во время обучения; для последней проблемы для обучения используется SmoothL1Loss. Итак, как же реализовано RPN? Эта проблема легко решается сущностью RPN Суть RPN - древовидная структура, ствол - сверточный слой 3x3, ветви - два сверточных слоя 1x1, а первый объем 1x1. слой решает выходные данные переднего плана и переднего плана, а второй сверточный слой 1 × 1 решает выходные данные коррекции границы. Давайте посмотрим, как это делается в коде:
Как видно из приведенного выше кода, для каждой точки на карте объектов, выдаваемой RPN, сверточный слой 1 × 1 выводит 18 значений, поскольку каждая точка соответствует 9 якорям, и каждый якорь имеет оценку переднего плана и оценку фона. так что 9×2=18. Другой сверточный слой 1×1 выводит 36 значений, поскольку каждая точка соответствует 9 якорям, а каждый якорь соответствует 4 исправленным значениям координат, поэтому 9×4=36. Что ж, чтобы получить эти значения, сеть RPN нужно обучить. Во время обучения необходимы соответствующие метки. Итак, как определить, является ли якорь передним или задним планом? В документе дается следующее определение: если IoU якоря и наземной истины выше 0,7, то этот якорь считается передним планом (положительным). Точно так же, если IoU этого якоря и наземной правды ниже 0,3, то этот якорь считается фоновым (отрицательным). Когда автор обучает сеть RPN, используются только два вышеуказанных типа якорей, а якоря, IoU которых составляет от 0,3 до 0,7 с истинностью земли, не используются. Когда учебные якоря относятся к переднему плану и фону, на изображении случайным образом выбираются 128 якорей переднего плана и 128 якорей фона.
Метод обучения для классификации переднего и заднего плана описан в предыдущем абзаце, а в этом абзаце описан метод обучения коррекции опорной рамки. Коррекция кадра в основном выполняется по 4 значениям, tx, ty, th, tw. Эти четыре значения означают, что скорректированный кадр перемещается в направлениях x и y якоря (определяется tx и ty), а длина и ширина увеличиваются на определенный множитель (определяется th и ty). Итак, как обучить параметры сети, чтобы получить эти четыре значения? Fast R-CNN дал ответ, используя для обучения SmoothL1loss, который можно описать так:
Здесь есть проблема, т. е. обучение параметрам коррекции ограничивающей рамки привязки необходимо проводить не для всех привязок, а только для положительных привязок. Поэтому при обучении RPN на этом этапе обучаются только 128 случайно выбранных положительных якорей. Следовательно, функция потерь для обучения RPN может быть записана как:
Здесь Lreg — это Lloc выше, λ установлено равным 10, Ncls — 256, а Nreg — 2400. С помощью этой настройки значения потерь двух частей RPN могут поддерживаться в балансе.
На этом этапе RPN анализируется.Давайте посмотрим на следующий классификатор, но прежде чем представить классификатор, давайте посмотрим, что делает RoI Pooling?
Прежде всего, первый вопрос: зачем вам RoI Pooling? Ответ заключается в том, что в Fast R-CNN функции извлекаются за один раз с помощью общих сверточных слоев. Следовательно, для каждой области интереса соответствующие функции должны быть извлечены из общего слоя свертки и отправлены на полносвязный уровень для классификации. Таким образом, RoI Pooling в основном делает две вещи: во-первых, выбирает соответствующие функции для каждой области интереса, во-вторых, преобразует размерность соответствующих функций каждой области интереса в определенную функцию, чтобы удовлетворить входные требования полностью связанного слоя. , фиксированное значение. Схематическая диаграмма RoI Pooling выглядит следующим образом:
Как показано на рисунке выше, для каждой области интереса уровень объединения областей области интересов берет соответствующие функции из общего сверточного слоя и преобразует их в одинаковый размер (6 × 6).
После уровня пула RoI следует обучение классификатору Fast R-CNN и корректировке ограничивающей рамки RoI. Классификатор в основном делит конкретную категорию извлеченной области интересов (люди, транспортные средства, лошади и т. д.), всего категории C+1 (включая категорию фона). Коррекция кадра RoI аналогична принципу коррекции опорного кадра в RPN, а также SmoothL1 Loss.Стоит отметить, что коррекция кадра RoI также корректируется для нефоновых RoI, а коррекция кадра RoI не выполняется для RoI, категория которых метка является фоном параметр обучения. Для обучения классификатора и коррекции ограничивающей рамки области интересов формула может быть описана следующим образом:
В приведенной выше формуле u> = 1 указывает, что коррекция кадра RoI предназначена для нефоновой RoI.В эксперименте λ в приведенной выше формуле принимает значение 1.
При обучении коррекции классификатора и ограничительной рамки области интереса выполняются следующие шаги:
1) Сначала сгенерируйте около 20 000 анкоров (40×60×9) через RPN.
2) Выполните коррекцию первого кадра на 20 000 якорей, чтобы получить предложение после исправленного кадра.
3) Обрежьте край предложения, выходящий за границу изображения, чтобы предложение не выходило за пределы изображения.
4) Игнорировать предложения, которые слишком малы по длине или ширине.
5) Отсортируйте все предложения в соответствии с оценкой потенциальных клиентов от большего к меньшему и выберите первые 12 000 предложений.
6) Используйте алгоритм NMS с порогом 0,7, чтобы исключить перекрывающиеся предложения.
7) Для оставшихся предложений на предыдущем шаге выберите первые 2000 предложений для классификации и коррекции второго кадра.
В целом потери Faster R-CNN делятся на два блока, первый блок — это потери обучающего RPN (включая SoftmaxLoss и SmoothL1Loss), а второй блок — потери классификатора при обучении Fast R-CNN (включая SoftmaxLoss и SmoothL1Loss), общая функция потерь Faster R-CNN описывается следующим образом:
Затем есть три способа обучения Faster R-CNN, которые можно описать следующим образом:
1) RPN и Fast R-CNN обучаются попеременно, что также является методом, принятым автором.
2) Обучение приблизительного соединения RPN и Fast R-CNN игнорирует ошибку коррекции кадра RoI во время обучения, то есть выполняется только пересмотр кадра до якоря, поэтому он называется «приближенным соединением».
3) Совместное обучение RPN и Fast R-CNN.
Для альтернативного метода обучения, принятого автором, шаги следующие:
1) Инициализировать общие сверточные слои и обучить RPN с моделью, предварительно обученной в ImageNet.
2) Используйте параметры RPN, полученные на предыдущем шаге, для создания предложения RoI. Затем общие сверточные слои инициализируются с использованием предварительно обученной модели в ImageNet для обучения части Fast R-CNN (классификатор и редакция ограничительной рамки RoI).
3) Зафиксируйте параметры общего сверточного слоя после обучения и зафиксируйте параметры Fast R-CNN для обучения RPN. (Начиная с этого шага, параметры общего сверточного слоя действительно являются общими для двух сетевых блоков)
4) Также фиксируются параметры общего сверточного слоя, и фиксируются параметры RPN для обучения части Fast R-CNN.
Процесс тестирования Faster R-CNN очень похож на процесс обучения, который описывается следующим образом:
1) Сначала сгенерируйте около 20 000 анкоров (40×60×9) через RPN через RPN.
2) Выполните коррекцию первого кадра на 20 000 якорей, чтобы получить предложение после исправленного кадра.
3) Обрежьте край предложения, выходящий за границу изображения, чтобы предложение не выходило за пределы изображения.
4) Игнорировать предложения, которые слишком малы по длине или ширине.
5) Отсортируйте все предложения в соответствии с оценкой перспективы от большего к меньшему и выберите первые 6000 предложений.
6) Используйте алгоритм NMS с порогом 0,7, чтобы исключить перекрывающиеся предложения.
7) Для оставшихся предложений на предыдущем шаге выберите первые 300 предложений для классификации и коррекции второго кадра.
Здесь представлен Faster R-CNN. Рядом с Mask R-CNN давайте посмотрим, что пошло не так с RoI Pooling:
Вопрос 1: От области интереса на входной карте до функции области интереса на карте признаков объединение областей интереса — это результат, полученный непосредственно путем округления.
Это можно подтвердить в коде:
Вы можете видеть значение, взятое непосредственно с помощью раунда, какой вред это принесет? То есть выходные данные, полученные после объединения области интереса, могут не соответствовать области интереса исходного изображения, как показано на следующем рисунке:
Синяя часть на рисунке справа представляет собой квадрат, содержащий информацию об основном корпусе автомобиля, которая компенсируется операцией округления слоя RoI Pooling Layer.
Проблема 2: когда каждый RoI затем преобразуется в соответствующие размеры объекта фиксированного размера и используется операция округления. Здесь я привожу пример, объясняющий работу RoI Pooling:
Когда соответствующая карта объектов получена из RoI, выполняется округление, описанное в вопросе 1. Как после получения карты объектов получить входные данные полносвязного слоя 6 × 6? Объединение RoI делает следующее: разделите карту функций, соответствующую RoI, на блоки 6 × 6, а затем непосредственно найдите максимальное значение из каждого блока. Например, в примере на рисунке выше размер области интереса на исходном изображении составляет 280 × 480, а соответствующая карта признаков — 18 × 30. Разделите карту признаков на 6 блоков, каждый размером 3 × 5, а затем выберите максимальное значение в каждом блоке и поместите его в соответствующую область 6 × 6. При разбиении карты признаков на блоки снова используется округление, что также можно доказать в коде:
Эта операция округления (называемая квантованием в Mask R-CNN) мало влияет на классификацию области интереса, но наносит ущерб цели попиксельного прогнозирования, поскольку признаки, полученные для каждой области интереса, не выровнены с областью интереса. Поэтому Mask R-CNN улучшает объединение RoI и предлагает RoI Align.
Основное новшество RoI Align заключается в том, что для задачи 1больше не округлять. Для вопроса 2 используйтебилинейная интерполяциячтобы более точно найти соответствующую функцию каждого блока. В общем, роль RoI Align состоит в том, чтобы исключить операцию округления RoI Pooling и сделать так, чтобы характеристики, полученные для каждой области интереса, лучше выравнивали область области интереса на исходном изображении.
На следующем рисунке показана ветвь Mask в Mask R-CNN:
После RoI Align в Mask R-CNN есть «головная» часть, основная функция которой заключается в расширении выходного измерения RoI Align, чтобы оно было более точным при прогнозировании маски. В тренировочном сеансе Mask Branch автор не использовал SoftmaxLoss в стиле FCN, а вместо этого вывел карты предсказания K Mask (по одной для каждого класса) и использовал обучение средней бинарной кросс-энтропийной потери, конечно, в обучении Mask Branch When На выходных картах объектов K только карта объектов, соответствующая категории истинности наземных данных, вносит свой вклад в потерю маски.
Функция потерь при обучении Mask R-CNN может быть описана как:
В приведенной выше формуле и Lbox, и Lmask работают только с положительной RoI.
В Mask R-CNN есть некоторые небольшие корректировки по сравнению с Faster R-CNN, Например, положительный RoI определяется как IoU наземной истины больше 0,5 (0,7 в Faster R-CNN). Слишком подробные сведения не будут повторяться в этом сообщении в блоге.
Перейдите сюда и объедините Mask R-CNN сFCISДля сравнения, прежде всего, сходство между ними заключается в том, что они оба наследуют часть RPN от Faster R-CNN. Разница в том, что для FCIS маска предсказания и классификация являются общими параметрами. Mask R-CNN отличается, и у двух задач есть свои обучаемые параметры. Для этого в документе Mask R-CNN также проводится сравнение, показывающее, что использование общих карт признаков для прогнозирования масок и классификации может иметь проблемы для некоторых перекрывающихся целей.
Эксперименты Mask R-CNN дали хорошие результаты, достигнув или даже превысив современный уровень. Однако стоимость обучения также довольно велика, для совместного обучения требуется 8 графических процессоров.
Эксперимент Mask R-CNN очень подробен, и было проведено множество сравнительных экспериментов, таких как изменение глубины сети, тип ошибки при обучении ветви маски, сравнение RoI Align с RoI Pooling и RoI Warping, а также изменение метод прогнозирования маски (FCN и полносвязные слои) и т. д., подробности см. в экспериментальном разделе Mask R-CNN.
На этом знакомство с Mask R-CNN подходит к концу.Я хотел бы высказать некоторые свои мысли и чувства:
1) Полное воплощение наследуемой работы.Вы можете видеть, что структура Mask R-CNN довольно сложна, и на самом деле она наследует много предыдущей работы. Впервые регрессия ограничивающего прямоугольника появилась в R-CNN в 2014 году. Основное новшество Mask R-CNN, RoI Align, улучшено по сравнению с объединением RoI, которое было предложено в Fast R-CNN в 2015 году. Для применения RPN он напрямую унаследовал Faster R-CNN в 2016 году. Стоит отметить, что каждая из вышеперечисленных статей — это выдающаяся работа, которая подрывает вычислительную архитектуру в области обнаружения целей.
2) Комплексная работа.Тем не менее старая поговорка, в 2017-2018 годах, с быстрым развитием глубокого обучения, от однозадачной модели постепенно отказались. На ее место пришла более интегрированная, комплексная и мощная многозадачная модель. Маск R-CNN является одним из представителей.
3) Лидерство в тренде.Еще раз приветствую Хэ Кайминга и Росса Гиршика, их сильные стороны привели к развитию области обнаружения целей, поэтому независимо от того, где они находятся, будь то в Microsoft или FaceBook, их идеи и работы были применены или унаследованы многими людьми.