- Config #1
- Config #2
| Application | Source code | Description | Input sources | QCS6490 | IQ-8275 | IQ-9075 | IQ-615 |
|---|---|---|---|---|---|---|---|
| Image classification | gst-ai-classification | Classification on streams from a file source or RTSP. | Camera, file, RTSP, USB | ✓ | ✓ | ✓ | × |
| Object detection | gst-ai-object-detection | Object detection on streams from a file source or RTSP. | Camera, file, RTSP, USB | ✓ | ✓ | ✓ | × |
| Pose detection | gst-ai-pose-detection | Pose detection on streams from a file source or RTSP. | File, RTSP, USB | ✓ | ✓ | ✓ | × |
| Image segmentation | gst-ai-segmentation | Image segmentation on streams from a file source or RTSP. | File, RTSP | ✓ | ✓ | ✓ | × |
| Daisy chain detection + classification | gst-ai-daisychain-detection-classification | Cascaded object detection and classification. | File, RTSP, USB | ✓ | ✓ | ✓ | × |
| Daisy chain detection + pose | gst-ai-daisychain-detection-pose | Cascaded object detection and pose detection. | File, RTSP, USB | ✓ | ✓ | ✓ | × |
| Monodepth | gst-ai-monodepth | Monocular depth estimation from file or RTSP. | File, RTSP | ✓ | ✓ | ✓ | × |
| Face detection | gst-ai-face-detection | Face detection from file or RTSP. | File, RTSP | ✓ | ✓ | ✓ | × |
| Audio classification | gst-ai-audio-classification | Audio event classification from microphone or file. | Audio, file | ✓ | ✓ | ✓ | × |
| Metadata parsing | gst-ai-metadata-parser-example | Parse ML metadata and count people from file or RTSP. | File, RTSP | ✓ | ✓ | ✓ | × |
| AI USB camera | gst-ai-usb-camera-app | USB camera streaming with optional object detection. | USB | ✓ | ✓ | ✓ | × |
| AI event encoder | gst-ai-event-encoder | Encode video only when a person is detected. | File, RTSP | ✓ | ✓ | ✓ | × |
Prerequisites
Try me
Try me
Set up Wi-Fi
Download Models and Artifacts
download_artifacts.sh script, set executable
permissions, and run it to download the model, media, and label files:Enable qticamsrc
qticamsrc on Config #2:Enable libcamera
cdt_vision_kit.bin file from Qualcomm multimedia proprietary image at images/rb3gen2-core-kit/qcom-multimedia-proprietary-image-rb3gen2-core-kit:Enable Audio and GPU Delegate
wpctl status and run the following command:AI Vision Applications
Object Detection
The gst-ai-object-detection application allows you to detect objects within images and videos. The use cases show the execution of YOLOv5, YOLOv8 and YOLOX on Qualcomm AI HW accelerator. The following figure shows the pipeline, which receives the input from a live camera feed, file, USB source, or an RTSP stream, preprocesses it, runs inferences on AI hardware. The results are either displayed on the screen, saved as an encoded MP4 file, or streamed over the RTSP server. For information about the plugins used in the pipeline flow, see Pipeline flow
gst-ai-object-detection
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | IMX577 camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
| Config #2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| Qualcomm Neural Processing SDK | yolonas.dlc | yolonas.json |
| LiteRT | yolov8_det_quantized.tflite / yolox_quantized.tflite | yolox.json |
| Qualcomm AI Engine Direct | yolov8_det_quantized.bin | yolov8.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-object-detection application uses the/etc/configs/config_detection.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.video-format, resolution, and framerate parameters in the config file
to match the camera capabilities, see Configure USB camera.snpe-tensors field applies only to the SNPE runtime. To retrieve the output tensor names for a DLC model, open the model in Netron.snpe-tensors field is optional.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
Detected objects with bounding boxes and labels are overlaid on the video and displayed on the local display.
Pipeline Flow
The following table lists the plugins used in the object detection pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux, which demultiplexes the stream.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
v4l2src | • Captures the live stream from USB camera. • Uses tee to split the stream for inferencing. |
h264parse | Parses the H.264 video bitstream. |
v4l2h264dec | Hardware-decodes H.264 video to raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimlsnpeqtimltfliteqtimlqnn | 1. After the inference runtime receives the tensor stream on its sink pad, it runs inference using the provided model. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | Handles inference results from any object detection model. 1. Applies a threshold to the chosen number of results. 2. Loads the YOLO (YOLOv5, YOLOv8, or YOLO-NAS) module. 3. Produces video frames with only bounding boxes that can be overlaid on objects. 4. Sends these processed frames to the sink pad of qtivcomposer. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
filesink | Receives the video stream on sink pad and saves it as an H.264-encoded MP4 file. |
qtirtspbin | 1. Serves as a network sink. 2. Transmits UDP packets to the network. |
Config JSON Field Description
| Field | Values / Description | |
|---|---|---|
ml-framework | Supported ML frameworks: • snpe (Qualcomm Neural Processing SDK)• tflite (LiteRT)• qnn (Qualcomm AI Engine Direct) | |
yolo-model-type | Supported YOLO architectures: • yolov8• yolonas• yolov5• yolox | |
runtime | Hardware runtimes: • cpu• gpu• dsp | |
Input source | Supported input sources: • camera (0=primary, 1=secondary)• file-path• rtsp-ip-port• usb-camera (set enable-usb-camera to TRUE) | |
output-ip-address | Output RTSP server IP address | |
port | Output RTSP server port | |
output-type | Supported output sinks: • waylandsink (display)• filesink (MP4 file)• rtspsink (RTSP stream) | |
snpe-tensors | ["output-tensor-name", "output-tensor-name"] | |
USB camera video-format and resolution | 1. Use one of the following video-format options:• waylandsink (display)• filesink (MP4 file)• rtspsink (RTSP stream)2. Use the following resolution fields: • width• height• framerate | |
output-file | Output filename. The default output file is output_object_detection.mp4. |
Known issues
Config #2
Config #2
Config #1
Config #1
Image Classification
The gst-ai-classification application is designed to identify the subject in an image. The use cases are implemented using the Qualcomm Neural Processing SDK, LiteRT, or Qualcomm AI Engine Direct models. The pipeline receives a video stream from a camera, file source, USB source, or RTSP, preprocesses it, and runs the inference on AI hardware. The results are either displayed on the screen, saved as an encoded MP4 file, or streamed over the RTSP server. For information about the plugins used in the pipeline flow, see Pipeline flow
gst-ai-classification
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | IMX577 camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
| Config #2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| Qualcomm Neural Processing SDK | inceptionv3.dlc | classification.json |
| LiteRT | inception_v3_quantized.tflite | classification.json |
| Qualcomm AI Engine Direct | inception_v3_quantized.bin | classification.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-classification application uses the/etc/configs/config_classification.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.video-format, resolution, and framerate parameters in the config file
to match the camera capabilities, see Configure USB camera.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The classified object label and confidence score are overlaid on the video and displayed on the local display
Pipeline Flow
The following table lists the plugins used in the classification pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux, which demultiplexes the stream.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
v4l2src | • Captures the live stream from USB camera. • Uses tee to split the stream for inferencing. |
h264parse | Parses the H.264 video bitstream. |
v4l2h264dec | Hardware-decodes H.264 video to raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream on its source pad. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimlsnpeqtimltfliteqtimlqnn | 1. After the inference runtime receives the tensor stream on its sink pad, it runs inference using the provided model. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | Handles inference results from any classification model. 1. Applies a threshold to the chosen number of results. 2. Loads the MobileNet-softmax postprocessing module. 3. Produces results as video frames with classification labels. 4. Sends these processed frames to the sink pad of qtivcomposer. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
filesink | Receives the video stream on sink pad and saves it as an H.264-encoded MP4 file. |
qtirtspbin | 1. Serves as a network sink. 2. Transmits UDP packets to the network. |
Config JSON Field Description
| Field | Values / Description | |
|---|---|---|
ml-framework | Supported ML frameworks: • snpe (Qualcomm Neural Processing SDK)• tflite (LiteRT)• qnn (Qualcomm AI Engine Direct) | |
runtime | Hardware runtimes: • cpu• gpu• dsp | |
Input source | Supported input sources: • camera (0=primary, 1=secondary)• file-path• rtsp-ip-port• usb-camera (set enable-usb-camera to TRUE) | |
output-ip-address | Output RTSP server IP address. | |
port | Output RTSP server port. | |
output-type | Supported output sinks: • waylandsink(display)• filesink (MP4 file)• rtspsink (RTSP stream) | |
USB camera video-format and resolution | 1. Use one of the following video-format options:• waylandsink (display)• filesink (MP4 file)• rtspsink (RTSP stream)2. Use the following resolution fields: • width• height• framerate | |
output-file | Output filename. The default output file is output_classification.mp4. |
Known Issues
Config #2
Config #2
Config #1
Config #1
Face Detection
The gst-ai-face-detection application collects the live video input from a camera, file, or an RTSP stream and uses the Qualcomm AI Engine direct and LiteRT face detection models to produce a preview with the overlaid AI model output on the HDMI display. The following figure shows the pipeline, which receives the input, preprocesses it, runs inferences on AI hardware, and displays the results on the screen. For information about the plugins used in the pipeline flow, see Pipeline flow.gst-ai-face-detection
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | No | No | No | Yes | No |
| Config #2 | Yes | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | face_det_lite_quantized.tflite | face_detection.json |
| Qualcomm AI Engine Direct | face_det_lite_quantized.bin | face_detection.json |
Run the application on the target device
Download artifacts
Prerequisites. This
downloads all required artifacts to the target device.Configurations
The gst-ai-face-detection application uses the/etc/configs/config_face_detection.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
- Config #1
Pipeline Flow
The following table lists the plugins used in the face detection pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
h264parse | • Parses the H.264 video bitstream. |
v4l2h264dec | • Hardware-decodes H.264 video to raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltfliteqtimlqnn | 1. After the inference runtime receives the tensor stream on its sink pad, it runs inference using the provided model. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | 1. Handles inference results from any face detection model. 2. Applies a threshold to the chosen number of results. |
qtimetamux | • Receives string-based postprocessing output text with video frame and multiplexes it. |
qtivoverlay | 1. Receives the multiplexed stream. 2. Overlays the bounding boxes on the stream. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
ml-framework | Supported ML frameworks: • tflite (LiteRT)• qnn (Qualcomm AI Engine Direct) |
runtime | Supported hardware runtimes: • cpu• gpu• dsp |
Input source | Supported input sources: • file-path• rtsp-ip-port• camera |
Known issues
Config #2
Config #2
Config #1
Config #1
Semantic Segmentation
The gst-ai-segmentation application allows you to divide an image into different and meaningful parts or segments and assign a label to each homogeneous segment based on the similarity of the attributes. The application uses Qualcomm Neural Processing SDK runtime, Qualcomm AI Engine direct runtime, and LiteRT for image segmentation. The following figure shows the pipeline, which receives the input from a live camera feed, file, or an RTSP stream, preprocesses the video data, runs inferences using AI hardware, and displays the segmented data on the screen. For information about the plugins used in the pipeline flow, see Pipeline flow.gst-ai-segmentation
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | No | No | No | Yes | No |
| Config #2 | Yes | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| Qualcomm Neural Processing SDK | deeplabv3_plus_mobilenet.dlc | deeplabv3_resnet50.json |
| LiteRT | deeplabv3_plus_mobilenet_quantized.tflite | deeplabv3_resnet50.json |
| Qualcomm AI Engine Direct | deeplabv3_plus_mobilenet_quantized.bin | deeplabv3_resnet50.json |
Run the application on the target device
Download artifacts
Prerequisites. This
downloads all required artifacts to the target device.Configurations
The gst-ai-segmentation application uses the/etc/configs/config_segmentation.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The segmented data is displayed on the local display.
Pipeline Flow
The following table lists the plugins used in the segmentation pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for concurrent display and ML inference. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux, which demultiplexes the stream.• Uses tee to split the stream for processing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for processing. |
h264parse | • Parses the H.264 video bitstream to ensure downstream elements can handle the payload. |
v4l2h264dec | • Hardware-accelerated decoder that converts H.264 video into raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data. This preprocessing is done when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream on its source pad. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimlsnpeqtimltfliteqtimlqnn | 1. After the inference runtime receives the tensor stream on its sink pad, it runs inference using the provided model. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | • Converts the inference tensors received on its sink pad into video formats that multimedia plugins use for further processing. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
ml-framework | Supported ML frameworks: • snpe (Qualcomm Neural Processing SDK)• tflite (LiteRT)• qnn (Qualcomm AI Engine Direct) |
runtime | Supported hardware runtimes: • cpu• gpu• dsp |
Input source | Supported input sources: • file-path• rtsp-ip-port• camera |
Pose Detection
The gst-ai-pose-detection application allows you to detect the body pose of the subject in an image or video. The use case processes input streams from a camera, file, or an RTSP source and uses LiteRT and Qualcomm AI Engine direct models for pose detection. The results are either displayed on the screen, saved as an encoded MP4 file, or streamed over the RTSP server. The following figure shows the pipeline, which receives the input from a live camera feed, file, USB source, or an RTSP stream, preprocesses it, conducts inference on AI hardware, and generates the output. This process allows for real-time pose detection and visualization of human poses. For information about the plugins used in the pipeline flow, see Pipeline flow.gst-ai-pose-detection
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | Yes | No | Yes | Yes | Yes |
| Config #2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model file | Label files |
|---|---|---|
| LiteRT | hrnet_pose_quantized.tflite | hrnet_pose.json, hrnet_settings.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-pose-detection application uses the/etc/configs/config_pose.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.video-format, resolution, and framerate
parameters in the config file to match the camera capabilities, see Configure USB camera.hrnet_settings.json file.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The displayed output shows the detected pose of the objects.
Pipeline Flow
The following table lists the plugins used in the pose detection pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for concurrent display and ML inference. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for processing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for processing. |
v4l2src | • Captures the live stream from USB camera. • Uses tee to split the stream for processing. |
h264parse | • Parses the H.264 video bitstream to ensure downstream elements can handle the payload. |
v4l2h264dec | • Hardware-accelerated decoder that converts H.264 video into raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltfliteqtimlqnn | • Uses the HRNet model for pose detection. • The application runs on the external delegate to execute the model using the Hexagon Tensor Processor. • After the inference runtime receives the tensor stream on its sink pad, it does the following: • Runs the inference. • Produces a tensor stream containing the inference results on its source pad. • Manages the inference results from the pose detection model. |
qtimlpostprocess | • Applies a threshold to the chosen number of results. • Loads corresponding modules for various pose detection models. In this specific use case, qtimlpostprocess does the following:1. Loads the HRNet module. 2. Produces results in the form of video frames with drawn poses. 3. Sends the results to the sink pad of qtivcomposer for further processing or display. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
filesink | • Receives the video stream on its sink pad and saves it as an H.264-encoded MP4 file. |
qtirtspbin | 1. Serves as a network sink. 2. Transmits UDP packets to the network. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
ml-framework | Supported ML frameworks: • tflite (LiteRT)• qnn (Qualcomm AI Engine Direct) |
runtime | Hardware runtimes: • cpu• gpu• dsp |
Input source | Supported input sources: • camera (0=primary, 1=secondary)• file-path• rtsp-ip-port• usb-camera (set enable-usb-camera to TRUE) |
output-ip-address | Output RTSP server IP address. |
port | Output RTSP server port. |
output-type | Supported output sinks: • waylandsink (display)• filesink (MP4 file)• rtspsink (RTSP stream) |
USB camera video-format and resolution | 1. Use one of the following video-format options:• waylandsink (display)• filesink (MP4 file)• rtspsink (RTSP stream)2. Use the following resolution fields: • width• height• framerate |
enable-usb-camera | Set to TRUE or FALSE. |
output-file | Output filename. Default: output_pose |
Known Issues
Config #2
Config #2
- Detection accuracy may decrease when objects are far from the camera - Identifies the pose of only one person in, even when multiple people are present in the frame.
Config #1
Config #1
- Detection accuracy may decrease when objects are far from the camera - Identifies the pose of only one person in, even when multiple people are present in the frame.
Mono Depth
The gst-ai-monodepth application allows you to infer depth of a source feed from a live camera stream, file, or an RTSP stream. The following figure shows the pipeline, which captures feed from the source, preprocesses it, and runs inferences using the AI hardware. For information about the plugins used in the pipeline, see Pipeline flow.gst-ai-monodepth
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | No | No | No | Yes | No |
| Config #2 | Yes | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| Qualcomm Neural Processing SDK | midasv2.dlc | monodepth.json |
| LiteRT | midas_quantized.tflite | monodepth.json |
| Qualcomm AI Engine Direct | midas_quantized.bin | monodepth.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-monodepth application uses the/etc/configs/config_monodepth.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The overlaid model output stream is shown side by side with the live feed.
Pipeline Flow
The following table lists the plugins used in the monodepth pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for concurrent display and ML inference. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for processing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for processing. |
h264parse | • Parses the H.264 video bitstream to ensure downstream elements can handle the payload. |
v4l2h264dec | • Hardware-accelerated decoder that converts H.264 video into raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data. This preprocessing is done when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream on its source pad. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimlsnpeqtimltfliteqtimlqnn | • Uses the Midasv2 model for monodepth calculation. 1. The inference runtime receives the tensor stream on its sink pad. 2. The runtime executes the inference. 3. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | • Converts the inference tensors received on its sink pad into video formats that multimedia plugins use for further processing. |
qtivtransform | • Converts the buffers on its source pad to formats compatible with composition on waylandsink. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
ml-framework | Supported ML frameworks: • snpe (Qualcomm Neural Processing SDK)• tflite (LiteRT)• qnn (Qualcomm AI Engine Direct) |
runtime | Supported hardware runtimes: • cpu• gpu• dsp |
Input source | Supported input sources: • file-path• rtsp-ip-port• camera (0=primary, 1=secondary) |
Super Resolution
The gst-ai-superresolution application allows you to generate high resolution video frames from low-resolution input. The following figures shows the pipeline, which receives a video stream from a file source as input, processes it through the super resolution module using LiteRT, and displays the output. For information about the plugins used in the pipeline, see Pipeline flow.gst-ai-superresolution
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #2 | Yes | No | No | No | Yes | Yes | No |
Sample Model Files
| Runtime | Model file |
|---|---|
| LiteRT | quicksrnetsmall_quantized.tflite |
Run the application on the target device
Download artifacts
Prerequisites. This
downloads all required artifacts to the target device.Configurations
The gst-ai-superresolution application uses the/etc/configs/config-superresolution.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
Expected Output
The output is displayed on an HDMI monitor.
Pipeline Flow
The following table lists the plugins used in the superresolution pipeline:| Plugin | Description |
|---|---|
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for processing. |
h264parse | • Parses the H.264 video bitstream to ensure downstream elements can handle the payload. |
v4l2h264dec | • Hardware-accelerated decoder that converts H.264 video into raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data. This preprocessing is done when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream on its source pad. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | • Runs on LiteRT and uses the quicksrnetsmall_quantized model for super resolution.1. The inference runtime receives the tensor stream on its sink pad. 2. The runtime executes the inference. 3. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | • Handles inference results from any super resolution model. 1. Loads the SRNet module. 2. Produces results as high-resolution video frames. 3. Sends the processed frames to the sink pad of qtivcomposer. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
Input source | • input-file-path: The directory path of the input video. |
model | • model: The path to the super resolution model. |
Output source | Configuration for the output destination: • output-file-path: The directory path of the output video.• If the output-file-path is not provided, the display output is automatically enabled. |
Known Issues
Config #2
Config #2
AI Event Encoder
The gst-ai-event-encoder application receives the live video stream input from camera, file, or RTSP source. When a human enters the video frame the application preprocesses the video, runs inferences on the AI hardware, and encodes the video. The encoding stops 5 seconds after the human moves away from the frame and restarts when anyone enters the frame. The following figures show the event detection and recording pipelines for event encoder application. For information about the plugins used in the pipeline flow, see Pipeline flow.
gst-ai-event-encoder
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | No | No | No | Yes | No |
| Config #2 | Yes | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | yolox_quantized.tflite | yolox.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-event-encoder application uses the/etc/configs/config-event-encoder.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The output is saved as an MP4 file within/etc/media folder as output-1.mp4, output-2.mp4, and so on.Pipeline Flow
The following table lists the plugins used in the event encoder pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for concurrent display and ML inference. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for processing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for processing. |
h264parse | • Parses the H.264 video bitstream to ensure downstream elements can handle the payload. |
v4l2h264dec | • Hardware-accelerated decoder that converts H.264 video into raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | 1. After the inference runtime receives the tensor stream on its sink pad, it executes the inference. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | Instance 1 (Detection Overlay): • Applies a threshold to the chosen number of results. • Loads the YOLOv8 module. • Produces video frames with only bounding boxes for object overlay. • Sends processed frames to the sink pad of qtivcomposer.Instance 2 (Metadata Generation): • Produces output in text format (bounding box coordinates and labels). • Connects to an appsink plugin where metadata is read, parsed, and logged.• Uses bounding box information to count the number of humans in each frame. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
runtime | Supported hardware runtimes: • cpu• gpu• dsp |
Input source | Supported input sources: • file-path• rtsp-ip-port• camera (0=primary, 1=secondary) |
Known Issues
Config #2
Config #2
QCS6490 device, FPS fluctuates between 22 and 29 when using file
input.Metadata Parser
The gst-ai-metadata-parser-example application receives the live video stream input from camera, file, or RTSP source, and passes the stream to the YOLO models for object detection and preview. The overlaid AI model output, including labels and bounding boxes, is displayed on an HDMI display. The extracted metadata is logged to the console and used to count the number of humans in the frame. The following figure shows the pipeline for metadata parsing. For information about the plugins used in the pipeline flow, see Pipeline flow.gst-ai-metadata-parser-example
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | No | No | No | Yes | No |
| Config #2 | Yes | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | yolox_quantized.tflite | yolox.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Run the application
/etc/configs/config-metadata-parser-example.json file to read the input parameters.To display all available options:Configurations
The gst-ai-metadata-parser-example application uses the/etc/configs/config-metadata-parser-example.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output

