Toybrick

被动模式Mobilenet-ssd开发指南

toybrick

管理员

积分
0
发表于 2021-7-2 15:44:25    查看: 6845|回复: 1 | [复制链接]    打印 | 显示全部楼层
源码下载
示例源码下载链接:
点击下载源码

一、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 为例
安装编译器
  1. <font size="3">For Ubuntu: sudo apt-get install cmake gcc g++
  2. For Fedora: sudo dnf install -y cmake gcc gcc-c++
  3. For MacOS:brew install cmake gcc </font>
复制代码
​opencv安装
  1. <font size="3">For Ubuntu: sudo apt-get install libopencv-dev
  2. For Fedora: sudo dnf install -y opencv opencv-devel
  3. For MacOS:brew install opencv</font>
复制代码
rknn-api安装(Ubuntu & Fedora & MacOS)
  1. <font size="3">cd install_rknn
  2. 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

  1. <font size="3">sudo dnf install –y rknn-api</font>
复制代码
修改代码
若用户只想调用RK3399proD内部的NPU则无需修改,跳过本步骤
若用户想调用计算棒,则按如下步骤修改
  1. <font size="3">vi slave_mobilenet_ssd/common/rknn.cpp</font>
复制代码
在rknn::load_model函数中rknn_init前一行加入如下代码,该代码用于打印出全部npu和计算棒的设备号
  1. <font size="3">rknn_devices_id devids;
  2. ret = rknn_find_devices (&devids);
  3. printf("n_devices = %d\n", devids.n_devices);
  4. for(int i=0; i<devids.n_devices; i++) {
  5.     printf("%d: type=%s, id=%s\n", i, devids.types[i], devids.ids[i]);
  6. }</font>
复制代码
打印结果如下,其中0号设备是计算棒,1号设备为内部NPU:
n_devices = 2
0:    type=USB_DEVICE, id=TS018080000000087
1:    type=USB_DEVICE, id=0123456789ABCDEF
  1. <font size="3">//ret = rknn_init(&rknn_ctx, model, model_len, flag);//注销该行代码,替换为如下代码
  2. rknn_init_extend extend;
  3. extend.device_id = devids.ids[0];//0号设备代表计算棒,1号代表内部NPU
  4. 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

注册会员

积分
119
发表于 2023-1-6 22:19:16 | 显示全部楼层
这是哪个版本?
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里面都没有。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表