主要内容

开始与面具R-CNN为实例分割

实例分割是增强类型的对象检测类型,用于为每个检测到的对象实例生成分段映射。实例分段将单个对象视为不同的实体,无论对象的类别如何。相比之下,语义分割认为与属于单个实体的同一类的所有对象。

有几种深度学习算法可以进行实例分割。一个流行的算法是Mask R-CNN,它扩展了Faster R-CNN网络,对检测到的物体进行像素级分割[1].掩模R-CNN算法可以容纳多个类和重叠对象。

有关如何训练Mask R-CNN的示例,请参见使用面膜R-CNN深度学习的实例分割

培训数据

要训练Mask R-CNN,您需要以下数据。

数据 描述
RGB Image.

作为网络输入的RGB图像指定为H-经过-W-3号数字阵列。

例如,该样本RGB图像是来自Camvid数据集的修改图像[2]这些信息已经过编辑,以删除个人身份信息。

街道场面的RGB图象与车辆和行人的

真实边界框

RGB图像中对象的边界框,指定为aNumObjects- × 4矩阵,行格式为[xywh])。

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

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- 1个字符串向量或aNumObjects-By-1个字符向量阵列。)

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

标签= 6×1个单元阵列{'person'} {'person'} {'车辆'} {'车辆'} {'车辆'} {'车辆'} {'车辆'}

实例的面具

对象实例的掩模。掩码数据有两种格式:

  • 二进制掩码,指定为逻辑大小H-经过-W-经过-NumObjects.每个蒙版是图像中一个实例的分割。

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

    面具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);结束

例如,这个蒙太奇显示了样本RGB图像中6个对象的二进制掩码。

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

可视化培训数据

要在图像上显示实例掩码,请使用insertObjectMask.您可以指定彩色映射,以便每个实例以不同的颜色出现。此示例代码显示了如何显示实例掩码面具的RGB图像我是变量使用彩色地图。

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

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

要在图像上显示带有标签的边界框,请使用ShowShape.函数。此示例代码显示如何显示标记的矩形形状,其中包含边界框大小和位置数据bboxes可变和标签数据标签变量。

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

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

数据进行预处理

格式化和调整数据

使用数据存储读取数据。数据存储必须以格式{RGB映像,边界框,标签,掩码}作为一个1-4个单元格数组返回数据。图像的大小,边界框和掩码必须与网络的输入大小匹配。如果您需要调整数据大小,那么您可以使用imresize.调整RGB图像和掩码的大小,以及bboxresize.调整边界框中的函数。

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

填写小批数据

训练一个Mask R-CNN网络需要一个定制的训练循环。要管理自定义培训循环中的小批观察数据,创建一个小公子(深度学习工具箱)来自数据存储的对象。的小公子对象将数据投入到adlarray.(深度学习工具箱)在深度学习应用程序中实现自动差异的对象。如果您有支持的GPU,那么金宝app小公子对象也将数据移动到GPU。

下一个(深度学习工具箱)方法生成下一个小批数据小公子

屏蔽R-CNN网络架构

掩模R-CNN网络由两个阶段组成。首先是区域提案网络(RPN),其预测基于锚盒的对象提案边界框。第二阶段是R-CNN检测器,其改进这些提案,对它们进行分类,并计算这些提案的像素级分段。

Mask R-CNN模型建立在Faster R-CNN模型的基础上,您可以使用它来创建Fasterrcnlayers..将ROI最大池化层替换为roialignlayer.提供更精确的亚像素级ROI池。Mask R-CNN网络还添加了一个用于像素级目标分割的Mask分支。有关Faster R-CNN网络的更多信息,请参见Getting Started with R-CNN, Fast R-CNN, and Faster R-CNN

这张图左边显示了一个改进的Faster R-CNN网络,右边显示了一个掩码分支。

Train Mask R-CNN网络

在自定义训练循环中训练模型。对于每次迭代:

  • 使用该数据读取当前迷你批次的数据下一个(深度学习工具箱)函数。

  • 使用该评估模型梯度dlfeval(深度学习工具箱)函数和一个自定义助手函数,该函数计算成批训练数据的梯度和总体损失。

  • 使用如下函数更新网络可学习参数adamupdate.(深度学习工具箱)或者sgdmupdate(深度学习工具箱)

有关如何使用经过训练的Mask R-CNN执行实例分割的示例,请参见使用面膜R-CNN深度学习的实例分割.在这个例子中,您可以选择使用CPU或单个GPU训练Mask R-CNN。

有关使用并行GPU处理训练掩模R-CNN的屏蔽R-CNN的示例,请参阅使用Mask R-CNN的多类实例分割

参考

[1] He, Kaiming, Georgia Gkioxari, Piotr Dollár, Ross Girshick。“面具R-CNN。”ArXiv: 1703.06870 (Cs),2018年1月24日。https://arxiv.org/pdf/1703.06870。

[2] Brostow, Gabriel J., Julien Fauqueur和Roberto Cipolla。视频中的语义对象类:高清晰度地面真相数据库模式识别字母30,不。2(2009年1月):88-97。https://doi.org/10.1016/j.patrec.2008.04.005。

另请参阅

应用程序

功能

对象

相关的例子

更多关于

外部网站