Pipeline Flow
The following table lists the plugins used in the metadata parser pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream into two for inferencing and composing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream into two for inferencing and composing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream into two for inferencing and composing. |
h264parse | • Parses the H.264 video. |
v4l2h264dec | • Decodes the video. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream on its source pad. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | • After the inference runtime receives the tensor stream on its sink pad, it runs the inference. • Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | Instance 1 (Object Detection): • Applies a threshold to the chosen number of results. • Loads the YOLOv8 module. • Produces video frames with only bounding boxes that can be overlaid on objects. • Sends these processed frames to the sink pad of qtivcomposer.Instance 2 (Human Counting): • Produces the output in a text format (bounding box coordinates and labels). • This output is connected to appsink plugin where the metadata is read, parsed, and logged.• The bounding box information is used to count the number of humans in each frame. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. waylandsink submits the video stream received on its sink pad to Weston.2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values/Description |
|---|---|
runtime | Use one of the following runtimes: cpu gpu dsp |
Input source | Use one of the following input sources: camera – Primary (0) or secondary (1). file-path – The directory path to the video file. rtsp-ip-port – The address of the RTSP stream: rtsp://<ip>:<port>/<stream> |
AI USB Camera
The gst-ai-usb-camera-app streams video from a USB webcam connected to theQualcomm EVK. This webcam should be accessible as a /dev/videoX device. Additionally, you can perform object detection and preview the results.
You can choose to preview the output on Wayland, or encode to a video file, or live stream through the RTSP.
Alternatively, you can set enable-object-detection as True to perform object detection.
The following figures show a pipeline, which processes the input from the USB camera to generate various outputs.
For information about the plugins used in this pipeline, see Pipeline flow.
gst-ai-usb-camera-app
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | No | No | Yes | No | Yes | Yes | Yes |
| Config #2 | No | No | Yes | No | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model Files | Label Files |
|---|---|---|
Qualcomm Neural Processing SDK | yolonas.dlc yolov5.dlc yolov8.dlc | yolonas.json yolov5.json yolov8.json |
LiteRT | yolov8_det_quantized.tflite yolonas_quantized.tflite yolov5.tflite yolox_quantized.tflite | yolov8.json yolonas.json yolov5.json yolox.json |
Qualcomm AI Engine direct | yolov8_det_quantized.bin | yolov8.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-usb-camera-app application uses the/etc/configs/config-usb-camera-app.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.video-format, resolution, and framerate parameters in the config file
to match the camera capabilities.Yolo-NAS-Quantized.tflite model using the YOLOv8 value in the yolo-model-type field.snpe-tensors field applies only to the SNPE runtime. To retrieve the output tensor names for a DLC model, open the model in Netron.snpe-tensors field is optional.Available configurations
Available configurations
- Config #2
- Config #2
Expected Output

