Prerequisites
Try me
Try me
Some of the steps in the pre-requisties will be removed from future releases once the necessary fixes are mainlined.
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:
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:Enable qticamsrc
In the terminal of the target device, run the following command to enable the
qticamsrc on Config #2: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
In the terminal of the target device, run the following command to enable the
GPU delegate and backend:
wpctl status and run the following command:AI Applications
Object detection and display
The gst-ai-object-detection.py script receives an RTSP stream as a source, decodes it, uses YOLOv8 LiteRT model to identify the object in a scene from the camera stream and overlay the bounding boxes over the detected objects. The results are shown on the display. For information about the plugins used in this pipeline, see Pipeline flow.This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-ai-object-detection.py

Try me
Try me
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | yolov8_det_quantized.tflite, yolox_quantized.tflite | yolov8.json, yolox.json |
| Qualcomm Neural Processing SDK | yolonas.dlc | yolonas.json |
Run the application on the target device
Download artifacts
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Run the application
Run any of the following use cases:To display all available options:To stop the use case, press CTRL + C.
- Display with the primary and secondary cameras respectively:
- Display with input from a video file:
- YOLO-NAS with Qualcomm Neural Processing SDK runtime:
- YOLOv8 with LiteRT:
Both
yolox_quantized.tflite and yolov8_det_quantized.tflite model files use the Yolov8 module.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:| Process | Description |
|---|---|
qticamsrc | 1. Collects the video stream (source) and creates two copies of the source: • One stream is sent to the qtimetamux plugin to retain the video stream. • The other stream is sent to an ML inferencing pipeline. |
filesrc | Reads the video data. |
qtimlvconverter | 1. Receives the video stream on its sinkpad. 2. Performs preprocessing: color conversion, scaling, normalization. 3. Converts the video stream to a tensor stream on its source pad. |
qtimltflite | Loads the object detection model, runs inference, and produces a tensor stream with detection results. |
qtimlpostprocess | Converts inference tensors into bounding boxes and labels. Loads the YOLOv8 submodule and sends results to qtimetamux. |
qtimetamux | Synchronizes video and bounding box metadata streams. Attaches bounding boxes as GstVideoRegionOfInterest metadata. |
qtivoverlay | Overlays bounding boxes on the video frame using CL. |
waylandsink | Renders the video stream on a local display via Weston. |
filesink | Writes the video to a file. |
Decode and object detection using RTSP stream
The gst-rtspsrc-detection-display.py script receives an RTSP stream as a source, decodes it, uses YOLOv8 LiteRT model to identify the object in a scene from the camera stream and overlay the bounding boxes over the detected objects. The results are shown on the display. For information about the plugins used in this pipeline, see Pipeline flow.This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-rtspsrc-detection-display.py

Try me
Try me
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
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Expected Output

Pipeline Flow
| Process | Description |
|---|---|
rtspsrc | Receives the RTSP stream from rtsp:///live. |
rtph264depay | Extracts the video data from the RTSP stream. |
h264parse | Parses the H.264 video. |
v4l2h264dec | Decodes the video. |
qtimlvconverter | Preprocesses frames (color conversion, scaling, normalization) and converts to tensor stream. |
qtimltflite | Runs object detection inference. |
qtimlpostprocess | Converts inference tensors into bounding boxes and labels. |
qtimetamux | Synchronizes video and metadata streams. |
qtivoverlay | Overlays bounding boxes on the video frame. |
waylandsink | Renders the video stream on a local display. |
Object detection and classification
The gst-camera-two-stream-detection-and-classification-side-by-side.py application uses a YOLOX LiteRT model to detect andinception_v3 to classify objects in the scene displayed by the AI overlay composer.
For information about the plugins used in this pipeline, see Pipeline flow.
This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-camera-two-stream-detection-and-classification-side-by-side.py

Try me
Try me
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
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Expected Output
Detection and classification display are shown side-by-side.Pipeline Flow
| Process | Description |
|---|---|
qticamsrc | Collects two video streams — one for detection, one for classification — each split via tee. |
qtimlvconverter | Preprocesses frames for each branch (color conversion, scaling, normalization). |
qtimltflite | Runs detection (YOLOX) and classification (InceptionV3) inference sequentially. |
qtimlpostprocess (detection) | Converts detection tensors to bounding boxes and labels. |
qtimlpostprocess (classification) | Converts classification tensors to label overlay frames. |
qtimetamux | Synchronizes video and metadata for the detection branch. |
qtivoverlay | Overlays bounding boxes on the detection stream. |
qtivcomposer | Composes the detection and classification streams side by side. |
waylandsink | Renders the composed output on a local display. |
Known Issues
Config #2
Config #2
Output labels are blurred.
Object detection, classification, and segmentation
The gst-filesrc-2detection-classification-segmentation-side-by-side.py script identifies objects, classifies scenes, and produces semantic segmentation from a video file. The output is displayed side by side. For information about the plugins used in this pipeline, see Pipeline flow.This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-filesrc-2detection-classification-segmentation-side-by-side.py

