The default Classifier Recipe supports a number of classifier backbones that have been qualified to ensure that they compress and compile for common hardware targets. We will walk through an example where we train and evaluate some of these models on a small open images dataset. This dataset will enable us to quickly demonstrate each step of the process and give us a decent baseline accuracy for verification purposes.

Later in the tutorial we will provide instructions on adding your own dataset and how to adjust the model and training parameters so that you can adapt the recipe to your needs. We will start with 224x224 image datasets as this is a common configuration that works across all of the currently supported backbones.

Download the Dataset

To get started, download and install the open-images-10-classes dataset:

cd /latentai
leip zoo download --dataset_id open-images-10-classes --variant_id eval
leip zoo download --dataset_id open-images-10-classes --variant_id train

Train a Model

The machine learning component of a recipe is defined by a configuration file. Additional details of the file will be discussed later, but for now note that the default file we will use is classifier-recipe.yaml and will be passed to the LEIP Machine Learning Applications Framework tool using the --config-name classifier-recipe command line option.

Lets start by training one of the smaller classifier models, timm:gernet_m (See also the list of all classifier models currently supported by LEIP Recipes). We will pass the backbone with the model.module.backbone command to train this model. The open-images-10-classes dataset is already set as the default in the classifier-recipe. Simply use the following command to start the training process:

# Example training command for timm:gernet_m, with the default classifier dataset:
# af --config-name classifier-recipe model.module.backbone="timm:gernet_m"
# The above command will by default store a checkpoint in a time-stamped directory:
# /latentai/artifacts/train/<timestamp>_task_leip_classifier/<checkpoint file>
# For this tutorial, we will pass a hard-coded checkpopint filename to simplify
# locating the checkpoint in the later steps.  We can do this by passing the
# callbacks.checkpoint.filename command line option

# Use the following to train the timm:gernet_m backbone classifier:

af --config-name classifier-recipe model.module.backbone="timm:gernet_m" \
  callbacks.checkpoint.filename=/latentai/checkpoint/timm_gernet_m \
# The checkpoint file will be the callback above with ".ckpt" added.
# Set an env variable to simplify the following steps:

export CHECKPOINT=/latentai/checkpoint/timm_gernet_m.ckpt

Evaluate the Model

Now that the model has been trained, you can evaluate the model from the checkpoint by passing the checkpoint path:

af --config-name classifier-recipe \
  model.module.backbone=timm:gernet_m \
  +checkpoint=$CHECKPOINT command=evaluate

An evaluation report will be provided in:

Visualize Predictions

Or you can visualize model predictions on a small set of images:

af --config-name classifier-recipe \
  model.module.backbone=timm:gernet_m   \
  +checkpoint=$CHECKPOINT command=predict

The images with superimposed labels will be in the directory:


Export the Trained Model

Finally, you can use the export command to export the trained model:

af --config-name classifier-recipe \
  model.module.backbone=timm:gernet_m \
  +checkpoint=$CHECKPOINT command=export

The exported, trained model will be found at:


Next, we will compile and optimize the traced model for evaluation on the target device. If you would like to retrain the model with your own data, we have provided instructions for adding your own data to the recipe.