Toybrick
标题: 被动模式Mobilenet-ssd开发指南 [打印本页]
作者: toybrick 时间: 2021-7-2 15:44
标题: 被动模式Mobilenet-ssd开发指南
源码下载示例源码下载链接:
点击下载源码
一、PC上运行计算棒本节主要描述如何在PC上使用RK1808人工智能计算棒。
1、系统依赖说明RKNN-Toolkit 开发套件支持运行于 Ubuntu 操作系统。需要满足以下运行环境要求:
操作系统版本 Ubuntu16.04(x64)以上
库依赖 cmake gcc g++ opencv opencv_devel
2、快速上手本章节以 RK1808人工智能计算棒使用C语言调用计算棒完成开发为例。
2.1 环境准备· 获取mobilenet_ssd源码
· 一台安装有 ubuntu 16.04 操作系统的 x86_64 位计算机。
· TB-RK1808S0计算棒。
· USB摄像头
· 将 RK1808 计算棒插在 PC 的 USB 接口上,使用 lsusb 命令查看,结果如下(其中 2207:1800 即为我们的 RK1808 计算棒, 下文中标红的那一行):
ljh@X240:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 009: ID 2207:1800
2.2安装依赖包本节以装有 ubuntu 16.04 操作系统的 x86_64 位 PC 为例
安装编译器
- <font size="3">For Ubuntu: sudo apt-get install cmake gcc g++
- For Fedora: sudo dnf install -y cmake gcc gcc-c++
- For MacOS:brew install cmake gcc </font>
opencv安装
- <font size="3">For Ubuntu: sudo apt-get install libopencv-dev
- For Fedora: sudo dnf install -y opencv opencv-devel
- For MacOS:brew install opencv</font>
rknn-api安装(Ubuntu & Fedora & MacOS)
- <font size="3">cd install_rknn
- sudo ./install_rknn_api.sh</font>
2.3代码编译运行1.cd slave_mobilenet_ssd
2.mkdir build
3.cd build
4.cmake ..
5.make
6. npu_transfer_proxy & , 启动NPU守护进程
7.在PC上插入USB摄像头
8.在PC界面终端上执行./ssd_demo,将会在屏幕上显示SSD图像结果
9.按'ESC'键退出运行注:该demo版本当前只允许插入 1 个计算棒。
二、RK3399proD上运行计算棒
本节主要描述如何在RK3399proD上使用RK1808人工智能计算棒。
1、系统依赖说明环境依赖 请先按照“Wiki--入门指南--Linux上位机环境安装”安装环境
操作系统版本 RK3399proD测试固件为V1.5,计算棒测试固件为V1.3.4
2、快速上手本章节以 RK1808人工智能计算棒使用C语言调用计算棒完成开发为例。
2.1 环境准备· 获取mobilenet_ssd源码
· 一台安装有 fedora 操作系统的RK3399proD开发板。
· TB-RK1808S0计算棒。
· USB摄像头
· 将 RK1808 计算棒插在RK3399proD开发板的 USB 接口上,使用 lsusb 命令查看,
结果如下(其中 2207:0018 即为我们的 RK1808 计算棒,2207:1808 即为RK3399proD内部NPU):
$ lsusb
Bus 002 Device 003: ID 2207:1808
Bus 001 Device 015: ID 2207:0018
安装RKNN-API
- <font size="3">sudo dnf install –y rknn-api</font>
修改代码
若用户只想调用RK3399proD内部的NPU则无需修改,跳过本步骤
若用户想调用计算棒,则按如下步骤修改
- <font size="3">vi slave_mobilenet_ssd/common/rknn.cpp</font>
在rknn::load_model函数中rknn_init前一行加入如下代码,该代码用于打印出全部npu和计算棒的设备号
- <font size="3">rknn_devices_id devids;
- ret = rknn_find_devices (&devids);
- printf("n_devices = %d\n", devids.n_devices);
- for(int i=0; i<devids.n_devices; i++) {
- printf("%d: type=%s, id=%s\n", i, devids.types[i], devids.ids[i]);
- }</font>
打印结果如下,其中0号设备是计算棒,1号设备为内部NPU:
n_devices = 2
0: type=USB_DEVICE, id=TS018080000000087
1: type=USB_DEVICE, id=0123456789ABCDEF
- <font size="3">//ret = rknn_init(&rknn_ctx, model, model_len, flag);//注销该行代码,替换为如下代码
- rknn_init_extend extend;
- extend.device_id = devids.ids[0];//0号设备代表计算棒,1号代表内部NPU
- ret = rknn_init2(&rknn_ctx, model, model_len, flag, &extend);</font>
2.2 代码编译运行
1.cd slave_mobilenet_ssd
2.mkdir build
3.cd build
4.cmake ..
5.make
6. npu_transfer_proxy & , 启动NPU守护进程
7.在RK3399proD上插入USB摄像头
8.在RK3399proD界面终端上执行./ssd_demo,将会在屏幕上显示SSD图像结果
9.按'ESC'键退出运行
作者: xyt2008 时间: 2023-1-6 22:19
这是哪个版本?
1.3.0 SDK没有rknn_find_devices接口函数。
rknn_init_extend extend;
extend.device_id = devids.ids[0];//0号设备代表计算棒,1号代表内部NPU
ret = rknn_init2(&rknn_ctx, model, model_len, flag, &extend);
externd的结构体也不一样。
1.3.0 SDK里面的结构体时这样的:
typedef struct _rknn_init_extend {
rknn_context ctx; /* rknn context */
uint8_t reserved[128]; /* reserved */
} rknn_init_extend;
哪里有能被动调用1808计算卡的C++调用方式?
C++demo里面都没有。
欢迎光临 Toybrick (https://t.rock-chips.com/) |
Powered by Discuz! X3.3 |