Сегментация экземпляра является расширенным типом обнаружения объектов, которое генерирует карту сегментации для каждого обнаруженного экземпляра объекта. Сегментация экземпляра обрабатывает отдельные объекты как отличные сущности, независимо от класса объектов. В отличие от этого семантическая сегментация рассматривает все объекты того же класса как принадлежащий одной сущности.
Несколько алгоритмов глубокого обучения существуют, чтобы выполнить сегментацию экземпляра. Один популярный алгоритм является Маской 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 отображают в виде 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
.
Сеть 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 слева и ветвь маски справа.
Обучите модель в пользовательском учебном цикле. Для каждой итерации:
Считайте данные для текущего мини-пакета с помощью 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.
roiAlignLayer
| minibatchqueue
(Deep Learning Toolbox)