Сверточная нейронная сеть на основе регионов

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

Авторы отмечают, что подойдет любой метод предложения области, не зависящей от класса. Выборочный поиск используется, в частности, для RCNN. Выборочный поиск выполняет функцию генерации 2000 различных областей, которые с наибольшей вероятностью содержат объект. После того, как мы подготовили набор предложений по регионам, эти предложения затем «деформируются» до размера изображения, которое может быть передано в обученную CNN (в данном случае AlexNet), которая извлекает вектор признаков для каждого региона. Затем этот вектор используется в качестве входных данных для набора линейных SVM, которые обучаются для каждого класса и выводят классификацию. Вектор также подается в регрессор ограничивающей рамки для получения наиболее точных координат.

Затем используется подавление не максимальных значений для подавления ограничивающих прямоугольников, которые имеют значительное перекрытие друг с другом.

Обнаружение объектов с помощью R-CNN

Он состоит из трех модулей. Первый генерирует предложения регионов, не зависящие от категорий. Эти предложения определяют набор доступных для детектора обнаружения кандидатов. Второй модуль - это большая сверточная нейронная сеть, которая извлекает вектор признаков фиксированной длины из каждой области. Третий модуль - это набор линейных SVM, зависящих от класса.

Дизайн модели

Предложения по регионам

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

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

который совместим с CNN

Обучение

Контролируемое обучение

Предварительно обученная CNN на большом вспомогательном наборе данных с использованием аннотаций на уровне изображения

Точная настройка для конкретного домена.

Чтобы адаптировать эту CNN к новой задаче (обнаружение) и новому домену (искаженные окна предложений), мы продолжаем обучение параметров CNN методом стохастического градиентного спуска (SGD), используя только предложения искаженных областей.

Классификаторы категорий объектов.

После применения меток извлечения функций и обучения оптимизируйте одну линейную SVM для каждого класса. используется стандартный метод жесткого отрицательного майнинга.

Fast R-CNN

Deep ConvNets значительно улучшили классификацию изображений и точность обнаружения объектов. Метод сверточной сети на основе регионов обеспечивает превосходную точность обнаружения объектов за счет использования глубокой ConvNet для классификации предложений по объектам. Однако у R-CNN есть заметные недостатки.

1. Преобразует виртуальные машины в регрессоры ограничивающей рамки.

2. Обучение требует больших затрат времени и места .

3. Объекты обнаруживаются медленно.

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

Архитектура и обучение

Входное изображение и несколько областей интереса (RoI) вводятся в полностью сверточную сеть. Каждый RoI объединяется в карту объектов фиксированного размера, а затем сопоставляется с вектором признаков с помощью полносвязных слоев (FC). Сеть имеет два выходных вектора для каждого RoI: вероятности softmax и смещения регрессии ограничивающей рамки для каждого класса. Архитектура проходит сквозное обучение с потерей многозадачности.

Быстрее R-CNN

Faster R-CNN работает для борьбы с несколько сложным конвейером обучения, который демонстрируют как R-CNN, так и Fast R-CNN.

Авторы вставляют сеть предложений региона (RPN) после последнего сверточного слоя. Эта сеть может просто смотреть на последнюю сверточную карту признаков и на основе нее создавать предложения по регионам. С этого этапа используется тот же конвейер, что и R-CNN (объединение ROI, FC, а затем головки классификации и регрессии).

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

Mask R-CNN - Расширение более быстрого R-CNN для сегментации на уровне пикселей

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

Можем ли мы расширить такие методы, чтобы сделать еще один шаг и определить точные пиксели каждого объекта, а не просто ограничивающие прямоугольники? Эту проблему, известную как сегментация изображения, Кайминг Хе и группа исследователей, в том числе Гиршик, исследовали в Facebook AI, используя архитектуру, известную как Mask R-CNN.

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

  • Входы: карта возможностей CNN.
  • Выходы: матрица с единицами во всех местах, где пиксель принадлежит объекту, и нулями в других местах (это называется двоичной маской).

Но авторам Mask R-CNN пришлось внести одну небольшую корректировку, чтобы этот конвейер работал должным образом.

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

Эта проблема связана с умной настройкой RoIPool для более точного выравнивания с помощью RoIAlign. В RoIPool мы округлим это значение в меньшую сторону и выберем 2 пикселя, что приведет к небольшому смещению. Однако в RoIAlign мы избегаем такого округления. Вместо этого мы используем билинейную интерполяцию, чтобы получить точное представление о том, что будет в пикселе 2,93. Это на высоком уровне то, что позволяет нам избежать перекосов, вызванных RoIPool.

Как только эти маски сгенерированы, Mask R-CNN объединяет их с классификациями и ограничивающими рамками из Faster R-CNN для создания такой чудесно точной сегментации:

Реализация

R-CN N

Код: https://github.com/rbgirshick/rcnn

Статья: https://arxiv.org/abs/1311.2524

Fast R-CNN

Код: https://github.com/rbgirshick/fast-rcnn

Статья: https://arxiv.org/abs/1504.08083

Быстрее R-CNN

Код https://github.com/rbgirshick/py-faster-rcnn

Бумага https://arxiv.org/abs/1506.01497

Маска R-CNN

Код https://github.com/CharlesShang/FastMaskRCNN

Бумага https://arxiv.org/abs/1703.06870