一、Rock-X组件介绍
Rock-X主要是RK官方提供的AI实例,用于给与用户测试使用,使得用户不需要自训练模型和AI算法,通过调用Rock-X的AI接口快速体验AI应用和芯片性能,官方仅仅提供接口并没有全部开源。
SDK中的Rock-X组件:
- auth目录下存放的是认证相关的文件。
- ChangeLog.txt存放的是rockx组件的版本更新记录。
- demo目录下的command_line_demo存放的是rockx组件的c接口例程。
- doc目录下是开发手册和API介绍。
- python目录下是python接口的安装包和历程。
- sdk目录下存放rockx组件的库头文件和模型文件,version文件记录当前组件的版本信息。
Rock-X组件最新资料参考,里面有代码和接口文档参考:
Toybrick-开源社区-人工智能-Rock-X AI组件库1.2.0 SDK发布(C&&Python)
demo目录下的command_line_demo存放的是rockx组件的c接口例程:
模型文件位置: {SDK目录}/external/rockx/sdk/rockx-data-rv1109下:
二、Rock-X的使用
- 调用流程:
- 声明句柄:首先需要声明句柄,用于后续操作对应的模块
- 配置模型路径:指定模型文件的路径,否则模块可能找不到对应模型文件
- 初始化模块:通过句柄初始化对应模块,指定模块使用的模型文件
- 调用API:初始化后调用相应API运行模块进行推理
- 后处理:对推理结果进行处理,如绘制识别框等
- 释放资源:最后需要释放句柄,避免内存泄漏
正点原子代码实现,参考的是SDK下的command_line_demo,根据车牌识别为例子({SDK目录}/external/rockx/demo/command_line_demo/rockx_carplate_demo):
(1)句柄声明:每一个模块声明一个句柄,rockx_handle_t carplate_det_handle----声明车牌检测模块句柄,carplate_align_handle----声明车牌对齐模块句柄,carplate_recog_handle----声明车牌识别模块句柄
rockx_ret_t ret; rockx_handle_t carplate_det_handle; rockx_handle_t carplate_align_handle; rockx_handle_t carplate_recog_handle;(2)模型路径配置:char *rockx_data = "/demo/src/rockx_data";指定模型文件路径
(3)通过句柄指定初始化对应模块:
rockx_create(&carplate_det_handle,ROCKX_MODULE_CARPLATE_DETECTION, config, sizeof(rockx_config_t))(4)通过句柄,调用相应API运行某个模块、进行模型的推理:
rockx_carplate_detect(carplate_det_handle, &input_image, &carplate_array, nullptr); rockx_carplate_align(carplate_align_handle, &input_image, &(max_area.box), &result); rockx_carplate_recognize(carplate_recog_handle, &(result.aligned_image), &recog_result);(5)后处理,如绘制识别框等
(6)资源释放:释放句柄资源
rockx_destroy(carplate_det_handle); rockx_destroy(carplate_align_handle); rockx_destroy(carplate_recog_handle);