Ameba AI 简介

概述

Ameba AI 是为 Realtek AmebaAIoT SoC 设计的全面人工智能(AI)解决方案。它为开发者提供了强大的工具和库,用于在应用中实现 AI 功能。 借助 NN 硬件引擎加速推理过程,SoC 支持广泛的 AI 应用,包括音频分类、物体检测等。它在性能和效率方面进行了优化,使开发者能够在资源受限的设备上运行 NN 模型,而不会影响功能。 Ameba AI 的设计友好且易于使用,提供全面的文档和示例,帮助开发者快速上手。无论您是初学者还是经验丰富的 AI 开发者,Ameba AI 都能提供将 AI 项目变为现实所需的工具和资源。

../../_images/ameba_edge_ai_intro.png

Ameba NN

RTL8735B:

RTL8735B 配备了 NN 硬件引擎,可加速神经网络 推理过程。从不同 AI 框架(如 Keras、TensorFlow、TensorFlow Lite、PyTorch、Caffe、ONNX、Darknet 等) 获得的 NN 模型,可以通过 Verisilicon 的 Acuity Toolkit 转换为网络二进制图( .nb)文件。转换后的模型可以部署在 RTL8735B 上,并使用提供的 SDK 示例进行执行。

下图展示了整体 NN 模型部署工作流程:

../../_images/NN_model_workflow.png

NN 模型工作流程

使用自定义 NN 模型

本节提供在 Ameba 上部署预训练模型的高层概述。 详细的分步说明将在本指南的后续章节中介绍。

../../_images/yolov4_workflow.png

YOLOv4-tiny 部署工作流程

通用部署工作流程包括以下阶段:

  1. 模型训练:根据目标 AI 应用选择合适的 NN 模型, 并使用兼容的框架进行训练。

  2. 模型转换:使用 Acuity Toolkit 将训练好的模型转换并量化为 .nb 网络二进制文件。

  3. 模型部署:将 .nb 文件集成到 SDK 中,实现预处理 和后处理,并编译固件。

  4. 推理执行:在设备上运行部署的模型,执行 AI 推理。

支持的 NN 模型

FreeRTOS 和 Arduino SDK 支持以下 NN 模型类型。自定义模型可按照部署指南进行添加。

RTL8735B:
SDK 中预部署的 NN 模型

类别

模型

仓库

目标检测

Yolov3-tiny, Yolov4-tiny, Yolov7-tiny

https://github.com/AlexeyAB/darknet

目标检测

YOLOv7-tiny-pt

https://github.com/WongKinYiu/yolov7

人脸检测

SCRFD

https://github.com/deepinsight/insightface/tree/master/detection/scrfd

人脸识别

MobileFaceNet

https://github.com/deepinsight/insightface/tree/master/recognition

声音分类

YAMNet

https://github.com/tensorflow/models/tree/master/research/audioset/yamnet

参考:NN 模型库

支持的 AI 框架

Acuity Toolkit 支持从以下 AI 框架进行模型转换:

支持的 AI 框架及导入格式

AI 框架

导入文件格式

Caffe

.caffemodel

TensorFlow

.pb

TensorFlow Lite

.tflite

Darknet

.cfg

ONNX

.onnx

PyTorch

.pt

Keras

.h5

备注

从已量化的 ONNX、TensorFlow 和 TensorFlow Lite 模型转换而来的 Acuity Networks 无需再次量化。请注意,NPU 不支持 per-channel 量化的模型—— 请确保您的模型使用 per-tensor 量化。

小技巧

对于 PyTorch 框架,强烈建议先将模型导出为 .onnx 格式, 以确保转换成功。

支持的模型量化类型

要充分发挥硬件加速器的能力运行 NN 模型,必须使用支持的量化类型对模型进行量化。

支持的量化类型如下:

RTL8735B:
NPU 硬件支持的量化类型

量化器

量化类型

按通道或按张量

asymmetric_affine

uint8

仅按张量

dynamic_fixed_point

int8/int16

仅按张量

NPU 包含三个主要单元: NNTPPPU (SHADER)。 NN 和 TP 是硬件加速器; PPU(SHADER) 是通用可编程单元。 NN/TP 仅支持上述列出的量化类型。 其他量化类型将在 PPU 上运行,速度会明显变慢。

使用 NBinfo 工具(包含在 Acuity Toolkit 中)检查导出模型中每个操作将在哪个单元上运行。

备注

供应商建议将原始 float32 模型导入 Acuity Toolkit,并使用 Acuity 的量化脚本进行量化。 由其他训练框架(例如 TensorFlow)量化的模型仍应使用上述支持的量化类型。

下一步