# Upscale images with super resolution

Before running the pipeline command for a model, follow the required [Prerequisites](https://docs.qualcomm.com/doc/80-70018-15B/topic/ai-hub-qualcomm-im-sdk.html#prerequisites)

Note

The input video needs dimensions of 128x128 for optimal results.

Run the following command to ensure your result is displayed on the connected display.

export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
    Copy to clipboard

## QuickSRNetLarge-Quantized

QuickSRNetLarge is designed for upscaling images on mobile platforms to sharpen them in real-time.

The AI Hub model is based on [this implementation of QuickSRNetLarge-Quantized](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/quicksrnet).

- Model: [quicksrnetlarge_quantized.tflite](https://aihub.qualcomm.com/iot/models/quicksrnetlarge_quantized)

gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/etc/media/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<960, 1080>" sink_1::position="<960, 0>" sink_1::dimensions="<960, 1080>" ! \
    queue ! waylandsink sync=true fullscreen=true \
    split. ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/quicksrnetlarge_quantized.tflite ! queue ! \
    qtimlvsuperresolution module=srnet constants="qsrnetlarge,q-offsets=<0.0>,q-scales=<1.0>;" ! video/x-raw,format=RGB ! queue ! mixer.
    Copy to clipboard

## QuickSRNetMedium-Quantized

QuickSRNetMedium is designed for upscaling images on mobile platforms to sharpen them in real-time.

The AI Hub model is based on [this implementation of QuickSRNetMedium-Quantized](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/quicksrnet).

- Model: [quicksrnetmedium_quantized.tflite](https://aihub.qualcomm.com/iot/models/quicksrnetmedium_quantized)

gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/etc/media/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<960, 1080>" sink_1::position="<960, 0>" sink_1::dimensions="<960, 1080>" ! \
    queue ! waylandsink sync=true fullscreen=true \
    split. ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/quicksrnetmedium_quantized.tflite ! queue ! \
    qtimlvsuperresolution module=srnet constants="qsrnetlarge,q-offsets=<0.0>,q-scales=<1.0>;" ! video/x-raw,format=RGB ! queue ! mixer.
    Copy to clipboard

## QuickSRNetSmall-Quantized

QuickSRNetSmall is designed for upscaling images on mobile platforms to sharpen them in real-time.

The AI Hub model is based on [this implementation of QuickSRNetSmall-Quantized](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/quicksrnet).

- Model: [quicksrnetsmall_quantized.tflite](https://aihub.qualcomm.com/iot/models/quicksrnetsmall_quantized)

gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/etc/media/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<960, 1080>" sink_1::position="<960, 0>" sink_1::dimensions="<960, 1080>" ! \
    queue ! waylandsink sync=true fullscreen=true \
    split. ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/quicksrnetsmall_quantized.tflite ! queue ! \
    qtimlvsuperresolution module=srnet constants="qsrnetlarge,q-offsets=<0.0>,q-scales=<1.0>;" ! video/x-raw,format=RGB ! queue ! mixer.
    Copy to clipboard

## XLSR-Quantized

XLSR is designed for lightweight real-time upscaling of images.

The AI Hub model is based on [this implementation of XLSR-Quantized](https://github.com/quic/aimet-model-zoo/tree/develop/aimet_zoo_torch/xlsr).

- Model: [xlsr_quantized.tflite](https://aihub.qualcomm.com/iot/models/xlsr_quantized)

gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/etc/media/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! video/x-raw,format=NV12 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_0::position="<0, 0>" sink_0::dimensions="<960, 1080>" sink_1::position="<960, 0>" sink_1::dimensions="<960, 1080>" ! \
    queue ! waylandsink sync=true fullscreen=true \
    split. ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/xlsr_quantized.tflite ! queue ! \
    qtimlvsuperresolution module=srnet constants="qsrnetlarge,q-offsets=<0.0>,q-scales=<1.0>;" ! video/x-raw,format=RGB ! queue ! mixer.
    Copy to clipboard

Last Published: Oct 13, 2025

[Previous Topic
Apply semantic segmentation to frames of a video](https://docs.qualcomm.com/bundle/publicresource/80-70018-15B/topics/semantic-segmentation.md) [Next Topic
Troubleshooting and FAQ](https://docs.qualcomm.com/bundle/publicresource/80-70018-15B/topics/troubleshooting.md)