使用Alexnet / Googlenet等在MATLAB上进行图像分割

时间:2019-01-03 13:05:48

标签: matlab deep-learning

我尝试通过在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;

0 个答案:

没有答案