Pipeline flow
The following table lists the plugins used in AI USB camera pipelines:| Pipeline | Description |
|---|---|
| Dump the USB camera to a filesink | • USB camera captures the live camera stream. • qtivtransform transforms the stream data.• capsfilter is applied to enforce constraints on the raw video data.• filesink is used to dump the data into a file. |
| Video encoding | • USB camera captures the live camera stream. • qtivtransform transforms the stream data.• capsfilter is applied to enforce constraints on the raw video data.• v4l2h264enc is used to encode the video using the H.264 format.• h264parse is used to parse the video.• mp4mux is used to multiplex the video into an MP4 container.• filesink is used to write the video to a file. |
| RTSP streaming | • USB camera captures the live camera stream. • qtivtransform transforms the stream data.• capsfilter is applied to enforce constraints on the raw video data.• v4l2h264enc is used to encode the video using the H.264 format.• h264parse is used to parse the video.• qtirtspbin is used to load the stream to RTSP. |
| USB camera and object detection on RTSP | • USB camera captures the live camera stream. • capsfilter is applied to enforce constraints on the raw video data.• tee is used to split the stream for inferencing.• qtivtransform transforms the stream data.• qtimlvconverter performs preprocessing and converts the video stream to a tensor stream, which is used for inferencing.• qtimlsnpe, qtimltflite, or qtimlqnn run the inference on the stream.• qtimlpostprocess handles the inference results from any object detection model and produces video frames.• qtivcomposer composes the video frames and shares them with qtirtspbin.• qtirtspbin submits the composed video stream to Weston, which renders it on the local display. |
| USB camera and object detection on wayland | • USB camera captures the live camera stream. • capsfilter is applied to enforce constraints on the raw video data.• tee is used to split the stream for inferencing.• qtivtransform transforms the stream data.• qtimlvconverter performs preprocessing and converts the video stream to a tensor stream, which is used for inferencing.• qtimlsnpe, qtimltflite, or qtimlqnn run the inference on the stream.• qtimlpostprocess handles the inference results from any object detection model and produces video frames.• qtivcomposer composes the video frames and shares them with waylandsink.• waylandsink submits the composed video stream to Weston, which renders it on the local display. |
| Object detection using USB camera and file encode | • USB camera captures the live camera stream. • capsfilter is applied to enforce constraints on the raw video data.• tee is used to split the stream for inferencing.• qtivtransform transforms the stream data.• qtimlvconverter performs preprocessing and converts the video stream to a tensor stream, which is used for inferencing.• qtimlsnpe, qtimltflite, or qtimlqnn run the inference on the stream.• qtimlpostprocess handles the inference results from any object detection model and produces video frames.• qtivcomposer composes the video frames and shares them with filesink.• filesink writes the composed video stream to a file. |
Config JSON field description
| Field | Values/Description |
|---|---|
ml-framework | Use one of the following models: • snpe — Qualcomm Neural Processing SDK• tflite — LiteRT• qnn — Qualcomm AI Engine Direct |
yolo-model-type | Run one of the following models respectively: • yolov5• yolov8• yolonas |
runtime | Use one of the following runtimes: • cpu• gpu• dsp |
output | Use one of the following output types: • filesink• waylandsink• rtspsink |
enable-object-detection | • TRUE• FALSE |
snpe-tensors | ["output-tensor-name","output-tensor-name"] |
USB camera video-format and resolution | Use one of the following video formats: • nv12• yuy2• mjpegUse the following resolution parameters: • width: Input USB camera source resolution width.• height: Input USB camera source resolution height.• framerate: Input USB camera source framerate. |
Face Recognition
The gst-ai-face-recognition application collects the live video input from a camera or an RTSP stream and shares this input for face detection, facial landmarking, and face recognition. It uses theface_det_quantized models for face detection, facemap_3dmm_quantized model for facial landmarking, and face_attrib_net_quantized model for face recognition labels.
The result is a preview of the overlaid AI model on the HDMI display.
Config #1 for the QLI 2.0 RC3 release
because CPU runtime is not supported.gst-ai-face-recognition
For information about the plugins used in the pipeline flow, see Pipeline flow.
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #2 | No | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model files | Label files |
|---|---|---|
| Qualcomm AI Engine Direct & LiteRT | face_det_lite_quantized.tflite, facemap_3dmm_quantized.tflite, face_attrib_net_quantized.tflite, face_det_lite_quantized.bin, facemap_3dmm_quantized.bin, face_attrib_net_quantized.bin | face_detection.json, face_recognition_settings.json, face_recognition.json, facemap_3dmm_settings.json |
Register a face for facial recognition
Before running the gst-ai-face-recognition application, you can register a face for secure verification and authentication:PLAYING: Move the pipeline to the Playing state.Plugin Mode➔camsrc➔capture-image: Capture the image using a camera source.
capture-image do the following for each side:(b)Back and (q)Quit.After running the pipeline, five individual tensor bins are created (
tensor_0.bin to tensor_4.bin) with facial properties recorded for each side of the face./etc/data/, find the tensor bins. To pull the bins from the target device to the Linux host computer, run the following commands:facedb.py script in the same directory as the tensor bins on the Linux host computer.face_recognition.json file and register the new person into the database, use the following reference label file for two-person registered face:face_recognition.json.Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-face-recognition application uses the/etc/configs/config-face-recognition.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
Expected output

