Начало работы с маской R-CNN, например, сегментация

Сегментация экземпляра является расширенным типом обнаружения объектов, которое генерирует карту сегментации для каждого обнаруженного экземпляра объекта. Сегментация экземпляра обрабатывает отдельные объекты как отличные сущности, независимо от класса объектов. В отличие от этого семантическая сегментация рассматривает все объекты того же класса как принадлежащий одной сущности.

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

Можно создать предварительно обученную сеть Mask R-CNN с помощью maskrcnn объект. Сеть обучена на наборе данных MS-COCO и может обнаружить объекты 80 различных классов. Чтобы выполнить сегментацию экземпляра, передайте предварительно обученную сеть segmentObjects функция.

Если вы хотите изменить сеть, чтобы обнаружить дополнительные классы или настроить другие параметры сети, то можно использовать обучение с переносом. Для примера, который показывает, как обучить Маску R-CNN, смотрите, Выполняют Сегментацию Экземпляра Используя Маску R-CNN.

Маска архитектура сети R-CNN

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

RPN as part of a Feature Extractor, followed by object classification, yields bounding boxes and semantic segmentation masks for an input image

Маска сборки модели R-CNN на модели Faster R-CNN. Маска R-CNN заменяет ROI, макс. объединяющий слой в Faster R-CNN с roiAlignLayer это обеспечивает более точное субпиксельное объединение ROI уровня. Сеть Mask R-CNN также добавляет ветвь маски для пиксельной сегментации объекта уровня. Для получения дополнительной информации о сети Faster R-CNN, смотрите Начало работы с R-CNN, Быстрым R-CNN и Faster R-CNN.

Эта схема показывает модифицированную сеть Faster R-CNN слева и ветвь маски справа.

Faster R-CNN network connected to a mask branch using an ROI align layer

Чтобы сконфигурировать сеть Mask R-CNN для передачи обучения, задайте имена классов и поля привязки, когда вы создадите maskrcnn объект. Можно опционально задать дополнительные сетевые свойства включая сетевой входной размер и размеры объединения ROI.

Подготовьте маску обучающие данные R-CNN

Загрузка данных

Чтобы обучить Маску R-CNN, вам нужны следующие данные.

ДанныеОписание
Изображение RGB

Изображения RGB, которые служат сетевыми входными параметрами в виде H-by-W-by-3 числовые массивы.

Например, это демонстрационное изображение RGB является модифицированным изображением от набора данных CamVid [2], который был отредактирован, чтобы удалить идентифицирующую персональную информацию.

RGB image of a street scene with vehicles and pedestrians

Ограничительные рамки основной истины

Ограничительные рамки для объектов в RGB отображают в виде NumObjects-by-4 матрицу со строками в формате [x y w h]).

Например, bboxes переменная показывает ограничительные рамки шести объектов в демонстрационном изображении RGB.

bboxes =

   394   442    36   101
   436   457    32    88
   619   293   209   281
   460   441   210   234
   862   375   190   314
   816   271   235   305

Метки экземпляра

Метка каждого экземпляра в виде NumObjects-by-1 представляет в виде строки вектор или NumObjects-by-1 массив ячеек из символьных векторов.)

Например, labels переменная показывает метки шести объектов в демонстрационном изображении RGB.

labels =

  6×1 cell array

    {'Person' }
    {'Person' }
    {'Vehicle'}
    {'Vehicle'}
    {'Vehicle'}
    {'Vehicle'}

Маски экземпляра

Маски для экземпляров объектов. Данные о маске прибывают в два формата:

  • Бинарные маски в виде логического массива размера H-by-W-by-NumObjects. Каждая маска является сегментацией одного экземпляра в изображении.

  • Многоугольник координирует в виде NumObjects-by-2 массив ячеек. Каждая строка массива содержит (x, y) координаты многоугольника вдоль контура одного экземпляра в изображении.

    Сеть Mask R-CNN требует бинарных масок, не координат многоугольника. Чтобы преобразовать координаты многоугольника в бинарные маски, используйте poly2mask функция. poly2mask функционируйте устанавливает пиксели, которые являются в многоугольнике к 1 и пиксели наборов вне многоугольника к 0. Этот код показывает, как преобразовать координаты многоугольника в masks_polygon переменная к бинарным маскам размера h-by-w-by-numObjects.

    denseMasks = false([h,w,numObjects]);
    for i = 1:numObjects
        denseMasks(:,:,i) = poly2mask(masks_polygon{i}(:,1),masks_polygon{i}(:,2),h,w);
    end

