跳到主要内容

自带模型

synap

SyNAP AI 工具包提供了卓越的灵活性,可执行多种神经网络,并高效利用可用的硬件加速器。 SyNAP 工具包允许您将模型从其原始格式转换为针对目标硬件优化的内部表示。 在本教程中,您将学习如何自带模型,将其优化为适用于 Synaptics Astra SL16xx 处理器,并实现高性能推理速度。

在本教程中,您将通过将 tflite 模型转换为 synap 模型格式来优化模型。 您可以导入 mobilenet_v2 来自 Kaggle 的 TensorFlow Lite 模型,并将其专门为 Synaptics Astra 板的 NPU/GPU 编译。

编译模型可以使其针对确切的 NPU or GPU 片上资源进行优化,从而显著提高推理速度。 工具包还支持高级操作,如量化、预处理,甚至是安全签名和加密,详见 SyNAP AI toolkit 本指南中将使用的手册。

信息

来自 TensorFlow, Caffe, or ONNX 框架的模型可以通过一个 CLI 命令优化为适用于任意 Astra 芯片。

synap convert --target {$CHIP_MODEL} --model example.{$MODEL_FORMAT}

For example:

synap convert --target SL1680 --model example.tflite

编译模型

如果您想在本地计算机上设置环境并优化模型,可以参考此 tutorial.

为了节省环境设置时间,您可以直接在 Google Colab Notebook 上进行模型编译和优化:

Open Compiling a model to Synaptics Astra Google Colab

important

完成 Colab 后,您将为 Synaptics Astra™ Machina™ SL1680 / SL1640 上的 NPU 和 Machina SL1620 上的 GPU 编译 MobileNetv2。 完成后,您需要从 Colab 下载 converted-model/model.synap from Colab 以在下一节中运行于您的开发板。

上传模型到 Astra 开发板

您现在应该已编译并下载 model.synap 到您的主机。

现在您可以通过终端将其上传到您的 Machina board in a terminal with:

adb push model.synap /home/weston/model.synap

在 Machina 开发板上进行推理计时

在您的开发机上,打开指向 Astra 的 ADB shell:

adb shell

然后运行 synap_cli 命令并使用随机输入:

cd /home/weston/
synap_cli -r 5 random

您应该可以看到以下推理输出,使用的是我们优化后的 mobilenet_v2-1-0-224-quantized.tflite:

Flush/invalidate: yes Loop period (ms): 0 Network inputs: 1 Network outputs: 1 Input buffer: input size: 150528 : random Output buffer: output size: 1001

Predict #0: 9.01 ms Predict #1: 1.90 ms Predict #2: 1.89 ms Predict #3: 1.89 ms Predict #4: 1.89 ms

Inference timings (ms): load: 29.18 init: 15.56 min: 1.89 median: 1.89 max: 9.01 stddev: 2.85 mean: 3.31

信息

以上结果来自 SL1680 开发板,该板使用 NPU 运行模型。

使用模型进行图像分类

Astra 开发板上预装了一些示例图像,例如 goldfish_224x224.jpg:

goldfish

要使用刚刚为 NPU/GPU 优化的模型对该图像进行图像分类,可以运行以下命令:

MODELS=/usr/share/synap/models/
synap_cli_ic -m model.synap $MODELS/image_classification/imagenet/sample/goldfish_224x224.jpg

您应该会看到置信度最高的结果是类别 2。您可以在以下网址查看对应标签: imagenet labels list.

恭喜您

您刚刚从 Kaggle 导入了一个模型,优化为适用于 NPU,并在 Synaptics Astra 上运行成功!

这是一个简单的示例,更多内容请参考 Optimize Ultralytics YOLO for the edge using SyNAP 教程将为您详细介绍模型优化过程。