Pipeline Flow
The following table lists the plugins used in the daisychain detection and classification pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
h264parse | • Parses the H.264 video bitstream. |
v4l2h264dec | • Hardware-decodes H.264 video to raw frames. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | 1. After the inference runtime receives the tensor stream on its sink pad, it runs the inference. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess (Pose-estimation) | • Uses the lite-3dmm module to perform facial pose recognition. |
qtimlpostprocess (Classification) | • Uses the qfr module to receive the stream from qtimetamux and classifies the face. |
qtimetamux | 1. Receives the output of the face detection models from qtimlpostprocess and multiplexes it.2. Receives the output of facial pose from qtimlpostprocess and multiplexes it. |
tee | • Splits the stream for inferencing. |
qtivoverlay | 1. Receives the multiplexed stream. 2. Overlays the bounding boxes on the stream. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
| ml-framework | Use one of the following models: - tflite – LiteRT - qnn – Qualcomm AI Engine direct |
| Models and labels | See Sample model and label files |
| face-detection-model | The path to the face detection model |
| face-landmark-model | The path to the face landmark model |
| face-recognition-model | The path to the face recognition model |
| face-detection-labels | The path to the face detection labels |
| face-recognition-labels | The path to the face recognition labels |
| face-recognition-settings | The path of face recognition setting labels |
| facemap-3dmm-settings | The path of facemap-3dmm setting labels |
Image segmentation using Python with container
The application allows you to perform image segmentation using the Qualcomm Neural Processing SDK with Python bindings, all from within a Docker container.Try me
Try me
Setup the host container
- Download the Dockerfile and scripts and prepare the directory for storing the image.The
snpe-container-pythonfile has the Dockerfile and scripts. Run all the commands from this directory. - Copy the test image in a new folder called
inputsand rename the test image asinput_image.jpg. - Set up the host device for cross compilation:Until the host device is rebooted, continue running these commands for every new console that’s used to run the Docker.
- Build the Docker image. Populate the
<path-to-sdk-tools>/targets/config.jsonfileThe following code shows an updated sampleconfig.jsonfile.The following inputs are mandatory:-
SNPE_version -
Base_Image -
Target_platform: The following are field values for each SoC:-
For QCS6490 –
qcm6490 -
For Dragonwing IQ-8275 –
qcs8300 -
For Dragonwing IQ-9075 –
qcs9100
-
For QCS6490 –
-
URL(ensure that the address provided isn’t the same as your current directory)
To prevent code failures, ensure that you remove the comments before using it. -
URL field in config.json.- If
Additional_tag_imageis empty, the compressed image is stored asqml.tar. - If
Additional_tag_imageis populated, the compressed image is stored asqml-<field value>.tar.
qml should be running. To check this image, run the following command:Run the application on the target device
- The output image is saved in the container at
/opt/. - The output from the DLC model (RAW file) is saved at
/mnt/qml/output/.
Expected Result

