Toybrick

标题: 树莓派3b+上使用RK1808人工智能计算棒(主动模式)实现物体识别 [打印本页]

作者: troy    时间: 2020-3-20 17:59
标题: 树莓派3b+上使用RK1808人工智能计算棒(主动模式)实现物体识别
本帖最后由 troy 于 2021-4-14 14:58 编辑

1. 主动模式介绍
主动模式的上位机可以是任何带有USB接口的平台及任何操作系统,包括了x86/x64/arm32/arm64的linux/windows/mac os及单片机、树莓派等等。
本教程以树莓派为例讲述主动模式的单计算棒部署流程。

[attach]918[/attach]

2. 硬件组成
[attach]934[/attach]

3. 树莓派网络配置
网络配置的目的,是为了使树莓派和计算棒之间能够通过网络进行通信。
3.1 虚拟网卡配置
1808计算棒插入树莓派后,会被虚拟成网卡设备,树莓派会自动生成网卡节点eth1。我们需要使用nmcli 工具删除eth1,再重新进行虚拟网卡配置。
  1. sudo apt-get install network-manager
  2. sudo nmcli con delete eth1
  3. sudo nmcli connection add con-name toybrick type ethernet ifname eth1 autoconnect yes ip4 192.168.180.1/24
复制代码

使用ifconfig命令,可以看到eth1的地址以及被设置成192.168.180.1
[attach]911[/attach]
完成以上配置后,上位机即可与1808计算棒正常通信,可以ping通或者ssh登录到192.168.180.8
注意:

3.2 NAT网络配置
如果计算棒需要访问外网进行软件包安装,或者软件升级,则需要进行此步骤,本步骤关机后需要重新配置。
  1. sudo sysctl   -w net.ipv4.ip_forward=1
  2. sudo iptables -F
  3. sudo iptables -t nat -F
  4. sudo  iptables  -t  nat  -A POSTROUTING -o eth0 -j MASQUERADE
复制代码


4. 主动模式C语言开发
demo下载地址:https://eyun.baidu.com/s/3htJNFwS
下载源码到树莓派用户根目录,并解压源码
  1. tar -xvf master_mobilenet_ssd.tar
复制代码

4.1 1808计算棒部署

1、拷贝解压目录中的1808目录至计算棒,并重命名为mobilenet_ssd

  1. scp -r ~/master_mobilenet_ssd/1808 toybrick@192.168.180.8:/home/toybrick/mobilenet_ssd/
复制代码

2、ssh进入计算棒,账号密码均为toybrick

  1. ssh  toybrick@192.168.180.8
复制代码

3、安装依赖包(确保3.2 NAT网络配置完成,可以尝试在1808上sudo ping www.baidu.com确认是否可以访问外网)

1808计算棒默认已安装rknn_api库。

  1. sudo dnf clean all
  2. sudo dnf install -y cmake make
复制代码

4、编译

  1. cd mobilenet_ssd
  2. mkdir build && cd build
  3. cmake ..
  4. make -j4
复制代码

5、开机自启动,在/usr/local/bin/tb.local.after中加入以下代码,重启后,1808将会自动运行mobilenet_ssd服务程序
  1. cd /home/toybrick/mobilenet_ssd
  2. sudo -u toybrick /home/toybrick/mobilenet_ssd/boot.sh
复制代码

4.2 树莓派部署
opencv仅为方便demo效果演示使用,非主动模式必须。
1、树莓派开发环境安装
  1. sudo apt-get install -y make cmake libopencv-dev
复制代码

2、编译
  1. cd ~/master_mobilenet_ssd/host
复制代码

3、运行demo。在4.1中,我们已经在1808上完成mobilenet_ssd的sever程序的自动启动。
  1. ./ssd_demo
复制代码
可以在屏幕上看到mobilenet_ssd的推理画面,按ESC退出。
[attach]914[/attach]

5. 主动模式Python开发
从github上克隆源码到树莓派用户根目录,树莓派默认已安装git。
  1. cd ~
  2. git clone https://github.com/rockchip-toybrick/master_rockx_demo.git
复制代码

5.1 1808计算棒部署

1、拷贝1808目录至计算棒,并重命名为rockx

  1. scp -r ~/master_rockx_demo/1808 toybrick@192.168.180.8:/home/toybrick/rockx/
复制代码


2、ssh进入计算棒,账号密码均为toybrick

  1. ssh  toybrick@192.168.180.8
复制代码

