Create Custom Automation Algorithm for Labeling
This topic shows how to implement a custom automation algorithm using a class-based interface to accelerate ground truth labeling across labeling apps such as Image Labeler, Video Labeler, Lidar Labeler (Lidar Toolbox), and Ground Truth Labeler (Automated Driving Toolbox). The labeling apps enable you to label ground truth for a variety of data sources and automatically label your data by creating and importing a custom automation algorithm.
To build a custom automation algorithm for labeling apps, you can use either a function-based or class-based interface. The apps provide templates for both interface types. The table below compares their capabilities to help you choose the right interface for your workflow:
| Automation Algorithm Interface Type | Description | Use Case & Capabilities |
|---|---|---|
Function-based | Define automation logic using a standalone function with parameter tuning. |
|
Class-based | Create a custom class inheriting from |
|
For more information about the function-based automation algorithm interface, see Create Automation Algorithm Function for Labeling.
Create and Implement Automation Algorithm
The vision.labeler.AutomationAlgorithm class enables you to define a custom
label automation algorithm for use in the labeling apps. You can use the class to define
the interface used by the app to run an automation algorithm.
To define and use a custom automation algorithm, you must first define a class for your algorithm and save it to the appropriate folder.
Create Automation Class Template from Labeler App
At the MATLAB® command prompt, enter one of these commands to open the relevant labeling app.
imageLabeler videoLabeler lidarLabeler groundTruthLabeler
Load a data source and create at least one label definition.
On the app toolstrip, select Select Algorithm > Add Algorithm > Create New Algorithm.
This opens the
vision.labeler.AutomationAlgorithmclass template where you can define your custom automation algorithm. The template has headers and comments with instructions.
Then, load a data source, create at least one label definition, and on
the app toolstrip, In the vision.labeler.AutomationAlgorithm class
template that opens, define your custom automation algorithm. Follow the
instructions in the header and comments in the class.
Extend Automation Class for Temporal Data or Blocked Images
If the algorithm is time-dependent, that is, has a
dependence on the timestamp of execution, your custom automation algorithm must also
inherit from the vision.labeler.mixin.Temporal class. Temporal algorithms are useful for
labeling videos using the Video
Labeler app. For more details on implementing time-dependent, or temporal,
algorithms, see Temporal Automation Algorithms.
If the algorithm is blocked image based, your custom
automation algorithm must also inherit from the vision.labeler.mixin.BlockedImageAutomation class. A blocked image is a
very-large high-resolution image imported in blocks using the Image
Labeler app. For more details on implementing blocked image algorithms,
see Blocked Image Automation Algorithms.
Implement Core Methods of Automation Algorithm Class
The following table outlines the key methods you implement in a custom automation algorithm class. These methods define how the algorithm behaves during execution within the labeling apps:
| Method | Purpose |
|---|---|
checkLabelDefinition | Validate which label types are compatible with your algorithm |
settingsDialog | Define custom settings dialog for user interaction (optional) |
checkSetup | Verify readiness before execution such as any user-setups (optional) |
initialize | Prepare algorithm state before processing frames |
run | Core algorithm logic to process each frame |
terminate | Clean up resources after execution |
Create Automation Folder
Create a +vision/+labeler/ folder
within a folder that is on the MATLAB path. For example, if the folder /local/MyProject
is on the MATLAB path, then create the +vision/+labeler/ folder
hierarchy as
follows:
projectFolder = fullfile('local','MyProject'); automationFolder = fullfile('+vision','+labeler'); mkdir(projectFolder,automationFolder)
/local/MyProject/+vision/+labeler.Save Automation Class File to Automation Folder
To use your custom algorithm from within the
labeling app, save the file to the +vision/+labeler folder that
you created. Make sure that this folder is on the MATLAB search path. To add a folder to the path, use the addpath function.
Refresh Algorithm List in Labeling App
To start using your custom algorithm, refresh the algorithm list so that the algorithm displays in the app. On the app toolstrip, select Select Algorithm > Refresh list.
Import Existing Automation Algorithm in Labeler App
To import an existing custom algorithm into a labeling app, on the app toolstrip, select Select Algorithm > Add Algorithm > Import Algorithm. Refresh the list to make it available.
Custom Automation Algorithm Execution in Labeler App
When you run an automation session in a labeling app, the properties and methods in your automation algorithm class control the behavior of the app.
Check Label Definitions
When you click Automate, the
app checks each label definition in the ROI Labels and
Scene Labels panes by using the checkLabelDefinition method defined
in your custom algorithm. Label definitions that return true are
retained for automation. Label definitions that return false are
disabled and not included. Use this method to choose a subset of label definitions
that are valid for your custom algorithm. For example, if your custom algorithm is a
semantic segmentation algorithm, use this method to return false
for label definitions that are not of type PixelLabel.

Control Settings
After you select the algorithm, click
Automate to start an automation session. Then, click
Settings, which enables you to modify custom app settings.
To control the Settings options, use the settingsDialog method.

Control Algorithm Execution
When you open an automation algorithm session in the app and then click
Run, the app calls the checkSetup method
to check if it is ready for execution. If the method returns
false, the app does not execute the automation algorithm. If
the method returns true, the app calls the
initialize method and then the run method on
every frame selected for automation. Then, at the end of the automation run, the app
calls the terminate method.
The diagram shows this flow of execution for the labeling apps.

Use the
checkSetupmethod to check whether all conditions needed for your custom algorithm are set up correctly. For example, before running the algorithm, check that the scene contains at least one ROI label.Use the
initializemethod to initialize the state for your custom algorithm by using the frame.Use the
runmethod to implement the core of the algorithm that computes and returns labels for each frame.Use the
terminatemethod to clean up or terminate the state of the automation algorithm after the algorithm runs.
See Also
Apps
- Video Labeler | Image Labeler | Ground Truth Labeler (Automated Driving Toolbox) | Lidar Labeler (Lidar Toolbox)
Functions
vision.labeler.AutomationAlgorithm|vision.labeler.mixin.Temporal|vision.labeler.mixin.BlockedImageAutomation
Topics
- Automate Ground Truth Labeling for Semantic Segmentation
- Temporal Automation Algorithms
- Blocked Image Automation Algorithms
- Get Started with AI-Assisted and Automated Labeling
- Get Started with the Image Labeler
- Get Started with the Video Labeler
- Get Started with the Lidar Labeler (Lidar Toolbox)
- Get Started with Ground Truth Labeling (Automated Driving Toolbox)
- Automate Ground Truth Labeling of Lane Boundaries (Automated Driving Toolbox)
- Automate Attributes of Labeled Objects (Automated Driving Toolbox)