AI Audio Applications
Audio Classification
The gst-ai-audio-classification application shows audio classification using input from either a file source or a microphone. It displays both the classification results and a video preview. The following figure shows the pipeline, which gets the input from a file or a microphone, preprocesses it, and runs inferences on AI hardware. The results are displayed on the screen. For information about the plugins used in the pipeline flow, see Pipeline flow.gst-ai-audio-classification
Try me
Try me
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | yamnet.tflite | yamnet.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-audio-classification application uses the/etc/configs/config-audio-classification.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The output video and classified audio are played on the screen.Pipeline Flow
The following table lists the plugins used in the audio classification pipeline:| Plugin | Description |
|---|---|
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for processing. |
h264parse | • Parses the H.264 video. |
v4l2h264dec | • Decodes the video bitstream into raw frames. |
mpegaudioparse / flacparse | • Parses the audio bitstream (MP3 or FLAC) to ensure downstream elements can handle the payload. |
mpg123audiodec / flacdec | • Decodes the compressed audio (MP3 or FLAC) into raw audio buffers. |
audioconvert | • Converts raw audio buffers between various possible formats to ensure compatibility. |
audioresample | • Resamples the audio buffers to different sample rates as required by the model. |
pulsesrc | • Reads the live audio stream from the microphone. |
audiobuffersplit | • Splits the incoming audio buffers into equal-sized chunks for consistent processing. |
qtimlaconverter | 1. Receives the audio stream on its sink pad. 2. Performs preprocessing on the audio stream data. 3. Converts the stream to a tensor stream for inferencing in the later stages of the pipeline. |
qtimltflite | 1. Receives the tensor stream on its sink pad. 2. Performs inferencing using the YAMNet model. 3. Produces a tensor stream with the results on its source pad. |
qtimlpostprocess | • Uses the yamnet module to handle audio classification inference results:• Applies a threshold to the chosen number of results. • Creates a text overlay for the identified audio classes. |
qtivcomposer | • Combines the text overlay for classification results and the video preview into a single composed frame. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
runtime | Use one of the following runtimes: • cpu• gpu |
Input source | Use one of the following input sources: • file-path: The directory path to the video file.• Microphone |
threshold=<integer> | Use any integer between 1 and 100. |
codec | The audio codec of input video: • MP3 (default)• FLAC |
AI Multi-Model Applications
Daisychain Detection + Classification
The gst-ai-daisychain-detection-classification application allows you to perform cascaded object detection and classification with a camera, file source, or RTSP stream. The use case involves detecting objects and classifying the detected objects. The following figures show the pipeline workflow, which captures the video stream from the source, preprocesses it, and runs inferences using AI hardware. The results are either displayed on the screen, saved as an encoded MP4 file, or streamed over the RTSP server. For information about the plugins used in this pipeline, see Pipeline flow.gst-ai-daisychain-detection-classification
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | Yes | No | Yes | Yes | Yes |
| Config #2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model files | Label files |
|---|---|---|
| LiteRT | detection: yolox_quantized.tflite,classification: inception_v3_quantized.tflite | yolox.json, classification.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-daisychain-detection-classification application uses the/etc/configs/config_daisychain_detection_classification.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.video-format, resolution, and framerate parameters in the config file
to match the camera capabilities, see Configure USB camera.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The cropped video frame is overlaid on the frame and displayed on a local device.

