高通 Linux Gstreamer 用户手册(二)

使用 TFLite 进行图像分类和编码

这些用例使用 InceptionV3 TFLite 模型对单个摄像头流的场景进行分类,并叠加或合成分类标签,然后对流进行编码。

变体 1:使用 qtioverlay 插件来应用分类叠加

运行用例:

setprop persist.overlay.use_c2d_blit 2
gst-launch-1.0 -e 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 ! qtimetamux name=metamux ! queue ! qtioverlay ! queue ! v4l2h264enc capture-io-mode=5 output-io-mode=5 ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/inceptionv3.tflite ! queue ! qtimlvclassification threshold=40.0 results=2 module=mobilenet labels=/opt/classification.labels ! text/x-raw ! queue ! metamux.

如需停止用例,可按下 CTRL + C。

在这里插入图片描述

下图显示了用例执行流程:

  1. 识别从摄像头源传来的数据流。
  2. 使用 overlaylib 叠加分类标签。
  3. 将数据流编码为 H.264 码流。
  4. 将数据流多路复用到 MP4 容器中并存储为 MP4 文件。

pipeline 执行的顺序处理阶段如下表所示:
请添加图片描述

变体 2:使用 qtivcomposer 混合原始帧与分类掩码

运行用例:

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 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=5 output-io-mode=5 ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/video.mp4 split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/inceptionv3.tflite ! queue ! qtimlvclassification threshold=40.0 results=2 module=mobilenet labels=/opt/classification.labels ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.

如需停止用例,可按下 CTRL + C。
在这里插入图片描述
下图显示了用例执行流程:

  1. 识别从摄像头源传来的数据流。
  2. 使用 qtivcomposer 合成分类标签和视频流。
  3. 将数据流编码为 H.264 码流。
  4. 将数据流多路复用到 MP4 容器中,并将其存储为 MP4 文件。

pipeline 执行的顺序处理阶段如下表所示:
请添加图片描述

使用 TFLite 进行目标检测和显示

这些用例使用 YOLOv5 TFLite 模型来识别场景中的目标对象,在检测到的目标对象上叠加或合成边框,然后显示结果。

变体 1:使用 qtioverlay 插件应用边框叠加

运行用例:

setprop persist.overlay.use_c2d_blit 2
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 ! qtimetamux name=metamux ! queue ! qtioverlay ! queue ! waylandsink fullscreen=true split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/yolov5.tflite ! queue ! qtimlvdetection threshold=75.0 results=10 module=yolov5 labels=/opt/yolov5.labels constants="YoloV5,q-offsets=<3.0>,q-scales=<0.005047998391091824>;" ! text/x-raw ! queue ! metamux.

如需停止用例,可按下 CTRL + C。
在这里插入图片描述
下图显示了用例执行流程:

  1. 从摄像头源传来的视频流中识别场景中的目标对象场景。
  2. 使用 overlaylib 将边框叠加在检测到的目标对象上。
  3. 显示结果。

pipeline 执行的顺序处理阶段如下表所示:
请添加图片描述

变体 2:使用 qtivcomposer 混合原始帧与边框掩码

运行用例:

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::dimensions="<1920,1080>" ! queue ! waylandsink fullscreen=true split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/opt/yolov5.tflite ! queue ! qtimlvdetection threshold=75.0 results=10 module=yolov5 labels=/opt/yolov5.labels constants="YoloV5,q-offsets=<3.0>,q-scales=<0.005047998391091824>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.

如需停止用例,可按下 CTRL + C。

在这里插入图片描述
下图显示了用例执行流程:

  1. 从摄像头源传来的视频流中识别场景中的目标对象场景。
  2. 使用 qtivcomposer 合成以下内容:
    • 在检测的目标对象上的边框。
    • 原始视频流。
  3. 显示结果。

pipeline 执行的顺序处理阶段如下表所示:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值