Сегментация образца является расширенным типом обнаружения объектов, который генерирует карту сегментации для каждого обнаруженного образца объекта. Сегментация образцов рассматривает отдельные объекты как отдельные сущности, независимо от класса объектов. Напротив, семантическая сегментация рассматривает все объекты одного класса как принадлежащие одной сущности.
Для выполнения сегментации образца существует несколько алгоритмов глубокого обучения. Одним из популярных алгоритмов является Mask R-CNN, который расширяется в сети Faster R-CNN для выполнения сегментации на пиксельном уровне обнаруженных объектов [1]. Алгоритм Mask R-CNN может включать несколько классов и перекрывающиеся объекты.
Пример, показывающий, как обучить Mask R-CNN, см. в разделе Сегментация образце с использованием Mask R-CNN Deep Learning.
Чтобы обучить Mask R-CNN, вам нужны следующие данные.
Данные | Описание |
---|---|
Изображение RGB | Изображения RGB, которые служат входами сети, заданные как H -by- W -by-3 числовых массивов. Например, эта выборка изображения RGB является измененным изображением из набора данных CamVid [2], которое было отредактировано для удаления персональной информации.
|
Ограничительные рамки с основной истиной | Ограничивающие прямоугольники для объектов в изображениях RGB, определенных как матрица <reservedrangesplaceholder4>-by-4, со строками в формате [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0> ]). Для примера, 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
функция для изменения размера ограничивающих рамок.
Для получения дополнительной информации смотрите Datastores for Глубокое Обучение (Deep Learning Toolbox).
Для настройки сети Mask R-CNN требуется пользовательский цикл обучения. Чтобы управлять мини-пакетированием наблюдений в пользовательском цикле обучения, создайте minibatchqueue
(Deep Learning Toolbox) объект из datastore. The minibatchqueue
объект переносит данные в dlarray
(Deep Learning Toolbox) объект, который включает автоматическую дифференциацию в приложениях глубокого обучения. Если у вас есть поддерживаемый графический процессор, то minibatchqueue
объект также перемещает данные в графический процессор.
next
(Deep Learning Toolbox) функция приводит к следующему мини-пакету данных из minibatchqueue
.
Сеть Mask R-CNN состоит из двух этапов. Первый - это сеть предложений областей (RPN), которая предсказывает ограничивающие рамки предложений объектов на основе анкерных блоков. Второй этап является детектором R-CNN, который уточняет эти предложения, классифицирует их и вычисляет сегментацию пиксельного уровня для этих предложений.
Модель Mask R-CNN основана на модели Faster R-CNN, которую можно создать используя fasterRCNNLayers
. Замените максимальный слой объединения ROI на roiAlignLayer
это обеспечивает более точное объединение ROI уровня субпикселя. Сеть Mask R-CNN также добавляет ветвь маски для сегментации объекта уровня пикселя. Для получения дополнительной информации о сети Faster R-CNN, смотрите Начало работы с R-CNN, Fast R-CNN и Faster R-CNN.
Эта схема показывает измененную сеть Faster R-CNN слева и маскирующую ветвь справа.
Обучите модель в пользовательском цикле обучения. Для каждой итерации:
Считайте данные для текущего мини-пакета, используя next
(Deep Learning Toolbox) функция.
Оцените градиенты модели, используя dlfeval
(Deep Learning Toolbox) и пользовательская вспомогательная функция, которая вычисляет градиенты и общие потери для пакетов обучающих данных.
Обновите сетевые настраиваемые параметры с помощью функции, такой как adamupdate
(Deep Learning Toolbox) или sgdmupdate
(Deep Learning Toolbox).
Для примера, который показывает, как выполнить сегментацию образца с помощью обученного Mask R-CNN, смотрите Сегментацию образца с использованием Mask R-CNN Deep Learning. В этом примере можно опционально обучить Mask R-CNN с помощью центрального процессора или одного графического процессора.
Пример настройки Mask R-CNN с помощью параллельной обработки графический процессор см. в Multiclass Instance Segmentation с использованием Mask R-CNN.
[1] Он, Кайминг, Джорджия Гкиоксари, Пётр Доллар и Росс Гиршик. «Маска R-CNN». ArXiv:1703.06870 [Cs], 24 января 2018 года. https://arxiv.org/pdf/1703.06870.
[2] Brostow, Gabriel J., Julien Fauqueur, and Roberto Cipolla. Semantic Object Classes in Video: A High-Definition Ground Truth Database (неопр.) (недоступная ссылка). Pattern Recognition Letters 30, № 2 (январь 2009): 88-97. https://doi.org/10.1016/j.patrec.2008.04.005.
roiAlignLayer
| minibatchqueue
(Deep Learning Toolbox)