www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I5_06_3_3_semanticSeg_Unet.m

    %% U-Net偵傛傞僙儅儞僥傿僢僋僙僌儊儞僥乕僔儑儞

%% 弶婜壔
clear; close all ;clc; rng('default');

%% 妛廗僨乕僞偺弨旛
dataSetDir = fullfile(toolboxdir('vision'),'visiondata','triangleImages');
imageDir = fullfile(dataSetDir,'trainingImages');
imds = imageDatastore(imageDir);

%% 儔儀儖僨乕僞偺弨旛
classNames = ["triangle","background"];
labelIDs   = [255 0];
labelDir = fullfile(dataSetDir,'trainingLabels');
pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);

%% 妛廗僨乕僞偲儔儀儖僨乕僞偺壜帇壔
I = read(imds);
C = read(pxds);

I = imresize(I,5);
L = imresize(uint8(C),5);
figure, imshowpair(I,L,'montage')

%% 妛廗僨乕僞偺弨旛
trainingData = pixelLabelImageDatastore(imds,pxds)

%% U-Net偺弨旛
imageSize = [32 32];
numClasses = 2;
lgraph = unetLayers(imageSize, numClasses)
analyzeNetwork(lgraph);

%% 妛廗僆僾僔儑儞
opts = trainingOptions('sgdm', ...
    'InitialLearnRate',1e-3, ...
    'MaxEpochs',20, ...
    'Plots','training-progress');

%% 妛廗
net = trainNetwork(trainingData,lgraph,opts);

%% 僥僗僩夋憸偱昡壙
testImage = imread('triangleTest.jpg');
imshow(testImage)
C = semanticseg(testImage,net);
B = labeloverlay(testImage,C);
imshow(B)

%%
% Copyright 2018 The MathWorks, Inc.