Pipeline Flow
The following table lists the plugins used in the daisychain detection and classification pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
v4l2src | • Captures the live stream from USB camera. • Uses tee to split the stream for inferencing. |
h264parse | • Parses the H.264 video bitstream. |
v4l2h264dec | • Hardware-decodes H.264 video to raw frames. |
qtimetamux | • Multiplexes the stream. |
qtivsplit | • Crops the full frame into smaller frames based on the detected bounding boxes (maximum 4). |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | 1. After the inference runtime receives the tensor stream on its sink pad, it runs the inference. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess (Detection) | • Handles inference results from any object detection model: • Applies a threshold to the chosen number of results. • Loads the YOLOv8 module. • Produces video frames with only bounding boxes that can be overlaid on objects. • Produces video frames with only bounding boxes that can be cropped. |
qtimlpostprocess (Classification) | • Processes results on the cropped frame: • Applies the threshold to the chosen number of results on the cropped frame. • Loads the MobileNet-softmax module. • Produces results as video frames with classification labels. • Sends them to the sink pad of qtivcomposer. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
filesink | • Receives the video stream on its sink pad and saves it as an H.264-encoded MP4 file. |
qtirtspbin | 1. Serves as a network sink. 2. Transmits UDP packets to the network. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
Input source | Supported input sources: • input-file: The directory path to the video file.• rtsp-ip-port: The address of the RTSP stream in rtsp://<ip>:<port>/<stream> format. |
Models and labels | Supported model and label paths: • detection-model: The path to the detection model file.• detection-labels: The path to the detection label file.• classification-model: The path to the classification model file.• classification-labels: The path to the classification label file. |
output-type | Use one of the following output sinks: • waylandsink: To display output via the Weston compositor.• filesink: To store output in a local file.• rtspsink: To stream output to a network server. |
USB camera video-format and resolution | 1. Use one of the following video-format options:• nv12• yuy2• mjpeg2. Use the following resolution parameters: • width: Input USB camera source resolution width.• height: Input USB camera source resolution height.• framerate: Input USB camera source framerate. |
output-file | • Output filename. The default output file is output_detection.mp4. |
output-ip-address and port | Network configuration for RTSP output: • output-ip-address: Output server IP address.• port: Output server port. |
Daisychain Detection + Pose
The gst-ai-daisychain-detection-pose application allows you to perform cascaded object detection and pose detection with a camera, file source, or an RTSP stream. The use cases involve detecting objects and estimating the body poses of the subject in an image or a video. The following figure show the application workflow, which receives the source, postprocesses it, and runs inferences on AI hardware. The results are either displayed on the screen, saved as an encoded MP4 file, or streamed over the RTSP server. For information about the plugins used in the pipeline flow, see Pipeline flow.gst-ai-daisychain-detection-pose
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #1 | Yes | Yes | Yes | No | Yes | Yes | Yes |
| Config #2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model files | Label files |
|---|---|---|
| LiteRT | detection: yolox_quantized.tflite,pose: hrnet_pose_quantized.tflite | detection: yolox.json, pose: hrnet_pose.json, pose: hrnet_settings.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-daisychain-detection-pose application uses the/etc/configs/config-daisychain-detection-pose.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.QCS6490, if file-path and rtsp-ip-port are not present in the configuration file, then the camera input is selected.video-format, resolution, and framerate parameters in the config file
to match the camera capabilities, see Configure USB camera.Available configurations
Available configurations
- Config #2
- Config #1
Expected Output
The cropped video frame is overlaid on the frame and displayed on a local device.
Pipeline Flow
The following table lists the plugins used in the daisychain detection and pose pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux for demultiplexing.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
v4l2src | • Captures the live stream from USB camera. • Uses tee to split the stream for inferencing. |
h264parse | • Parses the H.264 video bitstream. |
v4l2h264dec | • Hardware-decodes H.264 video to raw frames. |
qtimetamux | • Multiplexes the stream. |
qtivsplit | • Crops the full frame into smaller frames based on the detected bounding boxes (maximum 4). |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | 1. After the inference runtime receives the tensor stream on its sink pad, it runs the inference. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess (Detection) | • Handles inference results from any object detection model: • Applies a threshold to the chosen number of results. • Loads the YOLOv8 module. • Produces video frames with only bounding boxes that can be overlaid on objects. • Produces video frames with only bounding boxes that can be cropped. |
qtimlpostprocess (Pose) | • Applies a threshold to the chosen number of results. • Loads corresponding modules for various pose detection models. In this specific use case, qtimlpostprocess does the following:1. Loads the HRNet module. 2. Produces results in the form of video frames with drawn poses. 3. Sends the results to the sink pad of qtivcomposer for further processing or display. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
filesink | • Receives the video stream on sink pad and saves it as an H.264-encoded MP4 file. |
qtirtspbin | 1. Serves as a network sink. 2. Transmits UDP packets to the network. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
Input source | Use one of the following input sources: • input-file: The directory path to the video file.• rtsp-ip-port: The address of the RTSP stream in rtsp://<ip>:<port>/<stream> format.• enable-usb-camera: Set to TRUE or FALSE to enable/disable USB camera input. |
Models and labels | Supported model and label paths: • detection-model: The path to the detection model file.• detection-labels: The path to the detection label file.• pose-model: The path to the pose model file.• pose-labels: The path to the pose label file. |
Output source | • output-file: The directory path to save the output file.Note: The display is not enabled if this field is left empty. |
USB camera video-format and resolution | 1. Use one of the following video-format options:• nv12• yuy2• mjpeg2. Use the following resolution fields: • width: Input USB camera source resolution width.• height: Input USB camera source resolution height.• framerate: Input USB camera source framerate. |
detection-runtime and classification-runtime | Hardware runtime configuration: • Takes CPU, GPU, or DSP as input.• Executes the respective use case model in the specified runtime for optimized inference. |
Multistream Inference
The gst-ai-multistream-inference application shows AI inference (object detection and classification) on up to 32 input streams coming from camera, file, or RTSP stream. The following figure shows the pipeline, which receives several input streams, preprocesses them, runs AI inferences, combines the streams, and merges them all into a single video output. The maximum number of input streams supported on each SoC as verified on 1080P and 720P are follows:- QCS6490–8
- Dragonwing IQ-8275–16
-
Dragonwing IQ-9075–32
The output is displayed on an HDMI display, saved as an H.264 encoded MP4 file, or converted into an RTSP stream.This application isn’t supported in
Config #1for theQLI 2.0 RC3release because CPU runtime is not supported.
gst-ai-multistream-inference
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #2 | Yes | Yes | No | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | detection: yolox_quantized.tfliteclassification: inception_v3_quantized.tflite | detection: yolox.jsonclassification: classification.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-multistream-inference application uses the/etc/configs/config-multistream-inference.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.Available configurations
Available configurations
- Config #2
Expected Output

Pipeline Flow
The following table lists the plugins used in the metadata parser pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc, followed by qtdemux, which demultiplexes the stream.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc, followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
h264parse | • Parses the H.264 video. |
v4l2h264dec | • Decodes the video. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data. This preprocessing is done when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. Converts the preprocessed video stream to a tensor stream on its source pad. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | 1. After the inference runtime receives the tensor stream on its sink pad, it runs the inference. 2. Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | Handles the inference results from any object detection, classification, pose detection, and segmentation model. Detection use case: • Applies a threshold to the chosen number of results. • Loads the YOLOv8 module. • Produces video frames with only bounding boxes that can be overlaid on objects, sending them to the sink pad of qtivcomposer.Classification use case: • Applies the threshold to the chosen number of results. • Loads the MobileNet-softmax module. • Produces results as video frames with classification labels, sending them to the sink pad of qtivcomposer. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. waylandsink submits the video stream received on its sink pad to Weston.2. Weston renders the video stream on a local display. |
filesink | 1. Receives the video stream on its sink pad. 2. Saves the stream as a H.264-encoded MP4 file. |
qtirtspbin | 1. Serves as a network sink. 2. Transmits UDP packets to the network. |
Config JSON Field Description
| Field | Values / Description |
|---|---|
Input source | Use one of the following input sources: • num-camera: The number of inputs from the camera.• camera: The input camera if num-camera=1.• input-file-path: The directory path to the video file.• input-rtsp-path: The address of the RTSP stream: rtsp://<ip>:<port>/<stream> |
input-type | The video encoding type for file and RTSP input: • H.264• H.265 |
Output | Use one of the following outputs: • output-file-path: The directory path to save the output file.• output-ip-address: The IP address of the device on which the RTSP stream can be played.• output-port-number: The port number of the device on which the RTSP stream can be played.• output-display: The connected display device for preview. Select 1 to enable this option. |
Known Issues
Config #2
Config #2
Dragonwing IQ‑8275, Dragonwing IQ‑9075, and QCS6490.Multi-Stream Batch Inference
The gst-ai-multistream-batch-inference application shows batched AI inference (object detection and segmentation) on up to 24 input streams from video files. The following figure shows the pipeline, which receives several input streams, preprocesses them, runs AI inferences, combines the streams with inference, and merges them into a single video output. The maximum number of input streams supported on each SoC are follows: QCS6490–8 Dragonwing IQ-8275–4 Dragonwing IQ-9075–4 The output is displayed either on an HDMI display or saved as an H.264 encoded MP4 file. For information about the plugins used in this pipeline, see Pipeline flow.Config #1 for the QLI 2.0 RC3 release
because CPU runtime is not supported.gst-ai-multistream-batch-inference
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #2 | Yes | No | No | No | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | segmentation: deeplabv3_plus_mobilenet_quantized.tflitedetection: yolov8_det_quantized.tflite | segmentation:deeplabv3_resnet50.jsondetection: yolov8.json |
| Qualcomm AI Engine direct | segmentation: deeplabv3_plus_mobilenet_quantized.bindetection: yolov8_det_quantized.bin | segmentation:deeplabv3_resnet50.jsondetection: yolov8.json |
| Qualcomm Neural Processing SDK | segmentation: deeplabv3_plus_mobilenet_quantized.dlcdetection: yolov8_det_quantized.dlc | segmentation:deeplabv3_resnet50.jsondetection: yolov8.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-multistream-batch-inference application uses the/etc/configs/config-multistream-batch-inference.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.pipeline-info parameter. The id parameter takes the values from 0 to 5 for each added batch.Available configurations
Available configurations
- Config #2
Expected Output

