# Image classification

Source: [https://docs.qualcomm.com/doc/80-70015-15B/topic/image-classification.html](https://docs.qualcomm.com/doc/80-70015-15B/topic/image-classification.html)

Before executing the pipeline command for a model,
            make sure to follow the required [prerequisites](https://docs.qualcomm.com/doc/80-70015-15B/topic/ai-hub-imsdk.html#ai_hub_imsdk__aihub-imsdk-prereq)

## GoogLeNetQuantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/googlenet_quantized.tflite ! queue ! \
    qtimlvclassification threshold=51.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Mobilenet,q-offsets=<53.0>,q-scales=<0.08174873143434525>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## Inception-V3-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/inception_v3_quantized.tflite ! queue ! \
    qtimlvclassification threshold=51.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Inception,q-offsets=<33.0>,q-scales=<0.18740029633045197>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## MobileNet-v2-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/mobilenet_v2_quantized.tflite ! queue ! \
    qtimlvclassification threshold=51.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Mobilenet,q-offsets=<69.0>,q-scales=<0.2386164367198944>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## MobileNet-v3-Large-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/mobilenet_v3_large_quantized.tflite ! queue ! \
    qtimlvclassification threshold=51.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Mobilenet,q-offsets=<99.0>,q-scales=<0.18705224990844727>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## ResNet18-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/resnet18_quantized.tflite ! queue ! \
    qtimlvclassification threshold=30.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnetnet,q-offsets=<68.0>,q-scales=<0.14944985508918762>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## ResNet101-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/resnet101_quantized.tflite ! queue ! \
    qtimlvclassification threshold=51.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnet,q-offsets=<46.0>,q-scales=<0.2186901867389679 >;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## ResNeXt50-Quantized 

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/resnext50_quantized.tflite ! queue ! \
    qtimlvclassification threshold=35.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnetnet,q-offsets=<30.0>,q-scales=<0.06314703077077866>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## ResNeXt101-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/resnext101_quantized.tflite ! queue ! \
    qtimlvclassification threshold=35.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnetnet,q-offsets=<37.0>,q-scales=<0.1848793774843216>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## Shufflenet-v2-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/shufflenet_v2_quantized.tflite ! queue ! \
    qtimlvclassification threshold=35.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnetnet,q-offsets=<69.0>,q-scales=<0.14428946375846863>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## SqueezeNet-1\_1-Quantized

     gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/squeezenet1_1_quantized.tflite ! queue ! \
    qtimlvclassification threshold=25.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnetnet,q-offsets=<0.0>,q-scales=<0.16435524821281433>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

## WideResNet50-Quantized

    gst-launch-1.0 -e --gst-debug=2 \
    filesrc location=/opt/video.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split \
    split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<640, 360>" ! queue ! waylandsink sync=true fullscreen=true \
    split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
    external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/wideresnet50_quantized.tflite ! queue ! \
    qtimlvclassification threshold=35.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \
    extra-operation=softmax constants="Resnetnet,q-offsets=<44.0>,q-scales=<0.1439792960882187>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard

Last Published: Jan 21, 2026

[Previous Topic
AI Hub – Qualcomm IM SDK](https://docs.qualcomm.com/bundle/publicresource/80-70015-15B/topics/ai-hub-imsdk.md) [Next Topic
Object detection](https://docs.qualcomm.com/bundle/publicresource/80-70015-15B/topics/object-detection.md)