基于this示例,我正在尝试在matlab上使用深度学习对图像进行分类。
我创建了一个带有X和O的图像数据集以区分它们,现在我试图更改代码以训练自己的模型,我改为:
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
'nndatasets','XODataset');
imds = imageDatastore(digitDatasetPath, ...
'IncludeSubfolders',true,'LabelSource','foldernames');
figure;
perm = randperm(20,4);
for i = 1:4
subplot(2,2,i);
imshow(imds.Files{perm(i)});
end
labelCount = countEachLabel(imds);
img = readimage(imds,1);
size(img)
numTrainFiles = 16;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
layers = [] % as the example I linked
net = trainNetwork(imdsTrain,layers,options);
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation);
但是当我进入trainNetwork()
时,出现以下错误:
使用trainNetwork时出错(第165行)。图片尺寸超出预期:所有图片的尺寸必须相同。
但是我所有的图像都是28x28像素,例如示例。我搜索了一个解决方案,并找到了this代码来收集图像信息。使用此功能,我注意到我的图像之一是“真彩色”,其他图像是“灰度”,这可能是问题所在吗?如何将文件夹中的所有图像从“真彩色”转换为“灰度”?