本帖最后由 Kingdom 于 2026-1-24 13:52 编辑
注:本文是以瑞芯微RK3588作为硬件平台而进行的示例开发,其他Rock chip系列的产品如:RK3568, RV1126等;理论上示例的内容也同样可以作为参考;
相关学习参考资料网址:
Rockchip官方的模型转换工具下载地址:https://github.com/airockchip/rknn-toolkit2
Rockchip官方提供的模型示例下载地址:https://github.com/airockchip/rknn_model_zoo
PaddleOCR v4模型学习地址:https://github.com/PaddlePaddle/PaddleOCR
应用程序下载:
本示例代码的github地址:https://github.com/Kingdomwhisky/ai_RK3588_project 本人CSDN博客上已有同步贴子,可前往进行更详细的了解:基于OCR文字检测识别算法的控制系统+RK3588平台+应用层程序-CSDN博客
前言
Rock chip这一系列的芯片,算是目前国内很流行的ARM芯片,目前其产品广泛应用于智能座舱、机器人、工业视觉、消费电子等多个领域;尤其是在当下AI这一时代的浪潮下,其高端的功能和应用也不断吸引着开发者去探索和创新;本文的目的之一就是想结合目前Rock chip官方提供的AI模型例程,参考正点原子的测试教程,再加上个人浅薄的理解,进行一些应用方面的拓展开发。希望本文给出的示例内容,能够给在嵌入式领域前行的各位带来或多或少的帮助或灵感。
1 相关算法模型
无论是何种AI模型,其都遵循着:模型训练 —> API接口调用模型 —> 编写应用程序 —> 经过交叉编译 —> 在硬件平台上实现运行 若想在开发板上正常运行AI模型,那么大致需要满足以下条件:
1> 交叉编译工具:/opt/atk-dlrk3588-toolchain/bin/aarch64-buildroot-linux-gnu ; 用于编译C++程序的;
2> 模型转换工具: RKNN-Toollkit2 是基于 Python 语言实现的模型转换工具,可将其他训练框架导出的模型
转为 RKNN 模型,并提供较为有限的推理接口,协助用户测试模型转换效果。RKNPU2 是板端的组件,提供 NPU 驱动,并基于 C 语言提供模型加载、模型推理等功能。RKNPU2 具有一致的版本号。不同版本之间可能存在不兼容问题,为了避免造成不必要的麻烦,推荐用户使用同一版本的 RKNN-Toolkit2、RKNPU2;【下载地址见文章顶部,目前最新版本为2.3.2;本示例使用的是2.0.0-beta0版】
3>部署到硬件平台: 下载模型(xxx.onnx),转换模型(xxx.rknn), 交叉编译出可执行文件(rknn_xxx_demo);
PaddleOCR v4 是一款基于百度飞桨(PaddlePaddle)深度学习框架开发的文字识别(OCR)工具。它继承了 PaddleOCR 系列模型的优势,并在性能和功能上进行了全面升级。其文字识别功能就是本示例的核心,利用其文字识别这一点来进行个性化的拓展应用;
2 应用程序功能介绍
将摄像头的数据作为输入传递给ppocr模型进行实时推理,mipi摄像头(imx415)通过ppocr的AI模型算法识别到的文字信息,将特定的信息作为相关的控制命令,从而达到文字识别控制系统这一目的;
目前已实现的功能:
1> 通过识别文字"ON" / “OFF” 来控制音乐的播放和结束;
2> 待开发(大家可自由发挥【狗头】)……
3 程序说明
对应的程序代码已上传至github网站上:https://github.com/Kingdomwhisky/ai_RK3588_project
各位可自行前往下载查看,如果觉得还不错的话请帮我点亮星星,让笔者也能star+1,嘿嘿…… 可运行的应用程序已作为本文的附件上传,如需要直接在本平台下载即可(分别为:music.rar,rknn_PPOCR_CAMERA_demo.rar,由于平台附件有限制就将music文件分离出来单独上传,大家下载好后都放到同一个文件夹目录下即可)。
4 功能演示
演示视频地址:https://www.bilibili.com/video/BV1PPzKBpEEw/?vd_source=744160e6008aa9d91be374ebcfc105da
5 结语
那么至此,本文也算是告一段落了。已经有很长一段时间没写过和技术相关的帖子了,好像自从毕业后就没再碰过了,开始工作后就老想着躺平了(哈哈~ )。说实话如果不是因为个人的变数,估计我也不会去主动学习RK3588;而在一开始学习3588的时候也挺迷茫的,里面不仅功能模块繁多,还分不同的大方向,一开始也是抱着能成功运行例程就算OK的心态进行下去的;在经过一段时间的摸索后,还是决定编写点个人的东西出来,也算是给自己当前阶段的学习成果做个总结了;当本示例编写出来后自身突然有种释然的感觉,也算是没太过虚度光阴了吧[Dog]……
由于本人水平有限,所以难免会有疏漏之处,欢迎大家一起交流讨论。如果大家能够通过本篇内容或多或少找到点启发的话那么本文也算是发挥其该有的价值了。最后,感谢各位阅读本文!
|