NPU 应用场景分享

Quectel Pi H1 单板电脑中,NPU 资源应用场景包括:图像分类、目标检测、联合分隔等。下面以图像分类中的 ResNeXt50 机器学习模型为例,可以对 Imagenet 数据集中的图像进行分类。它还可以作为构建更复杂模型的主干,用于特定用例。

下载量化模型和 laber

https://developer.quectel.com/wp-content/uploads/2025/06/resnext50_quantized.tflite.zip

部署模型

1.将模型和标签文件部署到 Quectel Pi H1 中,通过 adb 或者 scp 把这两个部署到 /opt 目录下。

2.模型特性

  • 模型检查点:Imagenet

  • 输入分辨率:224x224

  • 参数数量:88.7M

  • 模型大小:87.3 MB

连接显示器

  • 准备显示器,并连接显示器到 Quectel Pi H1 上。

运行命令

  • 在设备终端运行以下命令以确保结果显示在连接的显示器上:

    export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
    
  • 在设备中运行以下命令:

    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=256,height=144 ! queue ! mixer.
    

命令说明:

  • gst-launch-1.0 这是 GStreamer 的命令行工具,用于启动一个 GStreamer 管道(pipeline)。-e 参数表示在管道结束时退出,而不是继续运行。

  • –gst-debug=2:设置调试级别为 2,显示调试信息

  • filesrc location=/opt/video.mp4:指定输入视频文件路径。

  • !:是一个连接符号,用于将前一个元素的输出连接到后一个元素的输入。

  • qtdemux:将输入视频文件解析为多个流。

  • queue:用于缓冲输入数据。

  • h264parse:将输入数据解析为 H.264 格式。

  • v4l2h264dec:将 H.264 格式的数据解码为 YUV 格式。

  • capture-io-mode=5: 指定解码器 输入端口(Capture Side) 的内存访问模式。

  • output-io-mode=5: 指定解码器 输出端口(Output Side) 的内存访问模式。

  • tee name=split:将输入数据分割为两个分支。

  • split.:第一个分支用于显示原始视频流。

  • qtivcomposer:用于组合多个视频流。

  • waylandsink:将组合后的视频流显示在屏幕上。

  • split.:第二个分支用于进行图像分类。

  • qtimlvconverter:用于将输入数据转换为模型输入格式。

  • qtimltflite:用于执行模型推理。

  • delegate=external:使用 外部加速库(即非 TFLite 默认的 CPU 后端)来运行模型推理,通常用于调用硬件加速器。

  • external-delegate-path=libQnnTFLiteDelegate.so:指定 TensorFlow Lite 的 外部加速库(Delegate) 的路径。

  • external-delegate-options=“QNNExternalDelegate,backend_type=htp;”:指定外部加速库的选项,这里指定了后端类型为 HTP(High-Throughput Processing)。

  • model=/opt/resnext50_quantized.tflite:指定模型路径。

  • qtimlvclassification:用于对模型输出进行分类。

  • video/x-raw,format=BGRA,width=256,height=144:指定输出视频格式和尺寸。

  • mixer:将两个分支的输出组合在一起。

  • threshold=35.0:设置置信度阈值,用于过滤低置信度的分类结果。

  • results=5:设置返回的分类结果数量。

  • module=mobilenet:指定使用的模型名称。

  • labels=/opt/imagenet_labels.txt:指定标签文件路径。

  • extra-operation=softmax:对模型输出进行Softmax操作,得到每个类别的概率。

  • constants=“Resnetnet,q-offsets=<30.0>,q-scales=<0.06314703077077866>;”:指定模型量化参数。

  • gst-launch-1.0 -e --gst-debug=2:设置调试级别为 2,显示调试信息。

  • video/x-raw,format=BGRA,width=256,height=144: 输出视频格式和尺寸

  • Resnetnet,q-offsets=<30.0>,q-scales=<0.06314703077077866>: 模型量化参数。

运行命令后,显示器会显示视频流和图像分类结果

image