Сегментация экземпляра является расширенным типом обнаружения объектов, которое генерирует карту сегментации для каждого обнаруженного экземпляра объекта. Сегментация экземпляра обрабатывает отдельные объекты как отличные сущности, независимо от класса объектов. В отличие от этого семантическая сегментация рассматривает все объекты того же класса как принадлежащий одной сущности.
R-CNN маски является популярным методом сегментации экземпляра глубокого обучения, который выполняет сегментацию пиксельного уровня на обнаруженных объектах [1]. Маска алгоритм R-CNN может вместить несколько классов и перекрывающихся объектов.
Можно создать предварительно обученную сеть Mask R-CNN с помощью maskrcnn
объект. Сеть обучена на наборе данных MS-COCO и может обнаружить объекты 80 различных классов. Чтобы выполнить сегментацию экземпляра, передайте предварительно обученную сеть segmentObjects
функция.
Если вы хотите изменить сеть, чтобы обнаружить дополнительные классы или настроить другие параметры сети, то можно использовать обучение с переносом. Для примера, который показывает, как обучить Маску R-CNN, смотрите, Выполняют Сегментацию Экземпляра Используя Маску R-CNN.
Сеть Mask R-CNN состоит из двух этапов. Первая стадия является сетью предложения по области (RPN), которая предсказывает объектные ограничительные рамки предложения на основе полей привязки. Второй этап является детектором R-CNN, который совершенствовал эти предложения, классифицирует их и вычисляет сегментацию пиксельного уровня для этих предложений.
Маска сборки модели 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 слева и ветвь маски справа.
Чтобы сконфигурировать сеть Mask R-CNN для передачи обучения, задайте имена классов и поля привязки, когда вы создадите maskrcnn
объект. Можно опционально задать дополнительные сетевые свойства включая сетевой входной размер и размеры объединения ROI.
Чтобы обучить Маску R-CNN, вам нужны следующие данные.
Данные | Описание |
---|---|
Изображение RGB | Изображения RGB, которые служат сетевыми входными параметрами в виде H-by-W-by-3 числовые массивы. Например, это демонстрационное изображение RGB является модифицированным изображением от набора данных CamVid [2], который был отредактирован, чтобы удалить идентифицирующую персональную информацию.
|
Ограничительные рамки основной истины | Ограничительные рамки для объектов в RGB отображают в виде NumObjects-by-4 матрицу со строками в формате [x y w h]). Например, 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 = 6×1 cell array {'Person' } {'Person' } {'Vehicle'} {'Vehicle'} {'Vehicle'} {'Vehicle'} |
Маски экземпляра | Маски для экземпляров объектов. Данные о маске прибывают в два формата:
Например, этот монтаж показывает бинарные маски шести объектов в демонстрационном изображении RGB. |
Чтобы отобразить маски экземпляра по изображению, используйте insertObjectMask
. Можно задать палитру так, чтобы каждый экземпляр появился в различном цвете. Этот пример кода показывает как отображение маски экземпляра в masks
переменная по RGB отображает в im
переменная с помощью lines
палитра.
imOverlay = insertObjectMask(im,masks,'Color',lines(numObjects));
imshow(imOverlay);
Чтобы показать ограничительные рамки с метками по изображению, используйте showShape
функция. Этот пример кода показывает, как показать помеченные прямоугольные формы с размером ограничительной рамки и данными о положении в bboxes
переменная и данные о метке в labels
переменная.
imshow(imOverlay) showShape("rectangle",bboxes,"Label",labels,"Color","red");
Используйте 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
.
Обучите модель в пользовательском учебном цикле. Для каждой итерации:
Считайте данные для текущего мини-пакета с помощью 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.
maskrcnn
| minibatchqueue
(Deep Learning Toolbox)