for k = 1:fileNumber
currentImage = fullfile(imageList(k).folder, imageList(k).name);
img = imread(currentImage);
labelName = classify(DaveNet, img);
switch labelName
case 'Anisotropy'
movefile(currentImage, AnisotropyClassificationPath);
case 'Isotropy'
movefile(currentImage, IsotropyClassificationPath);
case 'Filler'
movefile(currentImage, FillerClassificationPath);
otherwise
movefile(currentImage, BadCropsClassificationPath);
end
end
imds = imageDatastore(TrainingDatasetPath, 'IncludeSubfolders',true,...
'LabelSource','foldernames');
labelCount = countEachLabel(imds)
numTrainFiles = 500;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
layers = [
imageInputLayer([227 227 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
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 64, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 128, 'Padding', 'same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(4)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm','InitialLearnRate',0.001, ...
'MaxEpochs', 5,'Shuffle','every-epoch', ...
'ValidationData',imdsValidation,'ValidationFrequency',30, ...
'Verbose',false, 'Plots','training-progress');
net = trainNetwork(imdsTrain, layers, options);
YPred = classify(net, imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation)
0 Comments
Sign in to comment.