Skip to main content
This section covers QIM SDK AI sample applications that demonstrate vision, audio, and multi-model inference on Qualcomm platforms using LiteRT models accelerated on Qualcomm AI hardware. The following tables list all available GStreamer C/C++ AI applications and their platform support. Select the appropriate configuration tab for your setup.

Prerequisites

Some of the steps in the pre-requisties will be removed from future releases once the necessary fixes are mainlined.
1

Set up Wi-Fi

Connect to the Wireless Access Point (Wi-Fi Router):
Check the connection and device status:
Login to the target deviceLocate the IP address of the device according to the type of network connection, using the UART console on the Linux host:For Ethernet:
For Wi-Fi:
Use the IP address from the Linux host to establish an SSH connection to the device:
Example:
Connect to the SSH shell using the following password:
2

Download Models and Artifacts

On the target device, obtain the download_artifacts.sh script, set executable permissions, and run it to download the model, media, and label files:
3

Enable qticamsrc

In the terminal of the target device, run the following command to enable the qticamsrc on Config #2:
4

Enable libcamera

For Dragonwing RB3 Gen 2 Development Kit, enable the libcamera using the following instructions:
The libcamera plugin supports only the IMX577 camera sensor. Connect the IMX577 sensor before enabling libcamera.
In the terminal of the target device, enable the bootloader mode using the following command:
Once the device enters bootloader mode, flash the Vision Kit CDT file from the extracted folder:
You can obtain the cdt_vision_kit.bin file from Qualcomm multimedia proprietary image at images/rb3gen2-core-kit/qcom-multimedia-proprietary-image-rb3gen2-core-kit:
Reboot the device:
5

Enable Audio and GPU Delegate

In the terminal of the target device, run the following command to enable audio:
To set the default devices for sink and source, get the device numbers from wpctl status and run the following command:
In the terminal of the target device, run the following command to enable the GPU delegate and backend:

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 Pipeline Diagram Application: gst-ai-object-detection
When the software image includes the qticamsrc plugin, the camera framework uses it by default. If absent, the framework switches to libcamera instead. Since Config #1 lacks support for qticamsrc, the system defaults to libcamera.

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_detection.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For USB camera input, set the video-format, resolution, and framerate parameters in the config file to match the camera capabilities, see Configure USB camera.
The snpe-tensors field applies only to the SNPE runtime. To retrieve the output tensor names for a DLC model, open the model in Netron.
When using DLC models from the AI Hub, the snpe-tensors field is optional.
Camera source, LiteRT model, DSP runtime

Expected Output

Detected objects with bounding boxes and labels are overlaid on the video and displayed on the local display.Output Diagram

Pipeline Flow

The following table lists the plugins used in the object detection pipeline:

Config JSON Field Description

Known issues

Green tint is observed on the display with libcamera.
Green tint is observed on the display with libcamera.

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 Pipeline Diagram Application: gst-ai-classification
When the software image includes the qticamsrc plugin, the camera framework uses it by default. If absent, the framework switches to libcamera instead. Since Config #1 lacks support for qticamsrc, the system defaults to libcamera.

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_classification.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For USB camera input, set the video-format, resolution, and framerate parameters in the config file to match the camera capabilities, see Configure USB camera.
Camera source, LiteRT model, DSP runtime

Expected Output

The classified object label and confidence score are overlaid on the video and displayed on the local displayExpected output for gst-ai-classification application

Pipeline Flow

The following table lists the plugins used in the classification pipeline:

Config JSON Field Description

Known Issues

Green tint is observed on the display with libcamera.
Green tint is observed on the display with libcamera.

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. Pipeline Diagram Application: gst-ai-face-detection

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_face_detection.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
File source, LiteRT model, DSP runtime

Pipeline Flow

The following table lists the plugins used in the face detection pipeline:

Config JSON Field Description

Known issues

Detection accuracy may decrease when human faces are far from the camera.
Detection accuracy may decrease when human faces are far from the camera.

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. Pipeline Diagram Application: gst-ai-segmentation

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_segmentation.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
File source, LiteRT model, DSP runtime

Expected Output

The segmented data is displayed on the local display.Expected output for gst-ai-classification application

Pipeline Flow

The following table lists the plugins used in the segmentation pipeline:

Config JSON Field Description

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. Pipeline Diagram Application: gst-ai-pose-detection

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_pose.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For USB camera input, set the video-format, resolution, and framerate parameters in the config file to match the camera capabilities, see Configure USB camera.
To change the threshold, you must configure the confidence value in the hrnet_settings.json file.
File source, LiteRT model, DSP runtime

Expected Output

The displayed output shows the detected pose of the objects.Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the pose detection pipeline:

