执行实例使用面具R-CNN分割
这个例子展示了如何细分个人人的实例和汽车使用多级面具提出卷积神经网络(R-CNN)。
实例的分割是计算机视觉技术检测和定位对象,同时生成一个分段映射每个检测到的实例。
这个例子首先展示了如何使用pretrained面具R-CNN执行实例分割,检测两类。然后,你可以下载一个数据集和训练一个多级面具R-CNN使用转移学习。
执行实例使用Pretrained面具R-CNN分割
指定dataFolder
的期望位置pretrained网络和数据。
dataFolder = fullfile (tempdir,“可可”);
下载pretrained R-CNN面具。网络存储为maskrcnn
对象。
trainedMaskRCNN_url =“//www.tatmou.com/金宝appsupportfiles/vision/data/maskrcnn_object_person_car_v2.mat”;downloadTrainedMaskRCNN (trainedMaskRCNN_url dataFolder);负载(fullfile (dataFolder“maskrcnn_object_person_car_v2.mat”));
读一个测试图像包含目标类的对象。
imt = imread (“visionteam.jpg”);
段对象及其面具使用segmentObjects
函数。的segmentObjects
函数对输入图像执行这些预处理步骤之前进行预测。
零中心使用可可的图像数据集的意思。
调整图像的输入规模网络,同时保持长宽比(信拳击)。
(面具,标签,分数,盒子)= segmentObjects(净、imt、阈值= 0.98);
通过覆盖检测可视化预测图像使用口罩insertObjectMask
函数。
overlayedImage = insertObjectMask (imt,面具);imshow (overlayedImage)
显示对象的边界框和标签。
showShape (“矩形”,收集(盒)、标签=标签,LineColor =“r”)
训练数据下载
创建目录来存储可可训练图像和注释数据。
imageFolder = fullfile (dataFolder,“图片”);captionsFolder = fullfile (dataFolder,“注释”);如果~存在(imageFolder“dir”mkdir (imageFolder) mkdir (captionsFolder)结束
可可2014训练图像数据集[2]包括82783个图像。注释数据包含至少五个标题对应每个图像。下载可可2014训练图像和字幕https://cocodataset.org/下载通过单击“2014训练图像”和“2014火车/ Val注释”链接,分别。图像文件提取到指定的文件夹imageFolder
。将注释文件解压到指定的文件夹captionsFolder
。
annotationFile = fullfile (captionsFolder,“instances_train2014.json”);str = fileread (annotationFile);
阅读和训练数据进行预处理
训练一个面具R-CNN,你需要这些数据。
RGB图像作为网络的输入,指定为H——- - - - - -W3数值数组。
边界框RGB图像中的对象,指定为NumObjects4矩阵,行格式(xywh])。
实例标签指定为NumObjects1字符串向量。
实例的面具。每个面具都是图像分割的一个实例。可可数据集使用多边形坐标格式化为指定对象实例NumObjects2细胞阵列。数组的每一行包含(x,y)坐标一个多边形的边界图像的一个实例。然而,本例中的面具R-CNN需要二进制面具指定为逻辑数组的大小H——- - - - - -W——- - - - - -NumObjects。
训练数据初始化参数
trainClassNames = [“人”,“汽车”];numClasses =长度(trainClassNames);imageSizeTrain = (800 800 3);
作为垫文件格式可可注释数据
MATLAB的可可API使您能够访问注释数据。MATLAB的可可API下载https://github.com/cocodataset/cocoapi通过单击“代码”按钮并选择“下载ZIP。”Extract thecocoapi-master
指定的文件夹目录及其内容dataFolder
。如果需要你的操作系统,编译gason解析器指令后的gason.m
文件内MatlabAPI
子目录。
指定的目录位置可可API MATLAB和添加的目录路径。
cocoAPIDir = fullfile (dataFolder,“cocoapi-master”,“MatlabAPI”);目录(cocoAPIDir);
指定的文件夹来存储垫文件。
unpackAnnotationDir = fullfile (dataFolder,“annotations_unpacked”,“matFiles”);如果~存在(unpackAnnotationDir“dir”mkdir (unpackAnnotationDir)结束
提取可可注释垫文件使用unpackAnnotations
helper函数,这是附加到这个例子作为支持文件。金宝app每个垫文件对应于一个单一的训练图像和包含文件名称、边界盒、标签、实例和实例面具为每个训练图像。函数对象实例指定为多边形坐标转换为二进制面具使用poly2mask
函数。
unpackAnnotations (trainClassNames annotationFile、imageFolder unpackAnnotationDir);
创建数据存储
面具R-CNN预计输入数据作为1-by-4单元阵列包含RGB训练图像边界盒、标签、实例和实例面具。
创建一个数据存储的文件和一个定制的阅读功能,cocoAnnotationMATReader
,读的内容打开注释垫文件,将灰度图像RGB训练,并返回数据作为1-by-4单元阵列所需的格式。自定义读取函数附加到这个例子作为支持文件。金宝app
ds = fileDatastore (unpackAnnotationDir,…ReadFcn = @ (x) cocoAnnotationMATReader (x, imageFolder));
预览转换数据存储返回的数据。
data =预览(ds)
data =1×4单元阵列{428×640×3 uint8}{16×4双}{16×1直言}{428×640×16个逻辑}
创建面具R-CNN网络层
面具R-CNN构建在一个更快的R-CNN ResNet-50基地网络。将学习pretrained面具R-CNN网络,使用maskrcnn
对象加载pretrained网络和定制网络新组类和输入的大小。默认情况下,maskrcnn
对象使用相同的锚箱与可可用于训练数据集。
网= maskrcnn (“resnet50-coco”、trainClassNames InputSize = imageSizeTrain)
网= maskrcnn属性:ModelName:“maskrcnn”类名:{‘人’‘汽车’}InputSize: [800 800 3] AnchorBoxes:[15×2双)
如果你想使用自定义锚箱具体的训练数据集,您可以估计锚箱使用estimateAnchorBoxes
函数。然后,指定锚箱使用AnchorBoxes
当你创建名称参数maskrcnn
对象。
列车网络的
指定的选项10个优化和训练网络时代。
指定ExecutionEnvironment
名称-值参数为“图形”
在GPU来训练。建议培训在GPU至少12 MB的可用内存。使用GPU需要并行计算工具箱™和CUDA NVIDIA GPU®®启用。有关更多信息,请参见GPU计算的需求(并行计算工具箱)。
选择= trainingOptions (“个”,…InitialLearnRate = 0.001,…LearnRateSchedule =“分段”,…LearnRateDropPeriod = 1,…LearnRateDropFactor = 0.95,…情节=“没有”,…动量= 0.9,…MaxEpochs = 10,…MiniBatchSize = 2,…BatchNormalizationStatistics =“移动”,…ResetInputNormalization = false,…ExecutionEnvironment =“图形”,…VerboseFrequency = 50);
训练面具R-CNN网络,设置doTraining
变量在下面的代码真正的
。列车网络使用trainMaskRCNN
函数。由于训练数据集类似于数据pretrained网络训练,你可以冻结的重量特征提取使用支柱FreezeSubNetwork
名称-值参数。
doTraining = true;如果doTraining[网,信息]= trainMaskRCNN (ds、净、期权,FreezeSubNetwork =“骨干”);modelDateTime =字符串(datetime (“现在”格式=“yyyy-MM-dd-HH-mm-ss”));保存(“trainedMaskRCNN——”+ modelDateTime +“.mat”,“净”);结束
使用训练网络,您可以执行实例分割测试图像,显示等部分执行实例使用Pretrained面具R-CNN分割。
引用
他[1],开明,格鲁吉亚Gkioxari,彼得亚雷美元,和罗斯Girshick。“R-CNN面具。“预印本,提交2018年1月24日。https://arxiv.org/abs/1703.06870。
[2],Tsung-Yi迈克尔·Maire哔叽Belongie,杂志刊登Bourdev,罗斯Girshick,詹姆斯·海斯Pietro Perona一起,天神Ramanan, c·劳伦斯Zitnick美元和彼得亚雷。“微软可可:常见的对象上下文中,“5月1日,2014年。https://arxiv.org/abs/1405.0312v3。
另请参阅
maskrcnn
|trainMaskRCNN
|segmentObjects
|变换
|insertObjectMask
相关的话题
- 开始使用面具R-CNN例如分割
- 深度学习在MATLAB(深度学习工具箱)
- 数据存储深度学习(深度学习工具箱)