# Image classification and display with Neural Processing SDK
Source: [https://docs.qualcomm.com/doc/80-80020-50/topic/single-camera-stream-with-image-classification-and-display-with-mobilenet-v1.html](https://docs.qualcomm.com/doc/80-80020-50/topic/single-camera-stream-with-image-classification-and-display-with-mobilenet-v1.html)
The use cases implement an Inceptionv3 model with Qualcomm Neural Processing SDK to
classify scenes, either overlay or compose the classification labels, and then display the
results.
You can use any publicly available classification model with TensorFlow and convert it to
the `.dlc` format as described in [TensorFlow Model Conversion](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/model_conv_tensorflow.html).
## Use qtivoverlay plugin to apply classification overlay
Run the use case on the target
device:
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 ! queue ! tee name=split \
split. ! queue ! qtimetamux name=metamux ! queue ! qtivoverlay ! queue ! waylandsink fullscreen=true sync=false \
split. ! queue ! qtimlvconverter ! queue ! qtimlsnpe delegate=dsp model=/etc/models/inceptionv3.dlc ! queue ! \
qtimlpostprocess settings="{\"confidence\": 40.0}" results=2 module=mobilenet-softmax labels=/etc/labels/classification.json ! text/x-raw ! queue ! metamux.Copy to clipboard
To stop the use case, use CTRL + C.
The following figure shows the flow of the use case execution:
- Classify scenes from a video stream coming through a file source.
- Overlay classification labels using overlaylib.
- Display the results on a local display.
Figure : Pipeline for classification overlay
The following table provides the sequential processing stages of the pipeline
execution:
| Process | Description |
| --- | --- |
| File source: filesrc |
Captures the video stream using filesrc, followed by qtdemux, which demultiplexes the stream.
Weston renders the video stream and possible classifications generated for that scene on a local display device.
|
## Use qtivcomposer to mix original frame with classification mask
Run the use case on the target device:
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 ! queue ! \
tee name=split split. ! queue ! qtivcomposer name=mixer sink_1::position="<30, 30>" sink_1::dimensions="<320, 320>" ! queue ! waylandsink fullscreen=true \
split. ! queue ! qtimlvconverter ! queue ! qtimlsnpe delegate=dsp model=/etc/models/inceptionv3.dlc ! queue ! \
qtimlpostprocess settings="{\"confidence\": 40.0}" results=2 module=mobilenet-softmax labels=/etc/labels/classification.json ! \
video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard
To stop the use case, use CTRL + C.
The following figure shows the flow of the use case execution:
- Classify scenes from a video stream coming through a file source.
- Compose classification labels and video stream together using
qtivcomposer.
- Display the results to a local display.
Figure : Pipeline for classification using qtivcomposer
The following table provides the sequential processing stages of the pipeline
execution:
| Process | Description |
| --- | --- |
| File source: filesrc |
Captures the video stream using filesrc, followed by qtdemux, which demultiplexes the stream.