От R-CNN к маске R-CNN

машинное обучение

С тех пор, как в конкурсе ILSVRC в 2012 году был представлен блокбастер на основе CNN, CNN стал артефактом для классификации, обнаружения и сегментации изображений. Среди них, в задаче обнаружения изображений, серия R-CNN представляет собой набор классических методов, от оригинального R-CNN до более позднего Fast R-CNN, Faster R-CNN и Mask R-CNN этого года, мы можем см. CNN Как постепенно улучшить обнаружение изображений. Присоединяйтесь к этой статье, чтобы просмотреть историю семейства R-CNN, узнать об эволюции этих методов и творческих идеях, которые возникли на этом пути.

Четыре статьи в серии R-CNN следующие:

  1. R-CNN: АР Вест V.org/ABS/1311.25…
  2. Fast R-CNN: АР Вест V.org/ABS/1504.08…
  3. Faster R-CNN: АР Вест V.org/ABS/1506.01…
  4. Mask R-CNN: АР Вест V.org/ABS/1703.06…

Задача обнаружения изображения состоит в том, чтобы найти разные объекты на изображении сложной сцены и задать ограничивающие рамки для каждого объекта. Три хорошо известных набора данных для обнаружения изображений: PASCAL VOC, ImageNet и Microsoft COCO.PASCAL VOC содержит 20 категорий объектов, в то время как ImageNet содержит более тысячи категорий объектов, а COCO имеет 80 категорий объектов и 1,5 миллиона экземпляров объектов.

Обнаружение объектов PASCAL VOC
Обнаружение объектов COCO и сегментация экземпляров

1. R-CNN

Идея R-CNN представляет собой очень интуитивно понятный трехэтапный процесс: 1. Получить несколько областей-кандидатов, 2. Использовать CNN для классификации каждой области-кандидата, 3. Выполнить прогнозирование кадров для каждой области-кандидата.

До появления R-CNN популярная идея обнаружения объектов заключалась в том, чтобы сначала получить некоторые области-кандидаты из изображения, затем извлечь некоторые признаки из областей-кандидатов, а затем использовать классификатор для классификации этих признаков. Результат классификации и ограничивающая рамка области-кандидата могут использоваться как результат обнаружения объекта. Методом получения областей-кандидатов является выборочный поиск, который может получать области-кандидаты разного масштаба, и каждая область-кандидат является связанной областью. Как показано на рисунке ниже, меньшая область-кандидат получается слева, а большая область-кандидат получается справа, которая включает всю площадь человека в этом масштабе.

Выборочный поиск для получения регионов-кандидатов разного масштаба

Идея R-CNN заключается в том, что, поскольку CNN хорошо справляется с задачами классификации изображений и может автоматически изучать признаки, почему бы не использовать его для извлечения признаков для каждой области-кандидата? Таким образом, R-CNN масштабирует каждую область-кандидата до фиксированного размера на основе области-кандидата, полученной с помощью выборочного поиска, и использует ее в качестве входных данных для AlexNet (чемпион конкурса классификации изображений ImageNet 2012) и выполняет извлечение признаков в этих областях. в свою очередь Затем машина опорных векторов используется для классификации особенностей каждого региона соответственно. Процесс R-CNN выглядит следующим образом:

Принципиальная схема R-CNN

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

R-CNN работает очень хорошо, повышая точность на 30% по сравнению с самым современным результатом на VOC 2012. Но проблема в том, что это слишком медленно.Есть три основные причины: 1. Генерация региона-кандидата — трудоемкий процесс, 2. Для извлечения признаков региона-кандидата необходимо использовать AlexNet более 2000 раз на одно изображение; 3. Извлечение признаков, классификация изображений, регрессия ограничивающей рамки — это три независимых шага, которые необходимо обучать отдельно, и эффективность в процессе тестирования также низкая.

2. Быстрый R-CNN

Чтобы решить проблему низкой эффективности в R-CNN, Fast R-CNN считает, что AlexNet нужно использовать более 2000 раз на изображении для получения характеристик каждой области, но многие области перекрываются.Могут ли эти повторные вычисления следует избегать?Только Как насчет того, чтобы использовать AlexNet один раз на изображении, а затем получать функции для разных регионов?

Поэтому Fast R-CNN предлагает метод ROI Pooling, который сначала использует прямой расчет CNN для входного изображения, чтобы получить карту признаков всего изображения, а затем извлекает признаки каждой области-кандидата в этой карте признаков. Поскольку размеры регионов-кандидатов различаются, а соответствующие функции должны иметь фиксированный размер, этот метод использует объединение POI для каждого региона-кандидата.iРазмер ROI каждого региона-кандидата составляетh_i\times w_i, так что размер выводаh\times w, затем разделите ROI наh\times wсетки, размер каждой сетки(h_i/h)\times (w_i/w), а затем используйте max-pooling для каждой сетки, чтобы получить размерh\times wхарактерное изображение.

