Miltary Target Classification in MSTAR Dataset using MATLAB
                    Version 1.0.0 (8.66 MB) by  
                  Fazal
                
                
                  Image Processing
                
                  
              % Step 1: Load and Preprocess the Dataset
trainFolder = 'E:\Project\3 Vehicles\TRAIN DATA';  % Update with the path to the "train" folder
testFolder = 'E:\Project\3 Vehicles\TEST DATA';    % Update with the path to the "test" folder
% Load the training dataset and label based on folder names (train folder)
imdsTrainVal = imageDatastore(trainFolder, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
% Convert the images to grayscale (if not already grayscale) and resize to 128x128
imdsTrainVal.ReadFcn = @(x) imresize(imread(x), [128 128]);
% Split the dataset into 80% training and 20% validation
[imdsTrain, imdsValidation] = splitEachLabel(imdsTrainVal, 0.8, 'randomized');
% Step 2: Define the CNN Architecture
layers = [
    imageInputLayer([128 128 1])  % Grayscale images of size 128x128 with 1 channel
    % First convolutional layer and ReLU activation
    convolution2dLayer(3, 16, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    % First max pooling layer
    maxPooling2dLayer(2, 'Stride', 2)
    % Second convolutional layer and ReLU activation
    convolution2dLayer(3, 32, 'Padding', 'same')
    batchNormalizationLayer
    reluLayer
    % Second max pooling layer
    maxPooling2dLayer(2, 'Stride', 2)
    % Fully connected layer
    fullyConnectedLayer(64)
    reluLayer
    % Output layer (3 classes: BMP2, BTR70, T72)
    fullyConnectedLayer(3)
    softmaxLayer
    classificationLayer
];
% Step 3: Specify Training Options
options = trainingOptions('sgdm', ...
    'MaxEpochs', 15, ...            % Number of epochs
    'MiniBatchSize', 32, ...        % Mini-batch size
    'InitialLearnRate', 0.001, ...  % Learning rate
    'ValidationData', imdsValidation, ...
    'ValidationFrequency', 10, ...  % Validate every 10 iterations
    'Verbose', false, ...
    'Plots', 'training-progress');  % Display training progress
% Step 4: Train the CNN
net = trainNetwork(imdsTrain, layers, options);
% Step 5: Evaluate the Model
YPred = classify(net, imdsValidation);   % Predict the validation set
YValidation = imdsValidation.Labels;     % True labels
% Calculate accuracy
accuracy = mean(YPred == YValidation);
disp(['Validation accuracy: ', num2str(accuracy * 100), '%']);
% Confusion matrix for performance evaluation
confusionchart(YValidation, YPred);
% Step 6: Test the Model (using the test folder)
% Load test images from the "test" folder
imdsTest = imageDatastore(testFolder, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
imdsTest.ReadFcn = @(x) imresize(imread(x), [128 128]);
% Classify the test set images
YPredTest = classify(net, imdsTest);
YTest = imdsTest.Labels;  % True labels for test images
% Calculate test accuracy
testAccuracy = mean(YPredTest == YTest);
disp(['Test accuracy: ', num2str(testAccuracy * 100), '%']);
% Confusion matrix for test set performance evaluation
confusionchart(YTest, YPredTest);
% Step 7: Visualize Some Test Results
% Randomly select 9 images from the test set to visualize
numImagesToShow = 20;  % Number of images to display
idx = randperm(length(imdsTest.Files), numImagesToShow);  % Randomly select images
figure;
for i = 1:numImagesToShow
    subplot(5, 4, i);
    % Load and preprocess the image
    img = readimage(imdsTest, idx(i));
    imgResized = imresize(img, [128 128]);  % Ensure resizing
    % Classify the image
    [label, score] = classify(net, imgResized);
    % Display the image and the predicted label
    imshow(img);
    title(['Predicted: ', char(label), ' (', num2str(max(score) * 100, '%.2f'), '%)']);
end
% Step 8: Save the Trained Model
save('E:\Project\3 Vehicles\Custom CNN method\TrainedModel.mat', 'net');  % Save the trained model
Cite As
Fazal (2025). Miltary Target Classification in MSTAR Dataset using MATLAB (https://au.mathworks.com/matlabcentral/fileexchange/172985-miltary-target-classification-in-mstar-dataset-using-matlab), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
              Created with
              R2019a
            
            
              Compatible with any release
            
          Platform Compatibility
Windows macOS LinuxTags
Acknowledgements
Inspired by: ChatGPT Generated MATLAB program
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
| Version | Published | Release Notes | |
|---|---|---|---|
| 1.0.0 | 
