一、前言
此示例展示了如何使用基于多类掩码区域的卷积神经网络 (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 培训图像和说明。将图像文件解压缩到 指定的文件夹中。将批注文件解压缩到 指定的文件夹中。
四、读取和预处理训练数据
要训练掩码 R-CNN,您需要这些数据。
-
用作网络输入的 RGB 图像,指定为 H ×W-by-3 数字数组。
-
RGB 图像中对象的边界框,指定为 NumObjects-by-4 矩阵,行格式为 [x y w h])。
-
实例标签,指定为 NumObjects-by-1 字符串向量。
-
实例掩码。每个蒙版都是图像中一个实例的分割。COCO 数据集使用格式化为 NumObjects-by-2 单元格数组的多边形坐标指定对象实例。数组的每一行都包含沿图像中一个实例边界的多边形的 (x,y) 坐标。但是,此示例中的掩码 R-CNN 需要将二进制掩码指定为大小为 H-by-W-by-NumObjects 的逻辑数组。
初始化训练数据参数,将 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 个周期。
七、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab使用多类掩码区域的卷积神经网络对人和汽车的各个实例进行分段资源-CSDN文库