Схематическая диаграмма Fast R-CNN, разделяющая каждый регион-кандидат на сетки h x w для объединения

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

L(p,u,t^{u},v )=L_{cls}(p,u) + \lambda[u\geq 1]L_{reg}(t^{u},v)

Два элемента в формуле — это потеря классификации и потеря регрессии.

Объединенная сеть извлечения-классификации-регрессии признаков

Используя VGG16 в качестве сети извлечения признаков, Fast R-CNN имеет более чем в 200 раз более быстрое время обработки и более высокую точность, чем R-CNN на тестовых изображениях. Обнаружение в реальном времени может быть достигнуто, если не учитывать время для создания областей-кандидатов. Алгоритму выборочного поиска, который генерирует области-кандидаты, требуется около 2 секунд для обработки изображения, поэтому он становится узким местом этого метода.

3. Быстрее R-CNN

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

Быстрее R-CNN: использование сети региональных предложений на сверточных картах объектов

Сеть предложений регионов (RPN) работает следующим образом: сначала изображение признака получается путем нескольких слоев свертки на входном изображении, а затем на изображении признака создается регион-кандидат. он используетn\times n(n=3) Скользящее окно преобразует изображение локального объекта в низкоразмерный объект, предсказыватьkрегион (слой cls,2koutput) является регионом-кандидатом и соответствующимkграница (reg слой,4kвывод). здесьkЭти области называются якорями и соответствуют прямоугольным прямоугольникам разных размеров и разных соотношений сторон с тем же центром, что и скользящее окно. Предположим, что размер изображения признака после свертки равенW\times H, то всегоWHkякорь. Этот метод выделения признаков и генерации областей-кандидатов является инвариантным к смещению.

Прогнозировать области-кандидаты для привязок в скользящем окне

После использования RPN для получения областей-кандидатов Fast R-CNN по-прежнему используется для классификации и регрессии ограничивающей рамки областей-кандидатов. Две сети используют общие сверточные слои. Поскольку в процессе обучения Fast R-CNN необходимо использовать метод генерации фиксированной области-кандидата, невозможно одновременно использовать алгоритм обратного распространения ошибки для обучения RPN и Fast R-CNN. В этой статье используются четыре шага для завершения процесса обучения: 1. Обучить только RPN 2. Обучить Fast R-CNN отдельно, используя метод генерации региона, полученный на шаге 1. 3. Использовать сеть, полученную на шаге 2, в качестве исходной сети. для обучения RPN; 4, снова обучите Fast R-CNN и точно настройте параметры.

Точность Faster R-CNN аналогична Fast R-CNN, но время обучения и время тестирования сокращены в 10 раз.

4. Маска R-CNN

Faster R-CNN добился очень хороших результатов при обнаружении объектов, а Mask R-CNN делает еще один шаг вперед: получение результатов обнаружения на уровне пикселей. Для каждого целевого объекта дается не только его ограничительная рамка, но и отмечается, принадлежит ли каждый пиксель в ограничительной рамке объекту.

Mask R-CNN: обнаружение объектов на уровне пикселей

Mask R-CNN использует существующую структуру сети в Faster R-CNN, добавляет головную ветвь и использует FCN для выполнения двоичной сегментации для каждой области.

Mask R-CNN также предлагает два небольших улучшения для улучшения сегментации. Во-первых, при разделении каждой области связь между разными классами разъединяется. Предполагая, что существует K классов объектов, общие методы сегментации напрямую предсказывают выходные данные с K каналами, где каждый канал представляет соответствующий класс. И Mask R-CNN предсказывает K выходов с 2 каналами (передний план и фон), так что предсказания каждой категории независимы. Во-вторых, объединение ROI, используемое в Faster R-CNN, сопоставляет каждую ROI с фиксированным размером, и во время объединения выполняется операция округления, в результате чего карты функций до и после объединения не будут иметь непрерывного соответствия. Например, если размер до объединения составляет 112x112, а размер после объединения — 7x7, для пикселя до объединения его положение по оси абсцисс равноx, то соответствующая абсцисса после объединения равнаx/16, а затем округляется, чтобы получить его положение в сетке 7x7. Поскольку операция округления приведет к ошибкам, Faster R-CNN не округляет и использует билинейную интерполяцию для полученияx/16Истинное значение при , метод называется ROIAlign.

Код для вышеуказанных методов:

R-CNN

Fast R-CNN

Faster R-CNN

Mask R-CNN

Примечание. R-CNN, Fast R-CNN и Faster R-CNN были обобщены в предыдущих статьях, и здесь добавлен Mask R-CNN. Дополнительные методы обнаружения объектов доступны в 《Прогресс глубоких сверточных нейронных сетей в обнаружении объектов" в этой статье. Кроме того,"A Brief History of CNNs in Image Segmentation: From R-CNN to Mask R-CNNВ этой статье также сделано подробное введение.