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