Config JSON Field Description

Known Issues

  • 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.
  • 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.
For better accuracy and detection results, use the gst-ai-daisychain-detection-pose application.

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. Pipeline Diagram Application: gst-ai-monodepth

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_monodepth.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
File source, LiteRT model, DSP runtime

Expected Output

The overlaid model output stream is shown side by side with the live feed.Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the monodepth pipeline:

Config JSON Field Description

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. Pipeline Diagram Pipeline Diagram Application: gst-ai-superresolution

Input and Output Capabilities

Sample Model Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-superresolution.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
The video super‑resolution application requires an input video resolution of 128 × 128.
File source, LiteRT model, DSP runtime

Expected Output

The output is displayed on an HDMI monitor.Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the superresolution pipeline:

Config JSON Field Description

Known Issues

File source output fails to render correctly.

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. Pipeline Diagram Pipeline Diagram Application: gst-ai-event-encoder

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-event-encoder.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
File source, LiteRT model, DSP runtime

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:

Config JSON Field Description

Known Issues

On the 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. Pipeline Diagram Application: gst-ai-metadata-parser-example

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

To view the bounding box information along with the human count, run the following command before running the application:
The sample application uses the /etc/configs/config-metadata-parser-example.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
File source, LiteRT model, DSP runtime

Expected Output

Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the metadata parser pipeline:

Config JSON Field Description

AI USB Camera

The gst-ai-usb-camera-app streams video from a USB webcam connected to the Qualcomm 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. Pipeline Diagram Pipeline Diagram Application: gst-ai-usb-camera-app

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-usb-camera-app.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For USB camera input, set the video-format, resolution, and framerate parameters in the config file to match the camera capabilities.
You can run the Yolo-NAS-Quantized.tflite model using the YOLOv8 value in the yolo-model-type field.
The snpe-tensors field applies only to the SNPE runtime. To retrieve the output tensor names for a DLC model, open the model in Netron.
When using DLC models from the AI Hub, the snpe-tensors field is optional.
If the USB camera isn’t detected on the target device, Download the required firmware. See Download PCIe to USB controller firmware.
RTSP input, LiteRT, YOLOx model and DSP runtime

Expected Output

Output Diagram

Pipeline flow

The following table lists the plugins used in AI USB camera pipelines:

Config JSON field description


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 the face_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.
This application isn’t supported in Config #1 for the QLI 2.0 RC3 release because CPU runtime is not supported.
The following figure shows the pipeline, which receives the input, preprocesses it, runs inferences on AI hardware, and displays the results on the screen. Pipeline Diagram Application: gst-ai-face-recognition For information about the plugins used in the pipeline flow, see Pipeline flow.

Input and Output Capabilities

Sample Model and Label Files

Register a face for facial recognition

Before running the gst-ai-face-recognition application, you can register a face for secure verification and authentication:
1
Ensure that you complete the Prerequisites.
2
To register a face, use the following gst-pipeline on the target device shell:
3
To prepare for capturing a facial image, do the following:
1
Select the following options from the list. Choose the number corresponding to the option:
  • PLAYING: Move the pipeline to the Playing state.
  • Plugin Modecamsrccapture-image: Capture the image using a camera source.
2
Using the live preview on the display, face the camera and ensure that the camera is pointed straight and there is only one person in the frame.
3
In the terminal, enter 1 for the following values:
  • GstImageCaptureMode for arg0.
  • guint for arg1.
