Сегментация экземпляра - это расширенный тип обнаружения объекта, который генерирует карту сегментации для каждого обнаруженного экземпляра объекта. Сегментация экземпляров рассматривает отдельные объекты как отдельные объекты независимо от класса объектов. Напротив, семантическая сегментация учитывает все объекты того же класса, что и принадлежащие к одному объекту.
Существует несколько алгоритмов глубокого обучения для выполнения сегментации экземпляра. Одним из популярных алгоритмов является Mask R-CNN, который расширяется в сети Faster R-CNN для выполнения сегментации на уровне пикселей на обнаруженных объектах [1]. Алгоритм Mask R-CNN может вместить несколько классов и перекрывающихся объектов.
Пример, показывающий, как обучить маску R-CNN, см. в разделе Сегментация экземпляра с использованием маски R-CNN Deep Learning.
Для обучения маски 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");
Используйте хранилище данных для чтения данных. Хранилище данных должно возвращать данные в виде массива ячеек 1 на 4 в формате {изображения RGB, ограничивающие рамки, метки, маски}. Размер изображений, ограничивающих рамок и масок должен соответствовать входному размеру сети. Если необходимо изменить размер данных, можно использовать imresize
для изменения размеров RGB-изображений и масок и bboxresize
для изменения размеров ограничивающих прямоугольников.
Дополнительные сведения см. в разделе Хранилища данных для глубокого обучения (панель инструментов глубокого обучения).
Для обучения сети Mask R-CNN требуется индивидуальный цикл обучения. Для управления мини-пакетами наблюдений в пользовательском учебном цикле создайте minibatchqueue
(Deep Learning Toolbox) объект из хранилища данных. 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 также добавляет ветвь маски для сегментации объектов на уровне пикселей. Дополнительные сведения о более быстрой сети R-CNN см. в разделе Начало работы с R-CNN, Fast R-CNN и Faster R-CNN.
На этой схеме показана модифицированная сеть более быстрого R-CNN слева и ветвь маски справа.
Обучение модели в индивидуальном цикле обучения. Для каждой итерации:
Считывание данных для текущего мини-пакета с помощью next
(Deep Learning Toolbox).
Оцените градиенты модели с помощью dlfeval
(Deep Learning Toolbox) и пользовательская вспомогательная функция, которая вычисляет градиенты и общие потери для пакетов данных обучения.
Обновление сетевых обучаемых параметров с помощью такой функции, как adamupdate
(инструментарий глубокого обучения) или sgdmupdate
(инструментарий глубокого обучения).
Пример выполнения сегментации экземпляра с использованием обученной маски R-CNN см. в разделе Сегментация экземпляра с использованием маски R-CNN Deep Learning. В этом примере можно дополнительно обучить маску R-CNN с помощью CPU или одного графического процессора.
Пример обучения маскирующей R-CNN с использованием параллельной обработки GPU см. в разделе Сегментация многоклассовых экземпляров с использованием маскирующей R-CNN.
[1] Он, Кайминг, Джорджия Гкиоксари, Петр Доллар и Росс Гиршик. «Маска R-CNN». ArXiv:1703.06870 [С], 24 января 2018 года. https://arxiv.org/pdf/1703.06870.
[2] Бростоу, Габриэль Дж., Жюльен Фокер и Роберто Чиполла. «Классы семантических объектов в видео: база данных истинности земли высокой четкости». Письма 30, № 2 (январь 2009 года): 88-97. https://doi.org/10.1016/j.patrec.2008.04.005.
roiAlignLayer
| minibatchqueue
(инструментарий для глубокого обучения)