# Hardware benchmarking application
Source: [https://docs.qualcomm.com/doc/80-70020-50/topic/vision_ai_demo_app.html](https://docs.qualcomm.com/doc/80-70020-50/topic/vision_ai_demo_app.html)
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.
Note: This application isn't supported on the Ubuntu Server.
The following figure shows the pipeline, which processes the input from a set of USB
cameras to generate various outputs.
For more information about the plugins used in these pipelines, see [Pipeline flow](https://docs.qualcomm.com/doc/80-70020-50/topic/vision_ai_demo_app.html#vision_ai_demo_app__section_znh_hmx_tfc).
## Sample model and label files
Table : Sample model and label files for hardware benchmarking application
| Runtime | Model files | Label files |
| :--- | :--- | :--- |
| LiteRT |
inception_v3_quantized.tflite
fcn_resnet50_quantized
hrnet_pose_quantized.tflite
midas_quantized.tflite
yolox_quantized.tflite
|
classification.labels
voc_segmentation.labels
hrnet_pose.labels
monodepth.labels
yolox.labels
|
## Prepare QLI image
This application requires extra packages on top of the Qualcomm IM SDK image. To
prepare the QLI image:
- Download the Qualcomm Yocto source code and clone the QIM SDK layer into your
workspace. For instructions, see [Build Qualcomm IM SDK image](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/github_workflow_unregistered_users.html#build-qualcomm-im-sdk-image).
- Update the
<workspace>/layers/meta-qcom-distro/recipes-products/images/qcom-console-image.bb
file as follows to include the required
packages:
cd /layers/meta-qcom-distro/recipes-products/images/Copy to clipboard
- Append the following code to the `qcom-console-image.bb`
file
CORE_IMAGE_EXTRA_INSTALL:append = " \
git \
python3 \
python3-pip \
python3-psutil \
python3-pycairo \
python3-pygobject \
"Copy to clipboard
- Compile the source code to build your custom QLI image. For more instructions,
see [Build Qualcomm IM SDK image](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/github_workflow_unregistered_users.html#build-qualcomm-im-sdk-image).
- Flash the custom QLI images. For instructions on flashing the image, see [Flash software images](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/flash_images.html).
- Verify the custom image using the command `git -v`. The latest
git version indicates that the custom image is successfully flashed.
## Set up the target device
1. To access the target device from your Linux host computer, set up SSH. For
instructions, see [Sign in using SSH](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-254/how_to.html#use-ssh).
Note: 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](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-18/samples.html).
If you face
issues with display, see [Display troubleshooting](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-18/debug.html).
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](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-251/faqs.html#usb-firmware).
4. Install the Qualcomm^®^ Profiler on the Linux host computer. For
installation instructions see [Qualcomm Profiler](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-10/13-performance_tools.html#qualcomm-profiler).
After connecting
the device to the PC, run InstallerLE from the following locations:
- For
Linux:
cd “/opt/qcom/Shared/QualcommProfiler/API/target-le”Copy to clipboard
- For
windows:
cd “C:\Program Files(x86)\Qualcomm\Shared\QualcommProfiler\API\target-le”Copy to clipboard
## Run the application on the target device
1. Sign in to the target device over SSH and download the script to set up the
hardware benchmarking
application:
curl -L -O https://raw.githubusercontent.com/quic/sample-apps-for-qualcomm-linux/refs/heads/main/qualcomm-linux/scripts/setup_hw_benchmarking_app.shCopy to clipboard
2. Set permissions for the following
script:
chmod +x setup_hw_benchmarking_app.shCopy to clipboard
3. Set up the benchmarking
application:
bash setup_hw_benchmarking_app.shCopy to clipboard
Note: If any `weston.ini` file exist, a
back-up is created prior to pushing it to the application. The file is
restored to the original state upon exiting the application.
4. The target device reboots once the application set up is complete. You can
see the following TRIA application screen with **Start** and **Exit**
icons.

5. Select the TRIA icon on the top panel to start the application.
6. 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.
Note: For more information and features of
the application, select the **Info** icon.
7. Select the **Exit** icon to close the application.
Note: Closing the application reboots the device and
restores the initial Weston configuration.
## Pipeline flow
The following table lists the plugins used in hardware benchmarking
application pipelines:| **Plugin** | **Description** |
| --- | --- |
| Camera source: v4l2src |
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.
|
| [qtimlvclassification](https://docs.qualcomm.com/doc/80-70020-50/topic/qtimlvclassification.html) | Handles inference results from any classification model.
Applies a threshold to the chosen number of results. For quantized model, add Softmax and constants (q-offsets and q-scales).
Loads the MobileNet postprocessing module.
Produces results as video frames with classification labels.
Sends these processed results to the sink pad of qtivcomposer.
|
| [qtimlvdetection](https://docs.qualcomm.com/doc/80-70020-50/topic/qtimlvdetection.html) | Handles inference results from any object detection model.
Applies a threshold to the chosen number of results.
Loads the YOLO (YOLOv5, YOLOv8, YOLOX, or YOLO-NAS) module.
Produces video frames with only bounding boxes that can be overlaid on objects.
Sends these processed frames to the sink pad of qtivcomposer.
|
| [qtimlvsegmentation](https://docs.qualcomm.com/doc/80-70020-50/topic/qtimlvsegmentation.html) | Converts the inference tensors that it receives on its sink pad into video formats that the multimedia plugins can use for further processing. |
| [qtimlvpose](https://docs.qualcomm.com/doc/80-70020-50/topic/qtimlvpose.html) |
Applies a threshold to the chosen number of results.
Loads corresponding modules for various pose detection models.
In the use case described in this section, qtimlvpose does the following:
Loads the HRNet module.
Produces results in the form of video frames with drawn poses.
Sends the results to the sink pad of qtivcomposer for further processing or display.
|
## Known issues
- The video sinks appear at random positions on the screen. To avoid overlap, drag
the video sink widget to the required position.
- Unexpected device crashes are observed occasionally. Restart the device.
- GPU usage may be shown as 0 due to Qualcomm Profiler limitations on the
platform.
- The segmentation application internally uses a compute-heavy
`FCN-ResNet50_w8a8.tflite` model, which results in frame
drops. You can observe a 100% DSP usage with the segmentation use case.
**Parent Topic:** [Run AI/ML sample applications](https://docs.qualcomm.com/doc/80-70020-50/topic/ai-ml-sample-applications.html)
Last Published: Jan 30, 2026
[Previous Topic
AI USB camera](https://docs.qualcomm.com/bundle/publicresource/80-70020-50/topics/ai-usb-camera.md) [Next Topic
Run multimedia sample applications](https://docs.qualcomm.com/bundle/publicresource/80-70020-50/topics/multimedia-sample-applications.md)