3、系统升级,目的在于保证驱动一致性,升级完成后需要重启。(确保3.2 NAT网络配置完成,可以尝试在1808上sudo ping www.baidu.com确认是否可以访问外网)
  1. sudo dnf update
复制代码


4、python环境包安装(确保2.2 NAT网络配置完成,可以尝试在1808上sudo ping www.baidu.com确认是否可以访问外网)
opencv仅为方便demo效果演示使用,非主动模式必须(本demo在传输过程中会使用opencv对图像进行编码和解码)。
rockx封装了一些常用的模型,可以简化编程,非主动模式必须。
TMPDIR必须设置,否则由于系统tmp目录过小,会导致安装Python包失败。
  1. mkdir /home/toybrick/tmp
  2. export TMPDIR=/home/toybrick/tmp
  3. sudo dnf install -y python3-opencv
  4. pip3 install --user rockx
复制代码

5、开机自启动开机自启动,在/usr/local/bin/tb.local.after中加入以下代码,重启后,1808将会自动运行mobilenet_ssd服务程序。/usr/local/bin/tb.local.after将会在系统启动之后自动加载,我们在其中调用我们自己的boot.sh,完成启动server程序的操作。
  1. cd /home/toybrick/rockx
  2. sudo -u toybrick /home/toybrick/rockx/boot.sh
复制代码

至此,我们在1808端启动了3个模型的server程序。其中端口号在代码中指定,可以自行修改。
face_landmark_sever.py    监听端口8001
object_server.py                监听端口8002
pose_server.py                  监听端口8003

5.2 树莓派部署
opencv仅为方便demo效果演示使用,非主动模式必须。
1、安装opencv
  1. pip3 install --user opencv-python
复制代码

2、由于树莓派在opencv存在BUG,如果进行以下操作才能正常import cv2。在~/.bashrc中最后添加以下内容
  1. export LD_PRELOAD=$LD_PRELOAD:/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0
复制代码

3、执行以下命令生效改动
  1. source ~/.bashrc
复制代码

4、运行demo。在5.1中,我们已经在1808上完成mobilenet_ssd的sever程序的自动启动。
face_landmark.py、object.py、pose.py三个demo均可以正常运行,此处以object.py运行为例。
  1. python3 object.py
复制代码
可以在屏幕上看到mobilenet_ssd的推理画面,按ESC退出。
[attach]915[/attach]

