healthy_path = 'Healthy\';
mild_DR_path = 'Mild DR\';
moderate_DR_path = 'Moderate DR\';
proliferate_DR_path = 'Proliferate DR\';
severe_DR_path = 'Severe DR\';
healthy_images = imageDatastore(healthy_path);
mild_DR_images = imageDatastore(mild_DR_path);
moderate_DR_images = imageDatastore(moderate_DR_path);
proliferate_DR_images = imageDatastore(proliferate_DR_path);
severe_DR_images = imageDatastore(severe_DR_path);
figure;
subplot(2,3,1);
imshow(readimage(healthy_images,1));
title('Healthy');
subplot(2,3,2);
imshow(readimage(mild_DR_images,1));
title('Mild DR');
subplot(2,3,3);
imshow(readimage(moderate_DR_images,1));
title('Moderate DR');
subplot(2,3,4);
imshow(readimage(proliferate_DR_images,1));
title('Poliferate DR');
subplot(2,3,5);
imshow(readimage(severe_DR_images,1));
title('Severe DR');
net = vgg16;
healthy_features = activations(net, healthy_images, 'fc7');
mild_DR_features = activations(net, mild_DR_images, 'fc7');
moderate_DR_features = activations(net, moderate_DR_images, 'fc7');
proliferate_DR_features = activations(net, proliferate_DR_images, 'fc7');
severe_DR_features = activations(net, severe_DR_images, 'fc7');
disp('Size of healthy_features:');
disp(size(healthy_features));
disp('Size of mild_DR_features:');
disp(size(mild_DR_features));
disp('Size of moderate_DR_features:');
disp(size(moderate_DR_features));
disp('Size of proliferate_DR_features:');
disp(size(proliferate_DR_features));
disp('Size of severe_DR_features:');
disp(size(severe_DR_features));
min_size = min([size(healthy_features, 1), size(mild_DR_features, 1), size(moderate_DR_features, 1), size(proliferate_DR_features, 1), size(severe_DR_features, 1)]);
healthy_features = healthy_features(1:min_size, :);
mild_DR_features = mild_DR_features(1:min_size, :);
moderate_DR_features = moderate_DR_features(1:min_size, :);
proliferate_DR_features = proliferate_DR_features(1:min_size, :);
severe_DR_features = severe_DR_features(1:min_size, :);
X_train = [healthy_features, mild_DR_features, moderate_DR_features, proliferate_DR_features, severe_DR_features];
Y_train = [ones(min_size, 1),2*ones(min_size, 1),3*ones(min_size, 1), 4*ones(min_size, 1), 5*ones(min_size, 1)];
svm_model = fitcecoc(X_train, Y_train);
test_path = 'path/to/test';
test_images = imageDatastore(test_path);
test_features = activations(net, test_images, 'fc7');
Y_pred = predict(svm_model, test_features);
figure;
subplot(1,2,1);
imshow(readimage(test_images,1));
title(['True Label: ' num2str(Y_test(1))]);
subplot(1,2,2);
imshow(readimage(test_images,2));
title(['Predicted Label: ' num2str(Y_pred(1))]);
Y_test = test_images.Labels;
accuracy = sum(Y_pred == Y_test) / numel(Y_test);
disp(['Accuracy: ' num2str(accuracy)]);