Error while trying to train network

조회 수: 5 (최근 30일)
Khalifa Alsuwaidi
Khalifa Alsuwaidi 2023년 4월 12일
답변: Khalifa Alsuwaidi 2023년 4월 12일
I've been trying to make a system that will read images from an image store to classify images of solar panels as soiled or not.
I can't seem to be able to make the training work. The GUI starts but no iterations are done.
Code below:
infolder = 'C:\Users\Potato\Desktop\CDP\Solar_Panel_Soiling_Image_dataset\PanelImages';
imgFiles = dir([infolder,filesep,'\*.jpg']) ;
imds = imageDatastore(infolder,'IncludeSubfolders',true,'LabelSource','foldernames');
figure;
j= 0
for i = 1:20
j = j +1
subplot(4,5,j);
imshow(imds.Files{i}); % display the first 20 images
end
figure;
perm = randperm(10000,20);
for i = 1:20
subplot(4,5,i);
imshow(imds.Files{perm(i)});
end
labelCount = countEachLabel(imds)
img = readimage(imds,1);
size(img)
%% Training and Validation Sets
numTrainFiles = 5000;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
%% Network Archeticture
layers = [
imageInputLayer([192 192 3])
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32,'Padding','same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(1)
softmaxLayer
classificationLayer];
%% Training Options
options = trainingOptions('sgdm', ...
'InitialLearnRate',0.01, ...
'MaxEpochs',4, ...
'Shuffle','every-epoch', ...
'ValidationData',imdsValidation, ...
'ValidationFrequency',30, ...
'Verbose',false, ...
'Plots','training-progress');
net = trainNetwork(imdsTrain,layers,options);
%% Validation Set Classification and Accuracy
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation)
Shows me this error:
Operation terminated by user during matlab.io.datastore.internal.fileset.CompressedFileSet/getFilesAsCellStr
In matlab.io.datastore.internal.fileset.ResolvedFileSet/getFiles (line 530)
files = getFilesAsCellStr(fs, ii);
In matlab.io.datastore.FileSet/getFiles (line 568)
files = fs.InternalFileSet.getFiles(ii);
In matlab.io.datastore.splitter.WholeFileCustomReadFileSetSplitter/getFilesAsCellStr (line 111)
filesAsCellStr = getFiles(splitter.Files, indices);
In matlab.io.datastore.ImageDatastore/nextFilesToRead (line 814)
files = imds.Splitter.getFilesAsCellStr(idxes);
In matlab.io.datastore.ImageDatastore/preFetchRead (line 603)
[filesToRead, idxes] = nextFilesToRead(imds);
In matlab.io.datastore.ImageDatastore/read (line 68)
[data, info] = preFetchRead(imds);
In nnet.internal.cnn.datastore.ImageDatastoreMiniBatchDatastore/read (line 39)
[data,info] = self.imds.read();
In nnet.internal.cnn.dispatcher.MiniBatchDatastoreDispatcher/readData (line 306)
[data,info] = read(this.Datastore);
In nnet.internal.cnn.dispatcher.MiniBatchDatastoreDispatcher/next (line 179)
[miniBatchData, miniBatchResponse] = readData(this);
In nnet.internal.cnn.util.ValidationStatelessPredictStrategy/computeLossAndMetric (line 57)
[X, T, idx] = data.next();
In nnet.internal.cnn.util.ValidationStatelessPredictStrategy/predictAndComputeMetrics (line 39)
metrics = computeLossAndMetric(this, net, data, "accuracy", "validationAccuracy");
In nnet.internal.cnn.util.ValidationReporter/addValidationToSummary (line 123)
metrics = this.PredictStrategy.predictAndComputeMetrics( net, this.Data );
In nnet.internal.cnn.util.ValidationReporter/computeIteration (line 74)
this.addValidationToSummary(summary, net);
In nnet.internal.cnn.util.VectorReporter/computeAndReport (line 68)
feval( method, this.Reporters{i}, varargin{:} );
In nnet.internal.cnn.util.VectorReporter/computeIteration (line 24)
computeAndReport( this, 'computeIteration', summary, network );
In nnet.internal.cnn.Trainer/train (line 148)
reporter.computeIteration( this.Summary, net );
In nnet.internal.cnn.trainNetwork.doTrainNetwork (line 108)
trainedNet = trainer.train(trainedNet, trainingDispatcher);
In trainNetwork (line 189)
[trainedNet, info] = nnet.internal.cnn.trainNetwork.doTrainNetwork(factory,varargin{:});
In test (line 68)
net = trainNetwork(imdsTrain,layers,options);
I've tried changing different variables to fix this with no luck. I'm a beginner so take it easy.
  댓글 수: 3
Khalifa Alsuwaidi
Khalifa Alsuwaidi 2023년 4월 12일
It is just stuck in training iteration 1, nothing happens
Matt J
Matt J 2023년 4월 12일
See if your datasore can read anything:
X=read(imdsTrain)

댓글을 달려면 로그인하십시오.

채택된 답변

Khalifa Alsuwaidi
Khalifa Alsuwaidi 2023년 4월 12일
Thanks for your help guys. Fixed the folder tree and made some tweaks. It works!
infolder = 'C:\Users\Potato\Desktop\CDP\Solar_Panel_Soiling_Image_dataset\train';
imgFiles = dir([infolder,filesep,'\*.jpg']) ;
imds = imageDatastore(infolder,'IncludeSubfolders',true,'LabelSource','foldernames');
figure;
perm = randperm(22000,20);
for i = 1:20
subplot(4,5,i);
imshow(imds.Files{perm(i)});
end
labelCount = countEachLabel(imds)
img = readimage(imds,1);
size(img)
%% Training and Validation Sets
numTrainFiles = 5000;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
%% Network Archeticture
layers = [
imageInputLayer([192 192 3])
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32,'Padding','same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(2)
softmaxLayer
classificationLayer];
%% Training Options
options = trainingOptions('sgdm', ...
'InitialLearnRate',0.01, ...
'MaxEpochs',4, ...
'Shuffle','every-epoch', ...
'ValidationData',imdsValidation, ...
'ValidationFrequency',30, ...
'Verbose',false, ...
'Plots','training-progress');
net = trainNetwork(imdsTrain,layers,options);
%% Validation Set Classification and Accuracy
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation)

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Deep Learning Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by