Error while trying to train network

3 visualizzazioni (ultimi 30 giorni)
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 Commenti
Khalifa Alsuwaidi
Khalifa Alsuwaidi il 12 Apr 2023
It is just stuck in training iteration 1, nothing happens
Matt J
Matt J il 12 Apr 2023
See if your datasore can read anything:
X=read(imdsTrain)

Accedi per commentare.

Risposta accettata

Khalifa Alsuwaidi
Khalifa Alsuwaidi il 12 Apr 2023
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)

Più risposte (0)

Categorie

Scopri di più su Deep Learning Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by