主要内容

deeplabv3plusLayers

创建DeepLab v3+卷积神经网络用于语义图像分割

描述

例子

layerGraph= deeplabv3plusLayers (图象尺寸numClasses网络返回一个DeepLab v3+层,具有指定的基本网络,类的数量和图像大小。

layerGraph= deeplabv3plusLayers (___、“DownsamplingFactor”值)另外设置下采样因子(输出步幅)[1]要么816.降采样因子设置DeepLav v3+编码器部分对输入图像的降采样量。

例子

全部折叠

创建基于ResNet-18的DeepLab v3+网络。

imageSize = [480 640 3];numClasses = 5;网络=“resnet18”;lgraph = deeplabv3plusLayers(imageSize,numClasses,network,...“DownsamplingFactor”16);

显示网络。

analyzeNetwork (lgraph)

使用图像数据存储加载三角形数据集图像。数据存储包含200个随机三角形的灰度图像。每张图像都是32 * 32。

dataSetDir = fullfile(toolboxdir(“愿景”),“visiondata”“triangleImages”);imageDir = fullfile(dataSetDir,“trainingImages”);imds = imageDatastore(imageDir);

使用像素标签数据存储加载三角形数据集像素标签。

labelDir = fullfile(dataSetDir,“trainingLabels”);classNames = [“三角形”“背景”];labelIDs = [255 0];pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);

创建DeepLab v3+网络。

imageSize = [256 256];numClasses = numel(classNames);lgraph = deeplabv3plusLayers(imageSize,numClasses,“resnet18”);

结合图像和像素标签数据进行训练,并应用预处理变换来调整训练图像的大小。

CDS = combine(imds,pxds);tds = transform(cd, @(data)preprocessTrainingData(data,imageSize));

指定培训选项。减小迷你批处理大小以减少内存使用。

opts = trainingOptions(“个”...“MiniBatchSize”8...“MaxEpochs”3);

培训网络。

net = trainNetwork(tds,lgraph,opts);
单GPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是34.79% | | 0.9817 | 0.0100 | | 2 | 50 | 00:00:23 | 99.02% | 0.0261 | 0.0100 | | 3 | 75 | 00:00:31 | 99.16% | 0.0211 | 0.0100 ||========================================================================================|

读取一个测试图像。

I = imread(“triangleTest.jpg”);

将测试图像的大小调整为输入图像大小除以32的因子,以便测试图像中的三角形大致等于训练期间三角形的大小。

I = imresize(I,“规模”imageSize. / 32);

分割图像。

C = semanticseg(I,net);

显示结果。

B = labeloverlay(I,C);图imshow (B)

金宝app支持功能

函数数据= preprocessTrainingData(数据,imageSize)调整训练图像和相关像素标签图像的大小。数据{1}= imresize(数据{1},imageSize);数据{2}= imresize(数据{2},imageSize);将灰度输入图像转换为RGB,用于ResNet-18%需要RGB图像输入。数据{1}= repmat(数据{1},1,1,3);结束

输入参数

全部折叠

网络输入图像大小,指定为a:

  • 格式为[的2元向量高度宽度].

  • 格式为[的3元素向量高度宽度3.].第三个元素3对应RGB。

网络要分类的类数,指定为大于1的整数。

基础网络,指定为resnet18(深度学习工具箱)resnet50(深度学习工具箱)mobilenetv2(深度学习工具箱)xception(深度学习工具箱),或inceptionresnetv2(深度学习工具箱).您必须安装相应的网络加载项。

输出参数

全部折叠

DeepLab v3+网络,返回为用于语义图像分割的卷积神经网络。该网络使用编码器-解码器架构、扩张卷积和跳过连接到分段图像。你必须使用trainNetwork(深度学习工具箱)函数(需要深度学习工具箱™)来训练网络,然后才能使用网络进行语义分割。

算法

  • 当你使用xception(深度学习工具箱)mobilenetv2(深度学习工具箱)深度可分离卷积用于atrous空间金字塔池(ASPP)和解码器子网络。对于所有其他基本网络,使用卷积层。

  • DeepLab v3+的实现在ASPP中不包括全局平均池层。

参考文献

[1]陈丽丽,朱友友,G.帕潘德里欧,F.施洛夫,H.亚当。用于语义图像分割的Atrous可分离卷积编码器-解码器。计算机视觉- ECCV 2018, 833 - 851。慕尼黑,德国:ECCV, 2018。

扩展功能

版本历史

R2019b引入

另请参阅

对象

功能