%% raw history of commands from seminar clear clc net = alexnet; plot(net) analyzeNetwork(net) ls cd custom_images ls cd test ls %% reading image into matlab im = imread('img2.JPG'); image(im) imshow(im) net.classify(im) net net.Layers net.Layers(1) net.Layers(end) net.Layers(end).Classes net.Layers(2) net.Layers(2).Weights net.Layers(3) net.Layers(4) net.Layers(5) net.Layers(6) %% how to classify many images for i = 1:8 im(:,:,:,i) = imread(sprintf('img%d.JPG',i)); end size(im) net.classify(im) %% the better way how to read and deal with images imgds = imageDatastore("D:\dokumenti\HPC\neural_network_seminar\neural_network_training_sets\custom_images\test\") % how to read an image from datastore im1 = read(imgds); image(im1) im1 = read(imgds); image(im1) im1 = readimage(imgds,3); image(im1) % how to see all or part of images that is in datastore montage(imgds) montage(imgds,'Size',[2 2]) net.Layers(1) cd ../test2 %% if image size does not fit to neural network input imgds2 = imageDatastore('D:\dokumenti\HPC\neural_network_seminar\neural_network_training_sets\custom_images\test2\'); net.classify(imgds2) % to resize one image: im1 = read(imgds2); imres = imresize(im1,[227 227]); image(imres) % how to resize a whole datastore augs = augmentedImageDatastore([227 227],imgds2) classify([227 227],augs) net.classify([227 227],augs) classify(net,augs) montage(augs) montage(imgds2) imgds = imageDatastore("D:\dokumenti\HPC\neural_network_seminar\neural_network_training_sets\custom_images\test3"); augs = augmentedImageDatastore([227 227],imgds,'ColorPreprocessing','gray2rgb'); classify(net,augs) ls('D:\dokumenti\HPC\neural_network_seminar\neural_network_training_sets\custom_images\test3\') digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ... 'nndemos','nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); figure numImages = 10000; perm = randperm(numImages,20); for i = 1:20 subplot(4,5,i); imshow(imds.Files{perm(i)}); drawnow; end imds im = read(imds); size(im) options = trainingOptions('sgdm') my_network options = trainingOptions('sgdm'); options my_network ValidationData: [] ValidationFrequency: 50 %% next example net = alexnet; deepNetworkDesigner layer_1 layers_1 layers_1(end-2) layers_1(20) save alexnet_with_weights_modified_for_5_classes.mat layers_1 help alexnet layers = alexnet('Weights', 'none'); layers(3) layers(2) layers = alexnet('Weights', 'none'); deepNetworkDesigner whos save alexnet_without_learnables.mat layers_3 ls *.mat clear load fine_tuning_example whos net = flowernet; directory = "./neural_network_training_sets/Linnaeus 5 256X256/" imds = imageDatastore(directory+"test","IncludeSubfolders",... true,'LabelSource','foldernames'); augsTest = augmentedImageDatastore([227 227],imds,'ColorPreprocessing','gray2rgb'); load alexnet_with_weights_modified_for_5_classes.mat load fine_tuning_example2.mat imds = imageDatastore(directory+"test","IncludeSubfolders",... true,'LabelSource','foldernames'); directory = "./neural_network_training_sets/Linnaeus 5 256X256/" imds = imageDatastore(directory+"test","IncludeSubfolders",... true,'LabelSource','foldernames'); realClass = imds.Labels; load alexnet_with_weights_modified_for_5_classes.mat load fine_tuning_example2.mat [predClass,scores] = flowernet.classify(augsTest); confusionchart(realClass,predClass); prob = nnz(realClass==predClass)/numel(realClass); realClass(1:3) size(realClass) nnz(realClass==predClass) nnz(realClass==predClass)/numel(realClass) %% how to look on wrong classes imgds = imageDatastore("./neural_network_training_sets/custom_images"); imgds = imageDatastore("./test/*.jpg"); auds = augmentedImageDatastore([227 227],imgds), [preds,variety]=classify(net,auds) net.classify(auds) indexes_of_wrong_images = (realClass!=predClass); indexes_of_wrong_images = (realClass~=predClass); find(indexes_of_wrong_images) imds = imageDatastore(directory+"test","IncludeSubfolders",... true,'LabelSource','foldernames'); directory = "./neural_network_training_sets/Linnaeus 5 256X256/" imds = imageDatastore(directory+"test","IncludeSubfolders",... true,'LabelSource','foldernames'); augsTest = augmentedImageDatastore([227 227],imds,'ColorPreprocessing','gray2rgb'); image(readimage(imds,39)) [predClass,scores] = flowernet.classify(augsTest); im = (readimage(imds,39)); [predClass,scores] = flowernet.classify(imresize(im,[227 227])); predClass bar(scores) figure,image(im) 75/23 75/12 65*2.54 %-- 07.03.2023 10:45 --% doc trainingOptions %-- 07.03.2023 14:14 --% trainNetwork clc my_network trainingOptions options my_network clc my_network edit my_network help splitEachLabel options my_network doc trainingOptions ls nano my_network edit my_network %-- 13.03.2023 08:20 --%