Managing medical image classification experiments

Example of how to use MATLAB Experiment Manager to test different classifiers for skin lesion classification using transfer learning.
Updated 23 Jun 2021

View Managing medical image classification experiments on File Exchange

Managing medical image classification experiments with MATLAB Experiment Manager App

This repository shows an example of how to use MATLAB Experiment Manager for a medical image classification task.

Experiment objective

To test the best combination of pretrained deep learning model and optimizer for a binary (malignant or benign) skin lesion classification task using transfer learning.

Common components


Annotated images1 from the ISIC 2016 challenge, Task 3 (Lesion classification) dataset, consisting of 900 dermoscopic lesion images in JPEG format for training and validation, distributed in two classes (727 images were labeled as ‘benign’, 173 as ‘malignant’) plus 379 test images of the exact same format as the training data, and associated ground truth for all images.

Common hyperparameters

  • Dataset partition (e.g., 70% for training, 30% for validation)
  • Loss function
  • Mini-batch size
  • Initial learning rate
  • Learning rate schedule
  • Number of epochs
  • Validation patience
  • Validation frequency
  • Performance metrics

Preprocessing scripts

  • Image resizing (to the size expected by the input layer of each model)
  • Image augmentation (e.g., translation, scaling and rotation)

Variable sets

A total of nine (3 x 3) combinations of:

  • Model: ResNet-18, GoogLeNet or SqueezeNet
  • Optimizer: ‘adam’, ‘sgdm’, or ‘rmsprop’


Suggested steps

  1. Download or clone the repository.
  2. Open MATLAB.
  3. Edit the contents of the dataFolder variable in the experiment1_setup.mlx file to reflect the absolute path to your selected dataset2.
  4. Open the Experiment Manager app (you can type experimentmanager in the MATLAB Command Window or select the app from the "APPS" ribbon).
  5. Select the "New Project" option and click on the "Create" button.
  6. On the next screen, select the "Image Classification Using Transfer Learning" option and click on the "ADD" button.
  7. Specify a folder for your project.
  8. Edit the textbox containing the name of the Setup Function to reflect the name experiment1_setup.
  9. Configure (i.e., edit manually) the hyperparameters table to reflect your choice of Solver (["adam" "sgdm" "rmsprop]) and Network (["squeezenet" "googlenet" "resnet18"]) (see figure below).

  1. Copy the resulting experiment1_setup.mlx file to the project folder created by the Experiment Manager app.
  2. (Optionally) click the "Use Parallel" button to run experiments in parallel.
  3. Click the "Run" button and watch the progress bars change as the different trials are run.
  4. Once the experiment concludes, explore/sort/filter/annotate the results.
  5. Save and close the project.

Additional remarks

  • You are encouraged to expand and adapt the example to your needs.
  • The choice of pretrained networks and their hyperparameters (learning rate, mini-batch size, number of epochs, etc.) is merely illustrative.
  • Most of the resulting Network/Solver combinations do not show a stellar performance and all of them show signs of overfitting (see figure below).

  • You are encouraged to (use Experiment Manager to) tweak those choices and find a better solution.


[1] This example uses a small subset of images to make it easier to get started without having to worry about large downloads and long training times.

[2] You can choose to use either the data folder or the balanced_data folder: both contain subfolders labeled benign and malignant.

Cite As

Oge Marques (2024). Managing medical image classification experiments (, GitHub. Retrieved .

MATLAB Release Compatibility
Created with R2021a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

See release notes for this release on GitHub:


Updated description




Updated main script


To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.