Например, этот монтаж показывает бинарные маски шести объектов в демонстрационном изображении RGB.

Six binary masks showing the segmentation of two pedestrians and four vehicles

Визуализируйте обучающие данные

Чтобы отобразить маски экземпляра по изображению, используйте insertObjectMask. Можно задать палитру так, чтобы каждый экземпляр появился в различном цвете. Этот пример кода показывает как отображение маски экземпляра в masks переменная по RGB отображает в im переменная с помощью lines палитра.

imOverlay = insertObjectMask(im,masks,'Color',lines(numObjects));
imshow(imOverlay);

Each pedestrian and vehicle has a unique falsecolor hue over the RGB image

Чтобы показать ограничительные рамки с метками по изображению, используйте showShape функция. Этот пример кода показывает, как показать помеченные прямоугольные формы с размером ограничительной рамки и данными о положении в bboxes переменная и данные о метке в labels переменная.

imshow(imOverlay)
showShape("rectangle",bboxes,"Label",labels,"Color","red");

Red rectangles labeled 'Pedestrian' and 'Vehicle' surround instances of each object

Считайте и измените размер данных

Используйте datastore, чтобы считать данные. Datastore должен возвратить данные как массив ячеек 1 на 4 в формате {изображения RGB, ограничительные рамки, метки, маски}. Размер изображений, ограничительных рамок и масок должен совпадать с входным размером сети. Если необходимо изменить размер данных, то можно использовать imresize изменить размер изображений RGB и масок, и bboxresize функция, чтобы изменить размер ограничительных рамок.

Для получения дополнительной информации смотрите Хранилища данных для Глубокого обучения (Deep Learning Toolbox).

Сформируйте мини-пакеты данных

Обучение сети Mask R-CNN требует пользовательского учебного цикла. Чтобы справиться с мини-пакетной обработкой наблюдений в пользовательском учебном цикле, создайте a minibatchqueue Объект (Deep Learning Toolbox) от datastore. minibatchqueue возразите данным бросков против dlarray Объект (Deep Learning Toolbox), который включает автоматическое дифференцирование в применении глубокого обучения. Если у вас есть поддерживаемый графический процессор, то minibatchqueue возразите также перемещает данные в графический процессор.

next (Deep Learning Toolbox) функция дает к следующему мини-пакету данных из minibatchqueue.

Обучите маску модель R-CNN

Обучите модель в пользовательском учебном цикле. Для каждой итерации:

  • Считайте данные для текущего мини-пакета с помощью next (Deep Learning Toolbox) функция.

  • Оцените градиенты модели с помощью dlfeval Функция (Deep Learning Toolbox) и пользовательская функция помощника, которая вычисляет градиенты и полную потерю для пакетов обучающих данных. Можно вычислить функции обучающих данных и возвратить информацию состояния сети с помощью forward функция.

  • Обновите сетевые настраиваемые параметры с помощью функции такой как adamupdate (Deep Learning Toolbox) или sgdmupdate (Deep Learning Toolbox).

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

Ссылки

[1] Он, Kaiming, Джорджия Гкайоксэри, Петр Доллар и Росс Джиршик. “Маска R-CNN”. ArXiv:1703.06870 [Cs], 24 января 2018. https://arxiv.org/pdf/1703.06870.

[2] Brostow, Габриэль Дж., Жюльен Фокер и Роберто Сиполья. “Семантические Классы объектов в Видео: База данных Основной истины Высокой четкости”. Буквы Распознавания образов 30, № 2 (январь 2009): 88–97. https://doi.org/10.1016/j.patrec.2008.04.005.

Смотрите также

Приложения

Функции

Объекты

Связанные примеры

Больше о

Для просмотра документации необходимо авторизоваться на сайте