一、前言
使用基于多类掩码区域的卷积神经网络 (R-CNN) 对人和汽车的各个实例进行分段。实例分割是一种计算机视觉技术,您可以在其中检测和定位对象,同时为每个检测到的实例生成分割图。
首先演示如何使用检测两个类的预训练掩码 R-CNN 执行实例分段。然后,您可以选择下载数据集并使用迁移学习训练多类掩码 R-CNN。
二、使用预训练掩码 R-CNN 执行实例分段
指定为预训练网络和数据的所需位置。下载预训练的掩码 R-CNN。读取包含目标类对象的测试图像。
使用 segmentObjects 函数分割对象及其掩码。该函数在执行预测之前对输入图像执行这些预处理步骤。segmentObjects 使用 COCO 数据集均值将图像定零。将图像大小调整为网络的输入大小,同时保持纵横比(信箱)。通过使用插入对象掩码函数在图像上叠加检测到的蒙版来可视化预测。显示对象上的边界框和标签。
三、下载训练数据
创建目录以存储 COCO 训练图像和注释数据。
COCO 2014 训练图像数据集 [2] 由 82,783 张图像组成。注释数据至少包含五个与每个图像对应的标题。分别单击“2014 Train Images”和“2014 Train/Val 注释”链接,从 https://cocodataset.org/#download 下载 COCO 2014 培训图像和说明。将图像文件解压缩到 指定的文件夹中。将批注文件解压缩到 指定的文件夹中。
四、读取和预处理训练数据
初始化训练数据参数,将 COCO 注释数据格式化为 MAT 文件。指定用于存储 MAT 文件的文件夹。创建数据存储。
掩码 R-CNN 期望输入数据为包含 RGB 训练图像、边界框、实例标签和实例掩码的 1×4 单元数组。
使用自定义读取函数 c 创建文件数据存储,该函数读取解压缩的注记 MAT 文件的内容,将灰度训练图像转换为 RGB,并以所需格式将数据作为 1 x 4 单元格数组返回。自定义读取函数作为支持文件附加到此示例。预览转换后的数据存储返回的数据。
五、创建掩膜 R-CNN 网络图层
Mask R-CNN建立在具有ResNet-50基础网络的Faster R-CNN之上。要在预训练的掩码 R-CNN 网络上传输学习,请使用该对象加载预训练网络,并为新的类集和输入大小自定义网络。默认情况下,对象使用的锚框与使用 COCO 数据集进行训练所用的锚框相同。
六、训练网络
指定 SGDM 优化选项,并训练网络 10 个周期。