# Apply semantic segmentation to frames of a video

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

## DeepLabV3-Plus\_MobileNet

DeepLabV3 Quantized is designed for semantic segmentation at multiple scales and trained on various datasets.

The AI Hub model is based on [this implementation of DeepLabV3-Plus_MobileNet](https://github.com/jfzhang95/pytorch-deeplab-xception).

- Model: [DeepLabV3-Plus_MobileNet](https://aihub.qualcomm.com/iot/models/deeplabv3_plus_mobilenet)
- Label: [deeplabv3_resnet50.json](https://github.com/quic/sample-apps-for-qualcomm-linux/blob/main/qualcomm-linux/artifacts/json_labels/deeplabv3_resnet50.json)

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_1::alpha=0.5 ! 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=/etc/models/deeplabv3_plus_mobilenet_quantized.tflite ! queue ! \
    qtimlpostprocess module=deeplab-argmax labels=/etc/labels/deeplabv3_resnet50.json ! video/x-raw,format=BGRA,width=256,height=144 ! queue ! mixer.
    Copy to clipboard

## FCN-Resnet50

FCN\_ResNet50 is a quantized machine learning model that can segment images from the COCO dataset.

The AI Hub model is based on [this implementation of FCN-Resnet50](https://github.com/pytorch/vision/blob/main/torchvision/models/segmentation/fcn.py).

- Model: [FCN-Resnet50](https://aihub.qualcomm.com/iot/models/fcn_resnet50)
- Label: [deeplabv3_resnet50.json](https://github.com/quic/sample-apps-for-qualcomm-linux/blob/main/qualcomm-linux/artifacts/json_labels/deeplabv3_resnet50.json)

Note

This pipeline is currently not supported on Qualcomm Dragonwing™ RB3 Gen 2.

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_1::alpha=0.5 ! 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=/etc/models/fcn_resnet50_quantized.tflite ! queue ! \
    qtimlpostprocess module=deeplab-argmax labels=/etc/labels/deeplabv3_resnet50.json ! video/x-raw,format=BGRA,width=256,height=144 ! queue ! mixer.
    Copy to clipboard

## FFNet-40S

FFNet-40S is a “fuss-free network” that segments street scene images with per-pixel classes like road, sidewalk, and pedestrian.

It’s trained on the cityscapes dataset.

The AI Hub model is based on [this implementation of FFNet-40S](https://github.com/Qualcomm-AI-research/FFNet)

- Model: [FFNet-40S](https://aihub.qualcomm.com/iot/models/ffnet_40s)
- Label: [deeplabv3_resnet50.json](https://github.com/quic/sample-apps-for-qualcomm-linux/blob/main/qualcomm-linux/artifacts/json_labels/deeplabv3_resnet50.json)

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_1::alpha=0.5 ! 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=/etc/models/ffnet_40s_quantized.tflite ! queue ! \
    qtimlpostprocess module=deeplab-argmax labels=/etc/labels/deeplabv3_resnet50.json  ! \
    video/x-raw,format=BGRA,width=256,height=144 ! queue ! mixer.
    Copy to clipboard

## FFNet-54S

FFNet-54S is a “fuss-free network” that segments street scene images with per-pixel classes like road, sidewalk, and pedestrian.

It’s trained on the cityscapes dataset.

The AI Hub model is based on [this implementation of FFNet-54S](https://github.com/Qualcomm-AI-research/FFNet).

- Model: [FFNet-54S](https://aihub.qualcomm.com/iot/models/ffnet_54s)
- Label: [deeplabv3_resnet50.json](https://github.com/quic/sample-apps-for-qualcomm-linux/blob/main/qualcomm-linux/artifacts/json_labels/deeplabv3_resnet50.json)

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_1::alpha=0.5 ! 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=/etc/models/ffnet_54s_quantized.tflite ! queue ! \
    qtimlpostprocess module=deeplab-argmax labels=/etc/labels/deeplabv3_resnet50.json ! \
    video/x-raw,format=BGRA,width=256,height=144 ! queue ! mixer.
    Copy to clipboard

## FFNet-78S

FFNet-78S is a “fuss-free network” that segments street scene images with per-pixel classes like road, sidewalk, and pedestrian.

It’s trained on the cityscapes dataset.

The AI Hub model is based on [this implementation of FFNet-78S](https://github.com/Qualcomm-AI-research/FFNet).

- Model: [FFNet-78S](https://aihub.qualcomm.com/iot/models/ffnet_78s)
- Label: [deeplabv3_resnet50.json](https://github.com/quic/sample-apps-for-qualcomm-linux/blob/main/qualcomm-linux/artifacts/json_labels/deeplabv3_resnet50.json)

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_1::alpha=0.5 ! 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=/etc/models/ffnet_78s_quantized.tflite ! queue ! \
    qtimlpostprocess module=deeplab-argmax labels=/etc/labels/deeplabv3_resnet50.json ! \
    video/x-raw,format=BGRA,width=256,height=144 ! queue ! mixer.
    Copy to clipboard

Last Published: May 14, 2026

[Previous Topic
Detect objects](https://docs.qualcomm.com/bundle/publicresource/80-80022-15B/topics/object-detection.md) [Next Topic
Upscale images with super resolution](https://docs.qualcomm.com/bundle/publicresource/80-80022-15B/topics/super-resolution.md)