SDK地址
链接:
百度云:https://eyun.baidu.com/s/3o9xqPPC
Onedrive:https://rockchips-my.sharepoint. ... vqQbWAHmzA?e=Wc4V4X
V1.2.0
======
1. Support RK1806
2. Support 1.3.0 NPU driver
3. Add english developer guide documents
RockX 1.1.0 SDK
Change Log:
1. Add Python SDK
2. Support config target device on rockx_create via rockx_config_t
3. Use RGA to preprocess input image on RK3399Pro/RK1808
4. Change rockx_carplate_align function define
5. Use rockx-data to replace model library
6. Fix some memory leak issue
RK3399Prod:- Debian:
- sudo apt-get update && sudo apt upgrade
- sudo apt-get install -y rockx-rk3399pro
- pip3 install --user rockx -i http://repo.rock-chips.com/pypi/simple --trusted-host=repo.rock-chips.com
- Fedora:
- sudo dnf update && sudo dnf upgrade
- sudo dnf install -y rockx-rk3399pro
- pip3 install --user rockx -i http://repo.rock-chips.com/pypi/simple --trusted-host=repo.rock-chips.com
RK1808 Compute Stick:- Fedora:
- sudo dnf update && sudo dnf upgrade
- mkdir /home/toybrick/tmp
- export TMPDIR=/home/toybrick/tmp
- sudo dnf install -y python3-opencv
- sudo dnf install -y rockx-rk1808
- pip3 install --user rockx -i http://repo.rock-chips.com/pypi/simple --trusted-host=repo.rock-chips.com
PC (Windows/Linux/MacOS)
- pip3 install --user rockx -i http://repo.rock-chips.com/pypi/simple --trusted-host=repo.rock-chips.com
RockX python Support List:
- PC (windows/Linux/MacOS) + RK1808 Compute Stick
- RK3399Prod
- RK1808 Compute Stick
- RK3399Prod + RK1808 Compute Stick
Driver Vesion:
- D RKNNAPI: ==============================================
- D RKNNAPI: RKNN VERSION:
- D RKNNAPI: API: 1.2.0 (db63ace build: 2019-09-17 14:23:41)
- D RKNNAPI: DRV: 0.9.9 (8509ec7 build: 2019-08-05 10:54:34)
- D RKNNAPI: ==============================================
Test Demo:- C demo with image:
- cp -r /usr/share/rknn/rockx_object_detection_demo/ ~
- cd ~/rockx_object_detection_demo
- mkdir build && cd build
- cmake ..
- make -j6
- ./rockx_object_detection ../test.jpg
- Python demo with image:
- cp -r /usr/share/rknn/rockx_py ~
- cd ~/rockx_py
- python3 rockx_object_detection.py -i object_detection_test.jpg
- Python demo with usb camera:
- python3 -m rockx.test.camera.rockx_object_detection
============================================================================================================
SDK V1.0.0地址
链接:https://eyun.baidu.com/s/3o9xqPPC
1 主要功能说明Rock-X SDK是基于RK3399Pro和RK1808的一组快捷AI组件库,初始版本包括:人脸检测、人脸识别、人脸属性分析、人脸特征点、人头检测、人体骨骼关键点、手指关键点、人车物检测等功能,开发者仅需要几条API调用即可在嵌入式产品中离线地使用这些功能,而无需关心AI模型的部署细节,极大加速了产品的原型验证和开发部署。Rock-X组件库根据用户的需求仍会不断扩充,并将支持基于计算棒的调用。 当前SDK提供的功能如表1-1所示。 表1-1 Rock-X SDK主要功能 2 系统依赖说明2.1 RK3399Pro系统依赖在RK3399Pro平台上,SDK所提供的库和应用程序需要RKNN驱动版本为0.9.6。在RK3399Pro Android/Linux平台上运行Demo应用以后,通过日志能够看到如下的驱动信息,请确保DRV版本为0.9.6。
- ==============================================
- RKNNVERSION:
- API: 0.9.5 (a949908 build: 2019-05-0722:20:52)
- DRV: 0.9.6 (c12de8a build: 2019-05-0620:10:17)
- ==============================================
3 示例应用Rock-XSDK中附带的示例应用能够帮助开发者评估SDK的基本功能和理解SDK接口,开发者可以直接基于示例应用进行修改或参考开发。示例应用代码包括命令行执行程序示例和Android程序示例。 3.1 命令行执行程序示例Rock-X SDK提供了所有接口的命令行执行程序代码示例,示例程序支持在RK3399Pro Android/Linux平台,编译和运行方法请参见“demo/command_line_demo”目录下的README文件。 3.2 Android程序示例Android示例程序支持在RK3399Pro Android平台上运行。所有的Android示例程序代码位于“demo/rk3399pro_android_demo”目录下。将对应的Android示例程序解压,再通过Android Studio打开后,可以直接进行编译、运行和开发。 4 性能指标4.1 模块精度指标4.1.1 目标检测表4-1 检测类性能表 注: 2) Brainwash是用于人头检测的公开数据集,主要场景为咖啡店,共5007张。 3) CCPD(Chinese City ParkingDataset)是国内车牌数据集,从中随机抽取10000张进行测试。 4) MSCOCO_VAL2017是目标检测公开数据集,使用该数据集中的5000张验证集测试,共91类别。 5) 人头检测模块的最小检测尺寸为图像分辨率的1/19。 6) 车牌检测模块支持检测国内蓝色、黄色和绿色车牌。 4.1.2 人脸检测表4-2 人脸检测性能 参数 | | | 平面内人脸左右旋转±45° 侧脸左右偏转±60° 侧脸上偏转60° 侧脸下偏转45° | | | | |
注: 1) 图像质量较差时,支持的检测角度会减小。 2) 最大检测距离与摄像头FOV等参数有关。 3) 检测的最小人脸尺寸为图像分辨率的1/19。 4.1.3 人脸识别表4-3 人脸识别性能 参数 | | | 平面内人脸左右旋转±45° 侧脸左右偏转±60° 侧脸上偏转60° 侧脸下偏转45° | | | | | | TPR=0.992@FAR=0 TPR=0.995@FAR=0.001 |
注: 1) 实际应用中,对距离和角度稍加限制,能获得更好的识别结果,用户可根据实际情况进行质量筛选。 4.1.4 车牌识别表4-4 车牌识别性能表 注: 1) CCPD(Chinese City ParkingDataset)是国内车牌数据集,从中随机抽取10000张进行测试。 2) 支持识别国内蓝色、绿色和黄色车牌。 3) 可识别的车牌字符如表4-5所示。 表4-5 车牌识别字符表 字符类别 | | | 京 沪 津 渝 冀 晋 蒙 辽 吉 黑 苏 浙 皖 闽 赣 鲁 豫 鄂 湘 粤 桂 琼 川 贵 云 藏 陕 甘 青 宁 新 | | 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P Q R S T U V W X Y Z | | 港 学 使 警 澳 挂 军 北 南 广 沈 兰 成 济 海 民 航 空 | 4.1.5 人脸属性分析表4-6 性别年龄性能 注: 1) UTK_asian是UTK公开数据集的亚洲人部分,使用7-70岁数据进行测试,共2388张。 2) 年龄精度为平均年龄偏差。 4.1.6 人脸特征点定位表4-7 人脸特征点定位(68点)性能 注: 1) 误差计算公式如下 表是第j个检测点与标注点之间的欧式距离。 d表示左外眼角和右外眼角的欧式距离。 4.1.7 人体骨骼点关键点表4-8 人体骨骼关键点定位性能 注: 2) MSCOCO val2017是COCO 2017 Keypoint Detection Task的验证集,共5000张,其中2000多张有关键点。 4.2 模块运行性能各模块运行时间和所需内存如表4-9所示。 表4-9 模块运行时间和消耗内存 注: 1) 图中所测的内存值为峰值内存。 5 SDK使用说明5.1 SDK库引入各平台的Rock-X SDK库位于sdk目录下,如下所示:
- sdk/
- ├── rockx-rk3399pro-Android
- └── rockx-rk3399pro-Linux
开发者只需要在自己工程的CMakeLists.txt中引入对应平台的库即可,下面以RK3399Pro Android平台为例:
- #Find RockX Package
- set(RockX_DIR <path-to-rockx-sdk>/sdk/rockx-rk3399pro-Android)
- find_package(RockX REQUIRED)
- #Include RockX Header
- include_directories(${RockX_INCLUDE_DIRS})
- #Link RockX Libraries
- target_link_libraries(target_name ${RockX_LIBS})
5.2 SDK裁减说明SDK提供的库文件并不需要完全导入,开发者可以根据自己所用到的模块来引入所需的库,这样可以减少应用的体积。表5-1列出了SDK库文件说明,除了librockx.so和librknn_api.so两个库文件,对于没有使用的模块,可以直接移除相应的库文件。 表5-1 SDK库文件说明 库文件名 | | | | ROCKX_MODULE_CARPLATE_ALIGN | | | ROCKX_MODULE_CARPLATE_DETECTION | | libcarplate_recognition.so | ROCKX_MODULE_CARPLATE_RECOG | | | ROCKX_MODULE_FACE_ANALYZE | | | ROCKX_MODULE_FACE_DETECTION | | | ROCKX_MODULE_FACE_LANDMARK_5 | | | ROCKX_MODULE_FACE_LANDMARK_68 | | | ROCKX_MODULE_FACE_RECOGNIZE | | | ROCKX_MODULE_HEAD_DETECTION | | | ROCKX_MODULE_OBJECT_DETECTION | | | | | | ROCKX_MODULE_POSE_FINGER_3 | | | ROCKX_MODULE_POSE_FINGER_21 | | | | | | | | 5.3 初始化和释放Rock-X各个模块都通过rockx_create函数进行初始化,通过传入不同的rockx_module_t枚举值来初始化不同的模块,示例代码如下所示:
- rockx_ret_tret;
- rockx_handle_tface_det_handle;
- ret= rockx_create(&face_det_handle,
- ROCKX_MODULE_FACE_DETECTION,
- nullptr, 0);
- if(ret != ROCKX_RET_SUCCESS) {
- printf("init rockx module error%d\n", ret);
- }
创建完成之后将得到一个rockx_handle_t类型的句柄,后面可以使用该句柄来调用相应的接口函数。 如果不再需要使用该模块,可以通过调用rockx_destroy函数来释放掉该句柄,示例代码如下所示:
- rockx_destroy(face_det_handle);
5.4 接口调用Rock-X SDK所包含模块的接口函数如表5-2所示。
表5-2 RockX各模块接口函数 类别 | | | | | | | | | | | | | | | | | | | rockx_face_feature_similarity | | | | | | | | | | | | | | | | | | |
模块接口函数示例代码如下:
- rockx_object_array_tface_array;
- memset(&face_array,0, sizeof(rockx_object_array_t));
- rockx_ret_tret = rockx_face_detect(face_det_handle, &input_image,
- &face_array, nullptr);
- if(ret != ROCKX_RET_SUCCESS) {
- printf("rockx_face_detect error %d\n",ret);
- return -1;
- }
5.5 API参考指南详细的接口描述请参考API文档(doc\rockx_api_doc\html\index.html)
对Rock-X或相关算法有定制化需求请联系toybrick@rock-chips.com
|