4
To capture all the sides of your face, select capture-image do the following for each side:
1
Left and right: Turn your head left by 40° while keeping the landmarks visible, then repeat steps 3 and 4. Turn your head right (by 40°) and repeat.
2
Up and down: Raise your head by 30° while keeping the landmarks visible, then repeat steps 3 and 4. Lower your head (by 30°) and repeat.
5
To stop the pipeline, use (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.
6
On the target device, go to /etc/data/, find the tensor bins. To pull the bins from the target device to the Linux host computer, run the following commands:
7
To merge the tensor bins with all the facial properties into a cohesive image, download and run the facedb.py script in the same directory as the tensor bins on the Linux host computer.
1
Download the facedb.py script:
2
Run the script. Note that <Name of the person> is case and style sensitive. Ensure that you use the same name consistently.
8
Push the face.bin binary to /etc/data directory and rename it to face0.bin.
9
To generate the face_recognition.json file and register the new person into the database, use the following reference label file for two-person registered face:
Update the ID field according to the number in the list. If more faces are registered, add the structure in a new line within face_recognition.json.
10
To generate the face_recognition_settings.json file use the following reference label file:
11
To push the updated face_recognition.json and face_recognition_settings.json files to the /etc/labels directory on the target device.

Run the application on the target device

The following commands provide the default model and label paths. If you have a different folder structure, replace the default paths in the command-line parameters. See Sample model and label files.
1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-face-recognition file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
Camera source, LiteRT, and DSP runtime

Expected output

Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the daisychain detection and classification pipeline:

Config JSON Field Description

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.
This application isn’t supported in the QLI 2.0 RC3 release.

Setup the host container

Pipeline DiagramTo set up the host container, do the following on your Linux host computer with Docker:
1
Ensure that you complete the Prerequisites.
3
Download and extract Qualcomm Neural Processing SDK:
4
Download scripts and model attachments to run the sample mode.
  1. Download the Dockerfile and scripts and prepare the directory for storing the image.
    The snpe-container-python file has the Dockerfile and scripts. Run all the commands from this directory.
  2. Copy the test image in a new folder called inputs and rename the test image as input_image.jpg.
  3. 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.
  4. Build the Docker image. Populate the <path-to-sdk-tools>/targets/config.json fileThe following code shows an updated sample config.json file.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
    • 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.
5
Build the Docker image:
Save the Docker image:
The Docker image is compressed and the TAR file is saved at the directory specified in the URL field in config.json.
  • If Additional_tag_image is empty, the compressed image is stored as qml.tar.
  • If Additional_tag_image is populated, the compressed image is stored as qml-<field value>.tar.
6
Push the Docker image on the target device:
7
Start the container:
8
Run the Docker image on the target device:
A Docker image called qml should be running. To check this image, run the following command:
9
Push input_image.jpg to the target device.
10
Copy the deeplab_resnet50.dlc model to the Docker:

Run the application on the target device

1
Run the Qualcomm Neural Processing SDK model using Python bindings:
  • The output image is saved in the container at /opt/.
  • The output from the DLC model (RAW file) is saved at /mnt/qml/output/.
2
Copy the output from the container to the target device:
3
To pull the image from the target device to host, run the command on your Linux host computer:

Expected Result

Pipeline Diagram

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. Pipeline Diagram Application: gst-ai-audio-classification

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-audio-classification.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
File source, LiteRT model, CPU runtime

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:

Config JSON Field Description

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. Pipeline Diagram Pipeline Diagram Application: gst-ai-daisychain-detection-classification

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config_daisychain_detection_classification.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For USB camera input, set the video-format, resolution, and framerate parameters in the config file to match the camera capabilities, see Configure USB camera.
If a drop in performance is observed, you can use YOLOv8 LiteRT model. For YOLOv8 export instructions, see Prerequisites.
File source, LiteRT model, DSP runtime

Expected Output

The cropped video frame is overlaid on the frame and displayed on a local device.Pipeline DiagramPipeline Diagram
The classification models trained on the Imagenet dataset don’t contain the person class.

Pipeline Flow

The following table lists the plugins used in the daisychain detection and classification pipeline:

Config JSON Field Description

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. Pipeline Diagram Application: gst-ai-daisychain-detection-pose

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-daisychain-detection-pose.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For QCS6490, if file-path and rtsp-ip-port are not present in the configuration file, then the camera input is selected.
For USB camera input, set the video-format, resolution, and framerate parameters in the config file to match the camera capabilities, see Configure USB camera.
If a drop in performance is observed, you can use YOLOv8 LiteRT model. For YOLOv8 export instructions, see Prerequisites.
File source, LiteRT model, DSP runtime

Expected Output

The cropped video frame is overlaid on the frame and displayed on a local device.Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the daisychain detection and pose pipeline:

Config JSON Field Description

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
    This application isn’t supported in Config #1 for the QLI 2.0 RC3 release because CPU runtime is not supported.
    The output is displayed on an HDMI display, saved as an H.264 encoded MP4 file, or converted into an RTSP stream.
For information about the plugins used in this pipeline, see Pipeline flow. Pipeline Diagram Application: gst-ai-multistream-inference

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-multistream-inference.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
If a drop in performance is observed, you can use YOLOv8 LiteRT model. For YOLOv8 export instructions, see Prerequisites.
Object Detection on 8 H.264 file inputs, LiteRT model, DSP runtime

Expected Output

Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the metadata parser pipeline:

Config JSON Field Description

Known Issues

Low FPS and frame drop is observed during inference on 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.
This application isn’t supported in Config #1 for the QLI 2.0 RC3 release because CPU runtime is not supported.
Pipeline Diagram Application: gst-ai-multistream-batch-inference

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-multistream-batch-inference.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For 16 and 24 streams, add the required elements in the pipeline-info parameter. The id parameter takes the values from 0 to 5 for each added batch.
File source, LiteRT model, DSP runtime

Expected Output

Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the metadata parser pipeline:

Config JSON Field Description

Known Issues

Segmentation fault is observed on 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.
This application isn’t supported in Config #1 for the QLI 2.0 RC3 release because CPU runtime is not supported.
Pipeline Diagram Application: gst-ai-multi-input-output-object-detection

Input and Output Capabilities

Sample Model and Label Files

Prerequisites

Update the following commands according to the Python version in your Linux host computer.
  • Create the Python 3.8 virtual environment:
  • Generate the yolov5.tflite model:
  • In the terminal of the host computer, run the following command to push the model to the target device:
If any model isn’t available after downloading the script file, you can download the model from IoT– Qualcomm AI Hub.
  • 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

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

Enter SSH shell and copy the YOLOX label files to YOLOv5:
Run the application:
The sample application uses the /etc/configs/config-multi-input-output-object-detection.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.
  • 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.
Ensure that the total number of input streams from the camera, RTSP, and file source doesn’t exceed 6.
For QCS6490, if file-path and rtsp-ip-port are not present in the configuration file, then the camera input is selected.
File source, LiteRT model, DSP runtime

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 Diagram

Pipeline Flow

The following table lists the plugins used in the metadata parser pipeline:

Config JSON Field Description

Known Issues

A drop in fps is observed when the application runs at 1080p resolution on 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.
This application isn’t supported in Config #1 for the QLI 2.0 RC3 release because CPU runtime is not supported.
For information about the plugins used in this pipeline, see Pipeline flow. Pipeline Diagram Application: gst-ai-parallel-inference

Input and Output Capabilities

Sample Model and Label Files

Run the application on the target device

1

Download artifacts

Ensure that you complete the Prerequisites. This downloads all required artifacts to the target device.
2

Run the application

The sample application uses the /etc/configs/config-parallel-inference.json file to read the input parameters.To display all available options:
To stop the use case, press CTRL + C.

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.
For QCS6490, if file-path and rtsp-ip-port are not present in the configuration file, then the camera input is selected.
File source, LiteRT model, DSP runtime

Expected Output

After performing the four parallel inferences, the results are displayed side by side on the screen.Pipeline Diagram

Pipeline Flow

The following table lists the plugins used in the metadata parser pipeline:

Config JSON Field Description

Known Issues

  • Identifies the pose of only one person even if many people are present in the frame.
  • The Inception V3 model doesn’t include a person class because it is trained on the ImageNet dataset 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.
This application isn’t supported in Config #1 for the QLI 2.0 RC3 release because CPU runtime is not supported.
Pipeline Diagram For information about the plugins used in this pipeline, see Pipeline flow.

Sample Model and Label Files

Setup the target device

1
To access the target device from your Linux host computer, set up SSH. For instructions, see Sign in using SSH.
If SSH is already set up, you can skip this step.
2
Use the HDMI port to connect the display to the device. For instructions, see Set up HDMI display.If you face issues with display, see Troubleshoot display issues.
3
Connect two USB cameras and a mouse to the target device.If you face any issues with the camera or mouse connectivity, update the USB firmware. For more information, see FAQs.
4
Install the Qualcomm® Profiler on the Linux host computer. For installation instructions see Qualcomm Profiler.After connecting the device to the PC, run InstallerLE from the following locations:
  • For Linux:
  • For Windows:

Run the application on the target device

1
Clone the repository for the demo application and push it to the target device:
2
Sign in to the target device over SSH and run the script to set up the resources for hardware benchmarking application:
3
Start the application:
Pipeline Diagram
4
Select the preferred sample applications from the Camera 1 and Camera 2 drop-downs. The system thermal and hardware usage details appear at the bottom of the screen.You may run different sample applications to check the output and understand the hardware utilization.
  • 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 Diagram
For more information and features of the application, select the Info icon.
5
Select the Exit icon to close the application.

Pipeline Flow

The following table lists the plugins used in the metadata parser pipeline:

Known Issues

The following known issues are observed:
  • 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 ℃ for Dragonwing IQ-8275 and Dragonwing IQ-9075.

Troubleshooting

If any model isn’t available after downloading the script file, you can download the model manually from IoT — Qualcomm AI Hub and push it to the target device:
For example:
Remount the file system with read/write permissions:For Qualcomm Linux:
For Ubuntu Server:
For Ubuntu Server, copy the model files to the user home folder and then use sudo to copy them to the /etc/models directory:
If you cannot locate the qticamsrc plugin, ensure that the camera server is running and clear the GStreamer cache using the following commands:
To enable basic GStreamer logging, run the following before launching the application:
To increase verbosity for specific plugins, use a comma-separated list with log levels (1–9):
To redirect logs to a file for offline analysis: