主要内容

开始使用面具R-CNN例如分割

分割是一个增强的类型的对象实例检测,生成一个细分为每个对象的检测实例映射。作为不同实体的实例分割对单个对象,不管类的对象。相比之下,语义分割考虑同一个类的所有对象属于一个单一的实体。

面具R-CNN分割技术是一个流行的深度学习实例执行进行像素级分割检测到对象上[1]。面具R-CNN算法可以适应多个类和重叠的对象。

您可以创建一个pretrained面具R-CNN网络使用maskrcnn对象。MS-COCO上的网络训练数据集和可以检测到80个不同的对象类。执行实例分割,通过pretrained网络segmentObjects函数。

如果你想修改网络检测额外的类,或调整网络的其他参数,那么您可以执行转移学习。为例,展示了如何训练一个面具R-CNN,明白了执行实例使用面具R-CNN分割

面具R-CNN网络体系结构

面具R-CNN网络由两个阶段组成。第一阶段是一个地区建议网络(RPN),预测对象的建议基于锚盒子边界框。第二阶段是一个R-CNN探测器,改进这些建议,分类,计算这些建议进行像素级分割。

项作为特征提取器的一部分,其次是对象分类,收益率边界框和输入图像的语义分割面具

面具R-CNN模型构建在快R-CNN模型。面具R-CNN取代了ROI马克斯池层R-CNN的更快roiAlignLayer提供更准确的亚像素级的ROI池。面具R-CNN网络还增加了一个面具分支为像素级对象分割。更多信息越快R-CNN网络,看到的开始使用R-CNN、快速R-CNN和R-CNN更快

这个图显示了一个修改过的更快R-CNN网络左边和右边一个面具分支。

快R-CNN网络连接到一个面具分支使用一个ROI调整层

配置一个面具R-CNN传输网络学习,指定类名和锚盒子当您创建一个maskrcnn对象。您可以指定额外的网络属性包括网络输入大小和ROI池大小。

准备面具R-CNN训练数据

加载数据

训练一个面具R-CNN,你需要以下数据。

数据 描述
RGB图像

RGB图像作为网络输入,指定为H——- - - - - -W3数值数组。

例如,这个示例从CamVid RGB图像是一个修改图像数据集[2]被编辑删除个人身份信息。

RGB图像的街景车辆和行人

真实边界框

边界框RGB图像中的对象,指定为一个NumObjects4矩阵,行格式(xywh])。

例如,bboxes变量显示6个样本中的对象的边界框RGB图像。

32 bboxes 36 = 394 442 101 436 457 88 619 293 209 281 460 441 210 234 862 375 190 314 816 271 235 305

实例的标签

标签的每个实例指定为一个NumObjects1向量或一个字符串NumObjects1单元阵列特征向量)。

例如,标签变量显示六中的对象的标签样本RGB图像。

标签= 6×1单元阵列{‘人’}{‘人’}{‘汽车’}{‘汽车’}{‘汽车’}{‘汽车’}

实例的面具

面具的实例对象。面具的数据有两种格式:

  • 二进制面具,指定为一个逻辑数组的大小H——- - - - - -W——- - - - - -NumObjects。每个面具都是图像分割的一个实例。

  • 多边形坐标,作为指定NumObjects2单元阵列。数组的每一行包含(x,y)坐标一个多边形的边界图像的一个实例。

    面具R-CNN网络需要二进制面具,不是多边形坐标。多边形坐标转换为二进制口罩,使用poly2mask函数。的poly2mask函数集在多边形内的像素1并设置像素在多边形外0。这个代码显示了如何将多边形坐标masks_polygon变量二进制面具的大小h——- - - - - -w——- - - - - -numObjects

    denseMasks = false ([h, w, numObjects]);i = 1: numObjects denseMasks(:,:我)= poly2mask (masks_polygon{我}(:1),masks_polygon{我}(:,2),h, w);结束

例如,这个剪辑显示6个样本中的对象的二进制面具RGB图像。

6个二进制面具显示两个行人和四个细分的车辆

创建数据存储,读取数据

使用一个数据存储中读取数据。数据存储必须返回数据作为1-by-4单元阵列的格式{RGB图像边界框,标签,口罩}。您可以创建一个数据存储在这种格式使用这些步骤:

  1. 创建一个imageDatastore返回RGB图像数据

  2. 创建一个boxLabelDatastore返回标签作为一个边界框的数据和实例两列单元阵列

  3. 创建一个imageDatastore并指定一个自定义函数,它返回读面具数据作为二进制矩阵

  4. 合并这三个数据存储使用结合函数

图像的大小、边界框和面具必须输入匹配网络的大小。如果你需要调整的数据,那么您可以使用imresize调整RGB图像和面具,bboxresize函数来调整边界框。

有关更多信息,请参见数据存储深度学习(深度学习工具箱)

想象训练数据

面具在图像显示实例,使用insertObjectMask。您可以指定一个colormap这样每个实例出现在不同的颜色。此示例代码显示了如何显示实例面具面具变量的RGB图像即时通讯变量使用colormap。

imOverlay = insertObjectMask (im,面具,颜色= (numObjects)行);imshow (imOverlay);

每个行人和车辆都有一个独特的falsecolor RGB图像色调

显示图像的边界框标签,使用showShape函数。此示例代码显示了如何显示标记矩形形状和边界框的大小和位置数据bboxes变量和标签的数据标签变量。

imshow imOverlay showShape (“矩形”、bboxes标签=标签颜色=“红色”);

红色矩形标记“行人”和“车辆”环绕每个对象的实例

火车面具R-CNN模型

火车一个面具R-CNN网络使用trainMaskRCNN函数。例如,看到的执行实例使用面具R-CNN分割

引用

他[1],开明,格鲁吉亚Gkioxari,彼得亚雷美元,和罗斯Girshick。“面具R-CNN。”ArXiv: 1703.06870 (Cs)2018年1月24日。https://arxiv.org/pdf/1703.06870。

加布里埃尔·[2]Brostow J。,Julien Fauqueur, and Roberto Cipolla. "Semantic Object Classes in Video: A High-Definition Ground Truth Database." Pattern Recognition Letters 30, no. 2 (January 2009): 88–97. https://doi.org/10.1016/j.patrec.2008.04.005.

另请参阅

应用程序

功能

相关的例子

更多关于