Try me
Try me
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | detection: yolox_quantized.tfliteclassification: inception_v3_quantized.tflitesegmentation: deeplabv3_plus_mobilenet_quantized.tflite | detection: yolox.jsonclassification: classification.jsonsegmentation: deeplabv3_resnet50.json |
Run the application on the target device
Download artifacts
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Expected Output
The four streams are previewed side by side on a local display.Pipeline Flow
| Process | Description |
|---|---|
filesrc | Reads the video data from a file. |
qtdemux | Demultiplexes the video data. |
h264parse | Parses H.264 video. |
v4l2h264dec | Decodes the H.264 video. |
qtimlvconverter | Preprocesses frames for each inference branch. |
qtimltflite | Runs detection, classification, and segmentation inference. |
qtimlpostprocess (detection) | Produces bounding boxes and labels. |
qtimlpostprocess (classification) | Produces classification label frames. |
qtimlpostprocess (segmentation) | Produces segmentation mask frames via deeplab-argmax. |
qtimetamux | Synchronizes video and metadata for the detection branch. |
qtivoverlay | Overlays bounding boxes on the detection stream. |
qtivcomposer | Composes all four streams side by side. |
waylandsink | Renders the composed output on a local display. |
Camera encode, object detection, and display
The gst-camera-two-stream-encode-file-detection-display.py application encodes the camera stream to a file while simultaneously running YOLOX object detection and displaying results. For information about the plugins used in this pipeline, see Pipeline flow.This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-camera-two-stream-encode-file-detection-display.py

Try me
Try me
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
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Expected Output
The output is saved at/etc/media/test.mp4.Pipeline Flow
| Process | Description |
|---|---|
qticamsrc | Collects two streams — one for detection, one for encoding. |
v4l2h264enc | Encodes H.264 video. |
h264parse | Parses H.264 video. |
mp4mux | Multiplexes video into MP4. |
qtimlvconverter | Preprocesses frames for detection inference. |
qtimltflite | Runs YOLOX object detection inference. |
qtimlpostprocess | Produces bounding boxes and labels. |
qtimetamux | Synchronizes video and metadata. |
qtivoverlay | Overlays bounding boxes on the video frame. |
filesink | Saves the encoded video to a file. |
waylandsink | Renders the detection output on a local display. |
Parallel inference using Python
The gst-parallel-inference.py application receives a video input from a camera, file, or RTSP stream and runs four-channel parallel AI inference (classification, object detection, pose detection, and segmentation). For information about the plugins used in this pipeline, see Pipeline flow.This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-parallel-inference.py

Try me
Try me
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
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Expected Output
The four inference results are displayed side by side on the screen.
Pipeline Flow
| Process | Description |
|---|---|
qticamsrc / filesrc / rtspsrc | Captures stream from camera, file, or RTSP. |
v4l2h264dec | Decodes H.264 video. |
qtimlvconverter | Preprocesses frames for each of the four inference branches. |
qtimltflite | Runs detection, classification, segmentation, and pose inference in parallel. |
qtimlpostprocess (detection) | Produces bounding boxes and labels. |
qtimlpostprocess (classification) | Produces classification label frames. |
qtimlpostprocess (segmentation) | Produces segmentation mask frames. |
qtimlpostprocess (pose) | Produces pose key point frames via HRNet module. |
qtimetamux | Synchronizes video and metadata for the detection branch. |
qtivoverlay | Overlays bounding boxes on the detection stream. |
qtivcomposer | Composes all four output streams side by side. |
waylandsink | Renders the composed output on a local display. |
Daisy chain detection and pose detection using Python
The gst-ai-daisychain-detection-pose.py application performs cascaded object detection and pose detection with input from a camera, file, or RTSP stream. For information about the plugins used in this pipeline, see Pipeline flow.This application isn’t supported in the Config #1 of the QLI 2.0 GA release.
gst-ai-daisychain-detection-pose.py

Try me
Try me
Sample Model and Label Files
| Runtime | Model file | Label file |
|---|---|---|
| LiteRT | detection: yolox_quantized.tflitepose: hrnet_pose_quantized.tflite | detection: yolox.jsonpose: hrnet_pose.json, hrnet_settings.json |
Run the application on the target device
Download artifacts
Ensure that you complete the
Prerequisites. This downloads all required artifacts to the target device.Expected Output

Pipeline Flow
| Process | Description |
|---|---|
qticamsrc / filesrc / rtspsrc | Captures stream from camera, file, or RTSP. |
v4l2h264dec | Decodes H.264 video. |
qtivsplit | Crops full frame into smaller frames based on detected bounding boxes (maximum 4). |
qtimlvconverter | Preprocesses frames for detection (stage 1) and pose estimation (stage 2). |
qtimltflite | Runs detection and pose inference sequentially. |
qtimlpostprocess (detection) | Produces bounding boxes. Loads YOLOv8 submodule. |
qtimlpostprocess (pose) | Produces pose key point frames. Loads HRNet module. |
qtimetamux | Synchronizes video and metadata. |
qtivcomposer | Composes the final output stream. |
waylandsink | Renders the output on a local display. |
Troubleshooting
Model not available after running the download script?
Model not available after running the download script?
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:
Running sample applications from the UART shell
Running sample applications from the UART shell
Remount the file system with read/write permissions:For Qualcomm Linux:
Cannot locate the qticamsrc plugin?
Cannot locate the qticamsrc plugin?
If you cannot locate the qticamsrc plugin, ensure that the camera server is
running and clear the GStreamer cache using the following commands:
GStreamer logging and debugging
GStreamer logging and debugging
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–7):To redirect logs to a file for offline analysis:
