开发板:ArmSoM-W3、ArmSoM-Sige7、ArmSoM-Sige5、ArmSoM-AIM7
操作系统:Debian 11/12
目的:介绍如何使用 Rockchip NPU SDK。
RK3576/RK3588 是 Rockchip 推出的高性能 8 nm AIoT 平台,其 NPU 可提供最高 6 TOPS 的高效神经网络推理算力,适用于图像识别、语音识别、自然语言处理等多种人工智能场景。
此外,RK3576/RK3588 NPU 支持 TensorFlow、PyTorch、Caffe、MXNet 等常用深度学习框架,为开发者提供丰富的工具和库,便于进行模型训练与推理,并处理各种大规模数据计算场景。
计算机视觉:NPU 可用于图像识别、目标检测和人脸识别等任务,广泛应用于安防监控、自动驾驶和医学影像分析等领域。
自然语言处理(NLP):NPU 可加速文本分类、情感分析和机器翻译等任务,提高大规模文本数据的处理效率。
语音识别与处理:在语音识别、语音合成等任务中,NPU 可提升处理速度和准确率,适用于智能语音助手、语音交互系统等场景。
智能家居与物联网:NPU 的低功耗特性适合智能家居设备、智能监控摄像头和可穿戴设备等物联网应用,可实现设备智能化与自动化。
医疗健康:在医学影像分析、疾病诊断和基因组学等领域,NPU 可加速大规模数据的处理与分析,协助医疗人员更准确地诊断疾病和制定治疗方案。
智能交通:在智能交通系统中,NPU 可用于车辆识别、交通流量监测和交通信号智能控制等任务,提高交通系统的效率与安全性。
Rockchip NPU SDK 包含两部分:PC 端工具 rknn-toolkit2 用于模型转换、推理和性能评估,可将 Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等主流框架的模型转换为 RKNN 模型,并在 PC 端模拟推理、计算耗时和内存开销;开发板端的 rknn 运行环境则包含一组 C API 库、与 NPU 通信的驱动模块以及可执行程序等。
RKNN 软件栈可帮助用户将 AI 模型快速部署到 Rockchip 芯片。整体框架如下:
要使用 RKNPU,首先需要在计算机上运行 RKNN-Toolkit2,将训练好的模型转换为 RKNN 格式,然后在开发板上通过 RKNN C API 或 Python API 执行推理。
RKNN-Toolkit2 是用于在 PC 和 Rockchip NPU 平台上进行模型转换、推理与性能评估的软件开发套件。
RKNN-Toolkit-Lite2 为 Rockchip NPU 平台提供 Python 编程接口,帮助用户部署 RKNN 模型,加快 AI 应用落地。
RKNN Runtime 为 Rockchip NPU 平台提供 C/C++ 编程接口,帮助用户部署 RKNN 模型,加快 AI 应用落地。
RKNPU 内核驱动负责与 NPU 硬件交互;该驱动已开源,可在 Rockchip 内核代码中找到。
|
RKNPU2 SDK v2.0.0-beta(适用于 RK3576/RK3562/RK3566/RK3568/RK3588/RV1103/RV1106):https://github.com/airockchip/rknn-toolkit2 模型库:https://github.com/airockchip/rknn_model_zoo 文档:https://github.com/airockchip/rknn-toolkit2/tree/master/doc |
导出 RKNN 模型的步骤
1.使用 1.4.0 或更高版本的 rknn-toolkit2。
2.切换为自行训练的模型时,请注意对齐 anchors 等后处理参数,否则可能导致后处理解析错误。
3.官网提供的 Rockchip 预训练模型可检测 80 类目标。使用自行训练的模型时,需要修改 include/postprocess.h 中的 OBJ_CLASS_NUM 和 NMS_THRESH 后处理参数。
4.此示例依赖 librga.so。编译和使用方法请参阅 https://github.com/airockchip/librga。
5.受硬件限制,此示例默认将 YOLOv5 模型的后处理放到 CPU 上执行。示例所提供的模型使用 ReLU 激活函数;与 SiLU 相比,其精度略有降低,但性能有明显提升。
1.编译:
首先设置 ANDROID_NDK_PATH,例如执行 export ANDROID_NDK_PATH=~/opts/ndk/android-ndk-r18b,然后运行以下命令:
./build-android.sh -t <target> -a <arch> [-b <build_type>]
Example:
./build-android.sh -t rk3568 -a arm64-v8a -b Release
2.推送可执行文件到开发板
通过 USB 将开发板连接到 PC,并将整个 demo 目录复制到 /data:
adb root
adb remount
adb push install/rknn_yolov5_demo /data/
3.运行
adb shell
cd /data/rknn_yolov5_demo/
export LD_LIBRARY_PATH=./lib
./rknn_yolov5_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn model/bus.jpg
注意:如果在 lib 目录中找不到 librga.so,请查找该库的位置并将其加入 LD_LIBRARY_PATH。可使用以下命令进行设置。
export LD_LIBRARY_PATH=./lib:<LOCATION_LIBRGA.SO>
H.264 视频
./rknn_yolov5_video_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn xxx.h264 264
注意:此示例需要 H.264 视频流,可使用以下命令转换:
ffmpeg -i xxx.mp4 -vcodec h264 xxx.h264
H.265 视频
./rknn_yolov5_video_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn xxx.hevc 265
注意:此示例需要 H.265 视频流,可使用以下命令转换:
ffmpeg -i xxx.mp4 -vcodec hevc xxx.hevc
RTSP 视频流
./rknn_yolov5_video_demo model/<TARGET_PLATFORM>/yolov5s-640-640.rknn <RTSP_URL> 265
|
1.请根据系统使用的 rga 驱动选择正确的 librga 库,具体依赖请参阅:https://github.com/airockchip/librga 2.RK3562 目前仅支持 H.264 视频流。 3.RTSP 视频流示例仅支持 Linux,暂不支持 Android。 4.输入的 H.264 视频流不能命名为“out.h264”,否则文件会被覆盖。 |