瑞芯微Rockchip开发者社区
直播中

jf_07365693

2年用户 380经验值
擅长:嵌入式技术 控制/MCU
私信 关注

【幸狐Omni3576边缘计算套件试用体验】RKNN 推理测试与图像识别

RKNN_build

【幸狐 Omni3576 边缘计算套件测评】RKNN 推理测试与图像识别

本文介绍了幸狐 Omni3576 边缘计算套件实现 RKNN 推理和图像物体识别的测试流程,包括 RKNN 介绍、环境搭建、推理测试、板端运行等。

介绍

本节介绍了 RKNN 模型、RKNN-Toolkit2 工具,便于理解和熟悉后续的开发环境搭建流程。

RKNN

RKNN 是 Rockchip NPU 平台使用的模型类型,以 .rknn 后缀结尾的模型文件。

瑞芯微 Rockchip 提供了完整的模型转换 Python 工具,方便用户将自主研发的算法模型转换成 RKNN 模型,同时 Rockchip 也提供了C/C++Python API 接口。

LuckFox Core3576 系列核心板搭载瑞芯微 RK3576 芯片,内置瑞芯微自研NPU。该NPU具有高运算精度,支持 INT4、INT8、INT16/FP16/BF16、TF32 混合量化。

RKNN-Toolkit2

RKNN-Toolkit2 工具在操作系统上提供 C 或 Python 接口,简化模型的部署和运行。

用户可以通过该工具完成模型转换、量化、推理、性能和内存评估、量化精度分析以及模型加密等功能。

RKNN_frame.jpg

首先需要在计算机上运行 RKNN-Toolkit2 工具,将训练好的模型转换为 RKNN 格式模型,之后使用 RKNN C API 或 Python API 在开发板上进行部署。

环境搭建

本节介绍了 RKNN 推理测试的开发环境搭建流程,包括 Ubuntu 系统、Conda 环境部署等。

Ubuntu 22.04 操作系统

Windows 系统下安装 VM 虚拟机, 下载 并在虚拟机中部署 Ubuntu 22.04 系统,分配磁盘空间大于 100GB 。

ubuntu2204_image.jpg

RKNN-Toolkit2 安装

克隆 rknn-toolkit2 库文件(约 3 GB)

git clone https://github.com/airockchip/rknn-toolkit2.git

GitHub 访问受限可修改 host 文件,详见: Gitee .

安装对应的 python 环境

sudo apt-get update
 sudo apt-get install python3 python3-dev python3-pip
 sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc

安装 RKNN-ToolKit2 依赖包

pip3 install -r rknn-toolkit2.3.0/rknn-toolkit2/packages/x86_64/requirements_cpxx-2.2.0.txt

注意根据不同的Python版本,选择安装对应的依赖包。

安装 RKNN-ToolKit2

pip3 install rknn-toolkit2/packages/rknn_toolkit2-2.2.0+81f21f4d-cp310-cp310-linux_x86_64.whl

执行指令

python3
 from rknn.api import RKNN

验证安装效果。

rknn-toolkit_install.png

Conda 安装

推荐使用 Conda 创建 python 虚拟环境,便于在各种应用场景下灵活切换,避免出现版本兼容问题导致无法运行。

在 AI 模型的训练、模型转换的过程中需要使用不同的 python 虚拟环境。

安装 miniconda

下载安装包

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh

安装miniconda

chmod 777 Miniconda3-4.6.14-Linux-x86_64.sh
 bash Miniconda3-4.6.14-Linux-x86_64.sh

在计算机终端,进入 Conda base 环境

source ~/miniconda3/bin/activate

miniconda_install.jpg

创建 RKNN-Toolkit2 Conda 环境

创建 RKNN-Toolkit2 开发 Conda 环境, -n 参数表示环境名称,指定 python 版本为 3.8

conda create -n RKNN-Toolkit2 python=3.9

