Unexpected image size: All images must have the same size.

Illustration
Andre-Brandao - 2021-06-01T12:52:22+00:00
Question: Unexpected image size: All images must have the same size.

Hi, I'm having some problems with a bench of chest xray images. I tryed to use the code from the link below, but it did not work.   https://www.mathworks.com/matlabcentral/answers/385472-error-in-image-size   Error using trainNetwork (line 165)   Unexpected image size: All images must have the same size.   Error in chestXray1 (line 49)   net = trainNetwork(imdsTrain,layers,options);     inputSize = [224 224 1]; numClasses = 2; layers = [ imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]; options = trainingOptions('sgdm', ... 'MaxEpochs',3, ... 'ValidationData',imdsValidation, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options);  

Expert Answer

Profile picture of Kshitij Singh Kshitij Singh answered . 2025-11-20

You can use augmentedImageDataStore to resize all images to same size.
 
Use the following code for your problem:
 
dataChest = fullfile('/Users/andrebr4/Documents/MATLAB/chestXray/chest_xray');
imds = imageDatastore(dataChest, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

%%  Dividir o conjunto de dados em cada categoria
numTrainingFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainingFiles,'randomize');


%%%%%%%code for resizing
inputSize=[224 224 1];
imdsTrain=augmentedImageDatastore(inputSize, imdsTrain,'ColorPreprocessing','rgb2gray');

imdsValidation=augmentedImageDatastore(inputSize, imdsValidation,'ColorPreprocessing','rgb2gray');



%%  Configurar a rede neural
inputSize = [224 224 1];
numClasses = 2;

layers = [
    imageInputLayer(inputSize)
    convolution2dLayer(5,20)
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer];

%%  Opções de treino
options = trainingOptions('sgdm', ...
    'MaxEpochs',5, ...
    'ValidationData',imdsValidation, ...
    'ValidationFrequency',30, ...
    'Verbose',false, ...
    'Plots','training-progress');

%% Treinar a rede neural
net = trainNetwork(imdsTrain,layers,options);

%%  Executar rede treinada no conjunto de teste
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;

%% Calcular a precisão
accuracy = sum(YPred == YValidation)/numel(YValidation)


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!