Segmentação de imagens Matlab (U-Net)

Rede Unet

Unet é uma estrutura de rede neural que combina uma estrutura de codificação-decodificação e é uma rede de segmentação semântica. É amplamente utilizado em aplicações relacionadas à segmentação de imagens médicas. O uso do matlab pode realizar rapidamente a definição e o treinamento da estrutura de rede.

Preparação do conjunto de dados

Prepare a imagem a ser treinada e a imagem rotulada correspondente, armazene a imagem e a imagem rotulada em diretórios diferentes e use o mesmo nome de arquivo para correspondência um a um.

%% 数据集加载
dataSetDir = fullfile('./data');
imageDir = fullfile(dataSetDir,'trainingImages');
labelDir = fullfile(dataSetDir,'trainingLabels');

Defina o nome da categoria da classificação de pixel e o valor de brilho de cada categoria na imagem rotulada

classNames = ["triangle","background"];
labelIDs   = [255 0];

 Gerar objeto de conjunto de dados de treinamento

imds = imageDatastore(imageDir);
pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);
% ds = pixelLabelImageDatastore(imds,pxds);
ds = combine(imds,pxds);

definição de rede

imageSize = [32 32];
numClasses = 2;
lgraph = unetLayers(imageSize, numClasses)

treinar a rede

options = trainingOptions('sgdm', ...
    'InitialLearnRate',1e-3, ...
    'MaxEpochs',20, ...
    'VerboseFrequency',10);

net = trainNetwork(ds,lgraph,options)

Exporte o modelo no formato ONNX e use ferramentas como opencv ou tensorrt para implantação de aplicativos

exportONNXNetwork(net,'myunet.onnx');

teste

pic = imread('.\data\testImages\image_002.jpg');
out2 = predict(net,pic);

subplot(1,2,1)
imshow(pic)
subplot(1,2,2)
imshow(out2(:,:,1))

Código completo e dados de teste

https://download.csdn.net/download/Ango_/16138054

 

Acho que você gosta

Origin blog.csdn.net/Ango_/article/details/115252616
Recomendado
Clasificación