进入 RKNN-Toolkit2 Conda 环境

conda activate RKNN-Toolkit2

验证 Python 版本是否使用正确

python --version

conda_rknn-toolkit2.jpg

获取 RKNN-Toolkit2 安装包

git clone https://github.com/airockchip/rknn-toolkit2.git

clone_rknn-toolkit2.jpg

进入文件夹

cd rknn-toolkit2

安装 RKNN-Toolkit2 相关的依赖库, cp38 为对应的 Conda 环境 python 版本,实验使用的版本为 3.8 所以使用后缀为 cp38 的依赖项

pip install tf-estimator-nightly==2.8.0.dev2021122109 
 pip install -r rknn-toolkit2/packages/requirements_cp39-2.2.0.txt -i https://pypi.mirrors.ustc.edu.cn/simple/

安装 RKNN-Toolkit2

pip install rknn-toolkit2/packages/rknn_toolkit2-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

验证是否安装成功

python
 >>> from rknn.api import RKNN

conda_rknn-toolkit2_install.jpg

至此,RKNN 推理测试的开发环境搭建完成。

推理测试

本节介绍了 RKNN 推理测试的相关流程,包括 rknn_model_zoo 模型部署、编译及板端测试。

rknn_model_zoo

rknn_model_zoo 是瑞芯微官方提供的 RKNPU 支持的各种主流算法的部署示例,最新的示例支持 mobilenet 模型部署和 yolo 模型部署。

1.克隆 rknn_model_zoo 库文件

git clone https://github.com/airockchip/rknn_model_zoo.git

2.获取 Yolov10 ONNX 模型文件

cd rknn_model_zoo/examples/yolov10/model
 chmod a+x download_model.sh
 ./download_model.sh

3.执行 rknn_model_zoo/examples/yolov10/python 目录下的模型转换程序 convert.py

conda activate RKNN-Toolkit2
 cd rknn_model_zoo/examples/yolov10/python
  python3 convert.py ../model/yolov10n.onnx rk3576

输出模型

convert_rknn_model_yolov.jpg

并存储于 ../model/yolov10.rknn

yolov10_rknn_model.jpg

python3 实现模型转换的语法

python3 convert.py <onnx_model> <TARGET_PLATFORM> <dtype(optional)> <output_rknn_path(optional)>

相关参数

  • <onnx_model>:ONNX 模型路径
  • <TARGET_PLATFORM>:指定 NPU 平台名,这里指rk3576
  • <quant_dtype>:可选项,可以指定为i8fpi8表示进行量化,fp表示不量化,默认为i8
  • <output_rknn_path>:可选项,用于指定 RKNN 模型的保存路径,默认保存在 ONNX 模型同一目录下,名称为yolov10n.rknn

编译和构建

将 ONNX 模型转换成 RKNN 模型后,对 rknn_model_zoo/examples/yolov10 目录下的例程进行交叉编译。

编译前需设置环境变量

export GCC_COMPILER=/home/ljl/omni3576/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu

值得注意的是,工具链的获取需要先 编译官方 SDK .

踩坑指南:下载 SDK 压缩文件后解压得到 .repo 文件,该文件默认被隐藏,需要打开显示隐藏的文件夹选项。

解压完成后执行 .repo/repo/repo sync -l 解包;设置环境变量后编译镜像 ./build.sh lunch

执行 rknn_model_zoo 目录下的 build-linux.sh 脚本

chmod +x ./build-linux.sh
 ./build-linux.sh -t rk3576 -a aarch64 -d yolov10

该脚本将编译例程

rknn_model_zoo_build.jpg

交叉编译完成后在 rknn_model_zoo 目录下会生成 install 目录,

rknn_yolov10_demo.jpg

包含编译出来的程序和库文件

rknn_yolov10_demo_files.jpg

运行程序

rknn_yolov10_demo 文件夹传输至开发板,

