语义分割使用扩张的隆起
火车语义分割网络使用扩张的隆起。
语义分割图像的每个像素分类网络,导致图像分割的类。应用语义分割包括自主驾驶的道路分割为医学诊断和癌症细胞分割。欲了解更多,请看开始使用语义分割使用深度学习(计算机视觉工具箱)。
语义分割网络像DeepLab[1]充分利用通过卷积扩张(也称为深黑色的卷曲),因为他们可以增加图层的接受域的面积(输入层可以看到)没有增加参数的数量和计算。
负荷训练数据
32-by-32三角形的示例使用一个简单的数据集图像出于演示目的。附带的数据集包括像素标签地面实况数据。加载训练数据使用imageDatastore
和一个pixelLabelDatastore
。
dataFolder = fullfile (toolboxdir (“愿景”),“visiondata”,“triangleImages”);imageFolderTrain = fullfile (dataFolder,“trainingImages”);labelFolderTrain = fullfile (dataFolder,“trainingLabels”);
创建一个imageDatastore
的图像。
imdsTrain = imageDatastore (imageFolderTrain);
创建一个pixelLabelDatastore
地面真理像素标签。
一会= [“三角形”“背景”];标签= (255 0);pxdsTrain = pixelLabelDatastore (labelFolderTrain、类名、标签)
pxdsTrain = PixelLabelDatastore属性:文件:{200}x1细胞类名:{2 x1细胞}ReadSize: 1 ReadFcn: @readDatastoreImage AlternateFileSystemRoots: {}
创建语义分割网络
这个例子使用一个简单的语义分割网络基于扩张的隆起。
创建一个数据源为训练数据和像素计数为每个标签。
ds =结合(imdsTrain pxdsTrain);台= countEachLabel (pxdsTrain)
台=2×3表名字PixelCount __________ ImagePixelCount * * *售予{“三角形”}10326 2.048 e + 05年{‘背景’}1.9447 e + 05年2.048 e + 05
大多数为背景像素标签。这类失衡偏见学习过程有利于统治阶级的。为了解决这个问题,使用类权重平衡类。您可以使用几种方法来计算类权重。一个常见的方法是逆频率加权类权重类频率的倒数。这种方法增加了重量给下类表示。使用逆频率加权计算类权重。
numberPixels =总和(tbl.PixelCount);频率=(资源。PixelCount / numberPixels;classWeights = 1。/频率;
创建一个网络通过使用一个图像像素分类输入层的大小对应于输入图像的大小。接下来,指定三个街区的卷积,批正常化,和ReLU层。对于每一个卷积层,3×3的过滤器指定32随着膨胀因素和垫的输入,所以他们是相同的大小输出通过设置“填充”
选项“相同”
。对像素进行分类,包括卷积的一层K1×1的卷积,K是类的数量,其次是softmax层和pixelClassificationLayer
逆向类权重。
inputSize = [32 32 1];filterSize = 3;numFilters = 32;numClasses =元素个数(类名);层= [imageInputLayer inputSize convolution2dLayer (filterSize numFilters,“DilationFactor”,1“填充”,“相同”)batchNormalizationLayer reluLayer convolution2dLayer (filterSize numFilters,“DilationFactor”2,“填充”,“相同”)batchNormalizationLayer reluLayer convolution2dLayer (filterSize numFilters,“DilationFactor”4“填充”,“相同”numClasses) batchNormalizationLayer reluLayer convolution2dLayer (1) softmaxLayer pixelClassificationLayer (“类”一会,“ClassWeights”classWeights)];
列车网络的
指定培训选项。
选择= trainingOptions (“个”,…“MaxEpochs”,100,…“MiniBatchSize”,64,…“InitialLearnRate”1 e - 3);
列车网络使用trainNetwork
。
网= trainNetwork (ds、层、期权);
培训在单CPU。初始化输入数据规范化。| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | |时代迭代时间| Mini-batch | Mini-batch |基地学习| | | | (hh: mm: ss) | | |损失精度率| | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 | 1 | 00:00:02 | 91.62% | 1.6825 | 0.0010 | | 17 | 50 | 00:00:25 | 88.56% | 0.2393 | 0.0010 | | 100 | | 00:00:48 | 92.08% | 0.1672 | 0.0010 | | 150 | | 00:01:10 | 93.17% | 0.1472 | 0.0010 | 67 | 200 | | 00:01:32 | 94.15% | 0.1313 | 0.0010 | 84 | 250 | | 00:01:54 | 94.47% | 0.1167 | 0.0010 | 100 | 300 | | 00:02:15 | 95.04% | 0.1100 | 0.0010 | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |培训完成:马克思时代完成。
测试网络
负载测试数据。创建一个imageDatastore
的图像。创建一个pixelLabelDatastore
地面真理像素标签。
imageFolderTest = fullfile (dataFolder,“testImages”);imdsTest = imageDatastore (imageFolderTest);labelFolderTest = fullfile (dataFolder,“testLabels”);pxdsTest = pixelLabelDatastore (labelFolderTest、类名、标签);
使用测试数据做出预测和训练网络。
pxdsPred = semanticseg (imdsTest净,“MiniBatchSize”32岁的“WriteLocation”,tempdir);
运行的语义分割网络- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 100张图片处理。
评估预测精度evaluateSemanticSegmentation
。
指标= evaluateSemanticSegmentation (pxdsPred pxdsTest);
评估语义分割结果- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *选定指标:全球准确性、类准确性,借据,加权借据,BF的分数。* 100(加工)图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU _______ MeanBFScore * * *…………0.95237 0.97352 - 0.72081 0.92889 - 0.46416
在语义分割评估网络的更多信息,见evaluateSemanticSegmentation
(计算机视觉工具箱)。
段新形象
读取和显示测试图像triangleTest.jpg
。
imgTest = imread (“triangleTest.jpg”);图imshow (imgTest)
段测试图像使用semanticseg
使用和显示结果labeloverlay
。
C = semanticseg (imgTest,净);B = labeloverlay (imgTest C);图imshow (B)
另请参阅
pixelLabelDatastore
(计算机视觉工具箱)|pixelLabelImageDatastore
(计算机视觉工具箱)|semanticseg
(计算机视觉工具箱)|labeloverlay
(图像处理工具箱)|countEachLabel
(计算机视觉工具箱)|pixelClassificationLayer
(计算机视觉工具箱)|trainingOptions
|trainNetwork
|evaluateSemanticSegmentation
(计算机视觉工具箱)|convolution2dLayer
相关的话题
- 语义分割使用深度学习
- 多光谱图像的语义分割使用深度学习
- 开始使用语义分割使用深度学习(计算机视觉工具箱)
- 标签像素为语义分割(计算机视觉工具箱)
- Pretrained深层神经网络