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

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

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

Для примера, который показывает, как обучить Маску R-CNN с помощью Computer Vision Toolbox™, смотрите, что Сегментация Экземпляра Мультикласса использует Маску 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

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

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

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

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

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

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

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

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

Для примера, который показывает, как обучить Маску R-CNN с помощью Computer Vision Toolbox, смотрите, что Сегментация Экземпляра Мультикласса использует Маску 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.

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

Приложения

Функции

Объекты

Похожие темы

Внешние веб-сайты