Pipeline Flow
The following table lists the plugins used in the metadata parser pipeline:| Plugin | Description |
|---|---|
filesrc | 1. Captures the video stream using filesrc.2. qtdemux demultiplexes the stream.3. Uses tee to split the stream for inferencing. |
h264parse | Parses the H.264 video. |
v4l2h264dec | Decodes the video. |
qtibatch | 1. Reads input from the streams on its sink pad. 2. Batches the streams for preprocessing. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | 1. After the inference runtime receives the tensor stream on its sink pad, it runs the inference. 2. Produces a tensor stream with the inference results on its source pad. |
qtimldemux | 1. Demultiplexes the batched output. 2. Splits the output corresponding to the input streams. |
qtimlpostprocess | Converts the inference tensors received on the sink pad into video formats that the multimedia plugins can use for further processing. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
filesink | Takes the video stream received on its sink pad and saves it as an H.264-encoded MP4 file. |
Config JSON Field Description
| Field | Values/Description |
|---|---|
output-type | Use one of the following output types: • Wayland: Displays output on Weston.• filesink: Encodes the output in a video file. |
out-file | The file path to save the output file. |
pipeline-info | Provides the pipeline information: 1. Stream id: Ranges from 0 to 5.2. Input-type: The input source file.3. Input-file-path: The array of the input file path. |
mlframework | Use one of the following frameworks: • tflite• qnn• snpe |
model-path | The path to the model file. |
labels-path | The path to the labels file. |
Known Issues
Config #2
Config #2
Dragonwing IQ-8275 and Dragonwing IQ-9075 with a batch‑8 stream using two batch‑4 models.Multi input/output object detection
The gst-ai-multi-input-output-object-detection application allows you to perform object detection, object classification, pose detection, and image segmentation on an input stream from different sources such as a camera, a file, or an RTSP network. The use cases implement the LiteRT models for object detection, image segmentation, classification, and pose detection. The following figure shows the pipeline workflow, which captures video streams for inferencing from different sources such as camera, file, or RTSP. For information about the plugins used in the pipeline, see Pipeline flow.Config #1 for the QLI 2.0 RC3 release
because CPU runtime is not supported.gst-ai-multi-input-output-object-detection
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #2 | Yes | Yes | No | Yes | Yes | Yes | Yes |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | yolov5.tflite | yolov5.json |
Prerequisites
- Create the Python 3.8 virtual environment:
- Generate the
yolov5.tflitemodel:
- In the terminal of the host computer, run the following command to push the model to the target device:
- In the terminal of the host computer, run the following command to push the model files to the target device:
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Run the application
/etc/configs/config-multi-input-output-object-detection.json file to read the input parameters.To display all available options:- Pull the files from the target device, once you are done running the application:
Configurations
The gst-ai-multi-input-output-object-detection application uses the/etc/configs/config-multi-input-output-object-detection file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.file-path and rtsp-ip-port are not present in the configuration file, then the camera input is selected.Available configurations
Available configurations
- Config #2
Expected Output
Based on the use case, the results are either displayed on an HDMI screen, saved as an H.264 encoded MP4 file, or streamed over the RTSP server.
Pipeline Flow
The following table lists the plugins used in the metadata parser pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from the camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc.• Followed by qtdemux, which demultiplexes the stream.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc.• Followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
h264parse | Parses the H.264 video. |
v4l2h264dec | Decodes the video. |
qtimlvconverter | • Receives the video stream on its sink pad. • Performs the following preprocessing on the stream data when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization • The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | • Runs on LiteRT and uses the yolov5.tflite model for object detection.• After the inference runtime receives the tensor stream on its sink pad, it runs the inference. • Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess | • Converts the inference tensors that it receives on its sink pad into video formats that the multimedia plugins can process later. |
qtivcomposer | • Composes frames with contents from its sink pads. • Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | • waylandsink submits the video stream received on its sink pad to the Wayland compositor.• Renders the video stream on a local display. |
filesink | Takes the video stream that it receives on its sink pad and saves it as an H.264-encoded MP4 file. |
qtirtspbin | • Serves as a network sink. • Transmits UDP packets to the network. |
Config JSON Field Description
| Field | Values/Description |
|---|---|
Input source | Use one of the following input sources: • num-camera: The number of inputs from the camera. Select either 1 or 2.• camera-id: The id of the test camera. Select either 0 or 1.• input-file-path: The directory path to the video file.• input-rtsp-path: The address of the RTSP stream: rtsp://<ip>:<port>/<stream> |
Models and labels | • model: The path to the model file.• labels: The path to the label file. |
Output | Use one of the following outputs: • output-file-path: The directory path to save the output file.• output-ip-address: The IP address of the device on which the RTSP stream can be played.• output-port-number: The port number of the device on which the RTSP stream can be played.• output-display: The connected display device for preview. |
Known Issues
Config #2
Config #2
QCS6490.Parallel Inferencing
The gst-ai-parallel-inference application allows you to perform object detection, object classification, pose detection, and image segmentation on an input stream from different sources such as a camera, a file, or an RTSP network. The use cases implement the LiteRT models for object detection, image segmentation, classification, and pose detection. The following figure shows the pipeline, which receives input streams from a camera, file, or an RTSP stream, performs the parallel inferencing for the four use cases, and displays the results side by side on the screen.Config #1 for the QLI 2.0 RC3 release
because CPU runtime is not supported.gst-ai-parallel-inference
Try me
Try me
Input and Output Capabilities
| Config | File src | RTSP | USB camera | MIPI camera | File output | Display | RTSP output |
|---|---|---|---|---|---|---|---|
| Config #2 | Yes | Yes | No | Yes | No | Yes | No |
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | detection: yolox_quantized.tfliteclassification: inception_v3_quantized.tflitesegmentation: deeplabv3_plus_mobilenet_quantized.tflitepose: hrnet_pose_quantized.tflite | detection: yolox.jsonclassification: classification.jsonsegmentation: deeplabv3_resnet50.jsonpose: hrnet_pose.json, hrnet_settings.json |
Run the application on the target device
Download artifacts
Prerequisites. This downloads all required artifacts to the target device.Configurations
The gst-ai-parallel-inference application uses the/etc/configs/config-parallel-inference.json file. Update its properties to match your model, input stream, and output. See Config JSON Field Description for all fields.file-path and rtsp-ip-port are not present in the configuration file, then the camera input is selected.Available configurations
Available configurations
- Config #2
Expected Output
After performing the four parallel inferences, the results are displayed side by side on the screen.
Pipeline Flow
The following table lists the plugins used in the metadata parser pipeline:| Plugin | Description |
|---|---|
qticamsrc | • Captures the live stream from the camera. • Uses tee to split the stream for inferencing. |
filesrc | • Captures the video stream using filesrc.• Followed by qtdemux, which demultiplexes the stream.• Uses tee to split the stream for inferencing. |
rtspsrc | • Captures the RTSP stream using rtspsrc.• Followed by rtph264depay for video extraction.• Uses tee to split the stream for inferencing. |
h264parse | Parses the H.264 video. |
v4l2h264dec | Decodes the video. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltflite | • After the inference runtime receives the tensor stream on its sink pad, it runs the inference. • Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess — detection | a. Receives the inference tensors from the object detection model. b. Converts the inference tensors on its sink pad into formats such as video or text that the multimedia plugins can process later. c. Applies the threshold to the chosen number of results. d. Loads the corresponding modules for detection models. In this use case, qtimlpostprocess does the following:• Loads the YOLOv8 submodule. • Produces results as structures of text. • Sends them to the sink pad of qtimetamux. |
qtimlpostprocess — classification | a. Receives the inference tensors from the classification model. b. Converts the inference tensors on its sink pad into formats such as video or text that the multimedia plugins can process later. c. Applies the threshold to the chosen number of results. d. Loads the corresponding modules for classification models. In this use case, qtimlpostprocess does the following:• Loads the submodule of the model. • Produces results as video frames with classification labels. • Sends them to the sink pad of qtivcomposer. |
qtimlpostprocess — segmentation | a. Receives the inference tensors on its sink pad. b. Converts the inference tensors into video formats that the multimedia plugins can process later. c. Produces the semantic segmentations for the frame. d. Loads the corresponding modules for the segmentation models. In this use case, qtimlpostprocess does the following:• Loads the deeplab-argmax submodule. • Produces video frames with segmentation masks. • Sends them to the sink pad of qtivcomposer. |
qtimlpostprocess — pose | a. Receives the inference tensors on its sink pad. b. Converts the inference tensors into video formats that the multimedia plugins can process later. c. Applies the threshold to the chosen number of results. d. Loads the corresponding modules for various pose estimation models. In this use case, qtimlpostprocess does the following:• Loads the HRNet module. • Produces results as video frames with poses drawn. • Sends them to the sink pad of qtivcomposer. |
qtivcomposer | 1. Composes frames with contents from its sink pads. 2. Pushes the GStreamer buffers containing these composed frames to its source pad. |
waylandsink | 1. Submits the video stream received on its sink pad to Weston. 2. Weston renders the video stream on a local display. |
Config JSON Field Description
| Field | Values/Description |
|---|---|
Input source | Use one of the following input sources: • camera: Primary (0) or secondary (1).• file-path: The directory path to the video file.• rtsp-ip-port: The address of the RTSP stream: rtsp://<ip>:<port>/<stream> |
Models and labels | • detection-model: The path to the detection model.• detection-labels: The path to the detection label.• pose-model: The path to the pose model.• pose-labels: The path to the pose labels.• segmentation-model: The path to the segmentation model.• segmentation-labels: The path to the segmentation labels.• classification-model: The path to the classification model.• classification-labels: The path to the classification labels. |
Known Issues
Config #2
Config #2
- Identifies the pose of only one person even if many people are present in the frame.
- The
Inception V3model doesn’t include a person class because it is trained on theImageNetdataset and supports only image classification.
Hardware benchmarking application
The hardware benchmarking application monitors the device hardware usage for a defined set of sample applications to capture metrics such as CPU/GPU/NPU usage and device thermals. These metrics explain the resource usage and throttling, which help to tune your AI use cases according to the requirements. The following figure shows the pipeline, which processes the input from a set of USB cameras to generate various outputs.Config #1 for the QLI 2.0 RC3 release
because CPU runtime is not supported.Try me
Try me
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | • inception_v3_quantized.tflite • deeplabv3_plus_mobilenet_quantized.tflite • hrnet_pose_quantized.tflite • midas_quantized.tflite • yolox_quantized.tflite | • classification.json • deeplabv3_resnet50.json • hrnet_pose.json • monodepth.json • yolox.json |
Setup the target device
InstallerLE from the following locations:- For Linux:
- For Windows:
Run the application on the target device
- Example 1: Choose the Camera option from Camera 1 and Camera 2 drop-down lists to observe the preview streams on the screen.
-
Example 2: Choose any sample application from Camera 1 and Camera 2 drop-down lists to observe the AI inferencing camera streams on the screen.