scp H:\\rknn_yolov10_demo luckfox@192.168.31.108:/home/luckfox

或 ADB 执行

adb push H:\\rknn_yolov10_demo /home/luckfox

或使用 FileZilla 软件将文件夹拖拽至板端。

SSH 执行编译

cd rknn_yolov10_demo
 scp -r rknn_yolov10_demo/ luckfox@192.168.31.108:/home/luckfox

yolov_build.jpg

修改目标程序权限,执行程序

chmod a+x rknn_yolov10_demo
 ./rknn_yolov10_demo ./model/yolov10.rknn ./model/bus.jpg

rknn_build_output_fig.jpg

推理完成后生成图片 out.png

rknn_out_default.jpg

注意到图中识别到的物体标签包括 person、bus,以及相应的准确率。

可识别的物体标签文件位于 rknn_yolov10_demo/model/coco_80_labels_list.txt

Tables 标签
person
bicycle 自行车
car 汽车
motorcycle 摩托车
airplane 飞机
bus 公交车
train 火车
truck 卡车
boat
traffic light 交通灯
fire hydrant 消防栓
stop sign 停止标志
parking meter 停车计时器
bench 板凳
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra 斑马
giraffe 长颈鹿
backpack 背包
umbrella
handbag 手提包
tie 绳子
suitcase 手提箱
frisbee 飞盘
skis 雪橇
snowboard 滑雪板
sports ball 体育用球
kite 风筝
baseball bat 棒球棒
baseball glove 棒球手套
skateboard 滑板
surfboard 冲浪板
tennis racket 网球拍
bottle 瓶子
wine glass 酒杯
cup 杯子
fork
knife
spoon 勺子
bowl
banana 香蕉
apple 苹果
sandwich 三明治
orange 橙子
broccoli 西兰花
carrot 胡萝卜
hot dog 热狗
pizza 比萨饼
donut 甜甜圈
cake 蛋糕
chair 椅子
couch 沙发
potted plant 盆花
bed
dining table 餐桌
toilet 厕所
tv 电视
laptop 笔记本电脑
mouse 鼠标
remote 遥控器
keyboard 键盘
cell phone 手机
microwave 微波炉
oven 烤箱
toaster 面包机
sink 水槽
refrigerator 冰箱
book
clock 时钟
vase 花瓶
scissors 剪刀
teddy bear 玩具熊
hair drier 吹风机
toothbrush 牙刷

扩展测试

可将目标图片放置于 rknn_yolov10_demo/model 文件夹内,执行上述流程,即可在板端运行程序实现推理识别

十二生肖

rknn_out_animals.jpg

办公桌面

rknn_out_mydesktop.jpg

餐厅

rknn_out_dinner.jpg

卧室

rknn_out_bedroom.jpg

客厅

rknn_out_livingroom.jpg

总结

本文介绍了幸狐 Omni3576 边缘计算套件实现 RKNN 推理和物体识别的测试流程,包括 RKNN 介绍、环境搭建、推理测试、板端运行等,并对一些日常场景进行推理识别,得益于板端强大的硬件支持,识别速度极快,取得了令人满意的识别效果,为人工智能和图像识别相关领域的开发提供了经验和参考。

RKNN_out_figure

回帖(3)

无垠的广袤

2025-3-20 18:46:03
厉害了,请问怎么添加更多的识别种类,提高识别率和识别效果?
1 举报
  • jf_07365693: 添加识别标签可以参考 yolo 模型教程;识别率的话影响因素就比较多了,可以增加样本数量和训练迭代次数,提高采集分辨率等方案。

cszzlsw

2025-3-20 22:59:22
这识别准确率感人啊
1 举报
  • jf_07365693: 实际场景的识别效果确实不是那么完美哈,需要增加标签数量,让它变得更聪明

ElecFans小喇叭

2025-3-21 11:15:55
大佬牛呀
举报

更多回帖

发帖
×
20
完善资料,
赚取积分