我尝试通过在MATLAB上使用深度学习对图像进行分割。我已经读过这篇文章https://www.mathworks.com/help/deeplearning/ref/alexnet.html 但是,此准则仅适用于路径中带有标签(文件夹名称)的给定图像。
我想做这样的事情:我有两个图像文件夹-原始图像和标签图像(分段图像)。在这种情况下,如何与alexnet或googlenet一起使用?
对不起,我这里没有代码,因为我仍然无法想象怎么做:( 任何有执行此任务的经验的人,请写出指南!
这是我的示例-但出现错误,无法运行:
clc;
clearvars;
close all;
dataSetDir = fullfile('C:\Data');
imageDir=fullfile(dataSetDir, 'orinals');
labelDir=fullfile(dataSetDir,'labels');
imds=imageDatastore(imageDir);
imdsl=imageDatastore(labelDir);
classNames=["skin","background"];
labelIDs=[1 0];
pxds=pixelLabelDatastore(labelDir,classNames,labelIDs);
I=read(imds);
C=read(pxds);
I=imresize(I,5);
L=imresize(uint8(C),5);
alnet = alexnet;
layers = alnet.Layers;
opts = trainingOptions('sgdm', ...
'MiniBatchSize',10, ...
'MaxEpochs',6, ...
'Shuffle','every-epoch', ...
'InitialLearnRate',1e-4, ...
'ValidationFrequency',3, ...
'Verbose',false, ...
'Plots','training-progress');
trainingData=pixelLabelImageSource(imds,pxds);
tbl=countEachLabel(trainingData);
totalNumberOfPixels=sum(tbl.PixelCount);
frequency=tbl.PixelCount/totalNumberOfPixels;
classWeights=1./frequency;
layers(end)=pixelClassificationLayer('ClassNames',tbl.Name,'ClassWeights',classWeights);
net=trainNetwork(trainingData,layers,opts);
save skincnn.mat;