Pipeline Flow
The following table lists the plugins used in the metadata parser pipeline:| Plugin | Description |
|---|---|
v4l2src | • Captures the live stream from the USB camera. • Uses tee to split the stream for inferencing. |
qtimlvconverter | 1. Receives the video stream on its sink pad. 2. Performs the following preprocessing on the stream data when the model expects floating-point values as input: • Color conversion • Scaling (up or down) • Normalization 3. The tensor stream is used for inferencing in the later stages of the pipeline. |
qtimltfliteqtimltsnpeqtimlqnn | • After the inference runtime receives the tensor stream on its sink pad, it runs the inference. • Produces a tensor stream with the inference results on its source pad. |
qtimlpostprocess — detection | a. Receives the inference tensors from the object detection model. b. Converts the inference tensors on its sink pad into formats such as video or text that the multimedia plugins can process later. c. Applies the threshold to the chosen number of results. d. Loads the corresponding modules for detection models. In this use case, qtimlpostprocess does the following:• Loads the YOLO ( YOLOv5, YOLOv8, YOLOX, or YOLO-NAS) submodule.• Produces results as structures of text. • Sends them to the sink pad of qtimetamux. |
qtimlpostprocess — classification | a. Receives the inference tensors from the classification model. b. Converts the inference tensors on its sink pad into formats such as video or text that the multimedia plugins can process later. c. Applies the threshold to the chosen number of results. d. Loads the corresponding modules for classification models. In this use case, qtimlpostprocess does the following:• Loads the submodule of the model. • Produces results as video frames with classification labels. • Sends them to the sink pad of qtivcomposer. |
qtimlpostprocess — segmentation | a. Receives the inference tensors on its sink pad. b. Converts the inference tensors into video formats that the multimedia plugins can process later. c. Produces the semantic segmentations for the frame. d. Loads the corresponding modules for the segmentation models. In this use case, qtimlpostprocess does the following:• Loads the deeplab-argmax submodule.• Produces video frames with segmentation masks. • Sends them to the sink pad of qtivcomposer. |
qtimlpostprocess — pose | a. Receives the inference tensors on its sink pad. b. Converts the inference tensors into video formats that the multimedia plugins can process later. c. Applies the threshold to the chosen number of results. d. Loads the corresponding modules for various pose estimation models. In this use case, qtimlpostprocess does the following:• Loads the HRNet module.• Produces results as video frames with poses drawn. • Sends them to the sink pad of qtivcomposer. |
Known Issues
Config #2
Config #2
- Unexpected crashes in the device are observed occasionally. Restart the device.
- GPU usage may be shown as 0 due to Qualcomm Profiler limitations on the platform.
- Two USB Cameras operating in YUYV space may not work simultaneously. To check if your camera is in YUYV space, see
Prerequisite: Obtain image format and size. - The CPU and DDR thermals are fixed at
35 ℃forDragonwing IQ-8275andDragonwing IQ-9075.
Troubleshooting
Model not available after running the download script?
Model not available after running the download script?
Running sample applications from the UART shell
Running sample applications from the UART shell
sudo to copy them to the /etc/models directory:Cannot locate the qticamsrc plugin?
Cannot locate the qticamsrc plugin?
GStreamer logging and debugging
GStreamer logging and debugging


