Ground Truth Labeler

Label ground truth data for automated driving applications


The Ground Truth Labeler app enables you to label ground truth data in a video, in an image sequence, or from a custom data source reader. Using the app, you can:

  • Define rectangular regions of interest (ROI) labels, polyline ROI labels, pixel ROI labels, and scene labels. Use these labels to interactively label your ground truth data.

  • Use built-in detection or tracking algorithms to label your ground truth data.

  • Write, import, and use your own custom automation algorithm to automatically label ground truth.

  • Evaluate the performance of your label automation algorithms using a visual summary.

  • Export the labeled ground truth as a groundTruth object. You can use this object for system verification or for training an object detector or semantic segmentation network.

  • Display time-synchronized signals, such as lidar or CAN bus data, using the driving.connector.Connector API.

To learn more about this app, see Get Started with the Ground Truth Labeler.

Open the Ground Truth Labeler App

  • MATLAB® Toolstrip: On the Apps tab, under Automotive, click the app icon.

  • MATLAB command prompt: Enter groundTruthLabeler.

Programmatic Use

expand all

groundTruthLabeler opens a new session of the app, enabling you to label ground truth data.

groundTruthLabeler(videoFileName) opens the app and loads the input video. The video file must have an extension supported by VideoReader.

Example: groundTruthLabeler('caltech_cordova1.avi')

groundTruthLabeler(imageSeqFolder) opens the app and loads the image sequence from the input folder. An image sequence is an ordered set of images that resemble a video. The images must be the same size. imageSeqFolder must be a string scalar or character vector that specifies the folder containing the image files. The image files must have extensions supported by imformats and are loaded in the order returned by the dir function.

To label a collection of unordered images that can vary in size, use the Image Labeler app instead.

groundTruthLabeler(imageSeqFolder,timestamps) opens the app and loads a sequence of images with their corresponding timestamps. timestamps must be a duration vector of the same length as the number of images in the sequence.

For example, load a sequence of road images and their corresponding timestamps into the app.

imageDir = fullfile(toolboxdir('driving'),'drivingdata','roadSequence');

groundTruthLabeler(gtSource) opens the app and loads the groundTruthDataSource object, gtSource. The object contains a custom data source and corresponding timestamps.

groundTruthLabeler(sessionFile) opens the app and loads a saved app session, sessionFile. The sessionFile input contains the path and file name. The MAT-file that sessionFile points to contains the saved session.

groundTruthLabeler(___,'ConnectorTargetHandle','connector') opens the app with a custom connector. 'connector' is a handle to a driving.connector.Connector class. The handle implements a custom analysis or visualization tool that is time-synchronized with the Ground Truth Labeler app. For example, to associate a connector target defined in class MyConnectorClass, specify @MyConnectorClass.

For example, open the app, load a 10-second video into it, and open a lidar visualization tool that is time-synchronized to the video.



  • The built-in automation algorithms support the automation of rectangular ROI labels only. When you select a built-in algorithm and click Automate, scene labels, pixel labels, polyline labels, sublabels, and attributes are not imported into the automation session. To automate the labeling of these features, create a custom automation algorithm.

  • Pixel ROI labels do not support sublabels or attributes.

  • The Label Summary window does not support sublabels or attributes


  • To avoid having to relabel ground truth with new labels, organize the labeling scheme you want to use before marking your ground truth.


expand all

You can use label automation algorithms to speed up labeling within the app. To create your own label automation algorithm to use within the app, see Create Automation Algorithm for Labeling (Computer Vision Toolbox). You can also use one of the provided built-in algorithms. Follow these steps:

  1. Load the data you want to label, and create at least one label definition.

  2. On the app toolstrip, click Select Algorithm, and select one of the built-in automation algorithms.

  3. Click Automate, and then follow the automation instructions in the right pane of the automation window.

Introduced in R2017a