# Image classification Source: [https://docs.qualcomm.com/doc/80-70014-15B/topic/image-classification.html](https://docs.qualcomm.com/doc/80-70014-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-70014-15B/topic/ai-hub-imsdk.html#ai_hub_imsdk__aihub-imsdk-prereq) ## GoogLeNetQuantized gst-launch-1.0 -e --gst-debug=2 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-75.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-95.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-59.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-29.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=40.0 results=5 module=mobilenet labels=/opt/imagenet_labels.txt \ extra-operation=softmax constants="Resnetnet,q-offsets=<-60.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-82.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-98.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-91.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-59.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-128.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 \ qtiqmmfsrc name=camsrc ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,framerate=30/1,compression=ubwc ! queue ! tee name=split \ split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 180>" ! queue ! waylandsink sync=false 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=<-84.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-70014-15B/topics/ai-hub-imsdk.md) [Next Topic Object detection](https://docs.qualcomm.com/bundle/publicresource/80-70014-15B/topics/object-detection.md)