Segmentación de imágenes de Matlab (U-Net)

Red Unet

Unet es una estructura de red neuronal que combina una estructura de codificación-descodificación y es una red de segmentación semántica. Es ampliamente utilizado en aplicaciones relacionadas con la segmentación de imágenes médicas. El uso de matlab puede realizar rápidamente la definición y el entrenamiento de la estructura de la red.

Preparación del conjunto de datos

Prepare la imagen que se va a entrenar y la imagen etiquetada correspondiente, almacene la imagen y la imagen etiquetada en diferentes directorios y use el mismo nombre de archivo para la correspondencia uno a uno.

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

Defina el nombre de categoría de la clasificación de píxeles y el valor de brillo de cada categoría en la imagen etiquetada

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

 Generar objeto de conjunto de datos de entrenamiento

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

definición de red

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

entrenar la red

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

net = trainNetwork(ds,lgraph,options)

Exporte el modelo en formato ONNX y use herramientas como opencv o tensorrt para la implementación de aplicaciones

exportONNXNetwork(net,'myunet.onnx');

prueba

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 y datos de prueba

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

 

Supongo que te gusta

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