编程建议(重要:请认真阅读
编程指引:
一、单计算棒多模型:
二、多计算棒多模型:
    参考http://t.rock-chips.com/wiki.php?mod=view&id=116






























作者: liuwenhua    时间: 2020-3-26 10:26
在进行主动模式Python开发时,启动sever.py程序时,报错
--> Init runtime environment
E Connect to Device Failure (-1)
E Catch exception when init runtime!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 769, in rknn.api.rknn_base.RKNNBase.init_runtime
T   File "rknn/api/rknn_runtime.py", line 142, in rknn.api.rknn_runtime.RKNNRuntime.__init__
T   File "rknn/api/rknn_platform_utils.py", line 271, in rknn.api.rknn_platform_utils.start_ntp_or_adb
T Exception: Init runtime environment failed!
T Current device id is: None
T Devices connected:
T []
Init runtime environment failed

作者: troy    时间: 2020-3-27 14:21
liuwenhua 发表于 2020-3-26 10:26
在进行主动模式Python开发时,启动sever.py程序时,报错
--> Init runtime environment
E Connect to Devic ...

1808上运行出现的log?
作者: liuwenhua    时间: 2020-3-27 17:23
troy 发表于 2020-3-27 14:21
1808上运行出现的log?

已经解决,谢谢
作者: gao    时间: 2020-4-24 19:16
liuwenhua 发表于 2020-3-27 17:23
已经解决,谢谢

请问如何解决的?
作者: liuwenhua    时间: 2020-4-26 08:55
gao 发表于 2020-4-24 19:16
请问如何解决的?

我安装的toolkit包不正确
作者: troy    时间: 2020-4-26 22:56
liuwenhua 发表于 2020-4-26 08:55
我安装的toolkit包不正确

不需要安装toolkit,计算棒本身已经自带了,你是指哪步出错。
作者: simon    时间: 2020-7-7 15:26
1808计算棒插入树莓派后,未看到网卡设备,请问这是什么原因啊
作者: troy    时间: 2020-7-7 17:08
simon 发表于 2020-7-7 15:26
1808计算棒插入树莓派后,未看到网卡设备,请问这是什么原因啊

哪个版本的树莓派,要看下是否支持RNDIS网卡,固件是否有裁剪,我用的3b+是可以的。另外可以在树莓派上执行lsusb看下有没有计算棒的usb节点。
作者: chinaflys    时间: 2020-7-23 16:16
你好,我的系统ubntu16.04系统,如何让计算棒能够上网啊?
作者: chinaflys    时间: 2020-7-23 16:18
请问,为啥我的主动模式c语言,不能识别出图像呢?
作者: troy    时间: 2020-7-23 17:27
chinaflys 发表于 2020-7-23 16:16
你好,我的系统ubntu16.04系统,如何让计算棒能够上网啊?

可以看一下wiki教程,上面有详细描述
http://t.rock-chips.com/wiki.php?mod=view&id=76
作者: 104225339    时间: 2020-8-24 11:09
您好,请问使用主动模式Python开发需要将模型转换为rknnmodel吗?计算棒插入树莓派后同样未看到网卡设备,4b和3b+都试过了,卡在这里了进行不下去……
作者: troy    时间: 2020-8-24 14:36
104225339 发表于 2020-8-24 11:09
您好,请问使用主动模式Python开发需要将模型转换为rknnmodel吗?计算棒插入树莓派后同样未看到网卡设备,4 ...

你的树莓派是官方的固件吗,计算棒需要RNDIS网卡驱动才能识别到,官方的固件在3b+上肯定是支持的。
作者: dddd1314    时间: 2020-11-10 16:41
我是在arm板上配置python主动模式时遇到了问题,系统是ubuntu16.04
我是先照着树莓派上使用RK1808的例子来进行配置的,在进行到5.1.3对系统进行升级时,提示没有apt-get命令,然后我试着ping了下百度,返回错误信息是ping: www.baidu.com: Name or service not known
我想问的是,
1.我参照的例子对吗,是否可以参考这个帖子来进行配置?
2.RK1808加速棒的主动模式需要手动来设置吗?
3.没有apt-get命令的问题该如何解决?
4.ping不通百度是否与配置步骤没弄对有关系
作者: zengwubin    时间: 2020-11-17 16:02
本帖最后由 zengwubin 于 2020-11-17 16:06 编辑

你好,我用RK1808计算棒,插在ROC-3288板子上,用的都是最新版本,但是被动模式报错(运行WIKI yolov3模型):3288固件是firefly官方的,是板子固件的原因吗,改怎么解决呢? 另外我发现主动模式数据传输很耗时,yolov3-tiny被动模式能跑30fps的,主动模式就只有15fps了,这正常吗




作者: troy    时间: 2020-11-30 10:49
zengwubin 发表于 2020-11-17 16:02
你好,我用RK1808计算棒,插在ROC-3288板子上,用的都是最新版本,但是被动模式报错(运行WIKI yolov3模型) ...

本论坛只支持toybrick相关平台设备。
作者: Caesar00    时间: 2020-12-29 16:15
本帖最后由 Caesar00 于 2020-12-29 17:09 编辑

你好,我在1808上下载rockx时,无论使用默认pip源还是更换国内源,都会报同样的错误,请问怎么解决
作者: troy    时间: 2020-12-30 09:02
Caesar00 发表于 2020-12-29 16:15
你好,我在1808上下载rockx时,无论使用默认pip源还是更换国内源,都会报同样的错误,请问怎么解决 ...

rockx是我们RK自己写的包,你指定的豆瓣的源肯定是没有的。参考帖子http://t.rock-chips.com/forum.ph ... &extra=page%3D1

pip3 install --user rockx -i http://repo.rock-chips.com/pypi/simple --trusted-host=repo.rock-chips.com.

作者: Caesar00    时间: 2020-12-30 15:08
本帖最后由 Caesar00 于 2020-12-30 15:11 编辑

谢谢你呢
作者: Caesar00    时间: 2020-12-30 15:39
本帖最后由 Caesar00 于 2020-12-30 15:41 编辑
troy 发表于 2020-12-30 09:02
rockx是我们RK自己写的包,你指定的豆瓣的源肯定是没有的。参考帖子http://t.rock-chips.com/forum.php?m ...

你好,我按帖子安装了,但执行的时候无法加载rockx组件,再python中引用rockx无异常,麻烦再看一下
作者: Caesar00    时间: 2020-12-30 15:58
Caesar00 发表于 2020-12-30 15:39
你好,我按帖子安装了,但执行的时候无法加载rockx组件,再python中引用rockx无异常,麻烦再看一下 ...

运行正常啦,不用帮忙查看啦。




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3