主要内容

语义分段网络的代码生成

这个例子展示了一个使用深度学习的图像分割应用程序的代码生成。它使用Codegen.命令生成一个MEX函数,该函数对用于图像分割的深度学习网络SegNet[1]的DAG Network对象执行预测。

第三方先决条件

要求

此示例生成CUDA MEX并具有以下第三方要求。

  • CUDA®使能NVIDIA®GPU和兼容的驱动程序。

可选的

对于非mex构建,如静态、动态库或可执行文件,本例有以下附加要求。

验证GPU环境

使用coder.checkGpuInstall(GPU编码器)验证运行此示例所需的编译器和库是否已正确设置。

envcfg = coder.gpuenvconfig(“主机”);envcfg.deeplibtarget ='cudnn';envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

分割网络

SegNet[1]是一种用于语义图像分割的卷积神经网络(CNN)。它是在CamVid[2]数据集上训练并导入MATLAB®进行推理的深度编解码器多类像素分割网络。该SegNet[1]是训练分割像素属于11类,包括天空,建筑,Pole,道路,人行道,树,标志符号,栅栏,汽车,行人,和自行车。

有关使用CamVid[2]数据集在MATLAB中训练语义分割网络的信息,请参见利用深度学习的语义分割(电脑视觉工具箱)

segnet_predict.入口点函数

segnet_predict.m.入口点函数采用图像输入并通过使用保存在的深度学习网络对图像进行预测segnet.mat.文件。该函数加载网络对象segnet.mat.文件到持久性变量中my并在后续的预测调用中重用持久变量。

类型('segnet_predict.m'的)
oction out = segnet_predict(in)%#codegen%copyry 2018-2021 Mathworks,Inc.持久性MyNet;如果是isempty(mynet)mynet = coder.loaddeeplearningnetwork('segnet.mat');输入OUT中的末端%通过=预测(MYNET,IN);

获取预制SEGNET DAG网络对象

net = getsegnet();

DAG网络包含91层,包括卷积,批量标准化,池,卸井和像素分类输出层。使用分析函数显示深度学习网络架构的交互式可视化。

分析(网);

运行MEX代码生成

为此产生CUDA代码segnet_predict.m.为MEX目标创建一个GPU代码配置对象,并将目标语言设置为c++。使用编码器。DeepLearningConfig(GPU编码器)函数创建一个CUDNN.深度学习配置对象并将其分配给DeepLearningConfigGPU代码配置对象的属性。跑过Codegen.指定输入大小为[360,480,3]的命令。该值对应于的输入层大小SEGNET.

cfg = coder.gpuconfig('mex');cfg.targetlang ='c ++';cfg.deeplearningconfig = coder.deeplearningconfig('cudnn');Codegen.-Config.CFG.segnet_predict.-  args.{ONE(360,480,3,'UINT8')}-报告
代码成功成功:查看报告

运行生成的mex.

加载并显示输入图像。称呼segnet_predict_mex.在输入图像上。

IM = imread(“gpucoder_segnet_image.png”);imshow (im);

predict_scores = segnet_predict_mex (im);

predict_scores变量是一个三维矩阵,其具有与每个类的像素-Wise预测分数对应的11个通道。通过使用最大预测分数来计算频道以获取像素天线标签。

[~, argmax] = max (predict_scores [], 3);

覆盖输入图像上的分段标签并显示分段区域。

类= [“天空”“建筑”“极”“路”“路面”“树”“signsymbol”“栅栏”“汽车”“行人”“骑自行车的人”];cmap = camvidcolormap();sementedimage = labeloverlay(Im,Argmax,'colormap',cmap);图imshow(sementedimage);PixellabelColorbar(CMAP,课程);

参考文献

Badrinarayanan, Vijay, Alex Kendall, Roberto Cipolla。“SegNet:一种用于图像分割的深度卷积编码器-解码器架构”。arXiv预印本arXiv: 1511.00561,2015年。

[2]荆棘,加布里埃尔J.,Julien Fauuaryur和Roberto Cipolla。“视频中的语义对象类:高清地面真相数据库。”模式识别字母2009年第30卷第2期88-97页。

相关的话题