Toybrick

标题: RK1808 AI计算棒全平台RockX演示Demo(已适配rockx python sdk) [打印本页]

作者: troy    时间: 2019-9-2 17:49
标题: RK1808 AI计算棒全平台RockX演示Demo(已适配rockx python sdk)
本帖最后由 troy 于 2020-3-20 17:28 编辑

1.  RockX简介
Rock-X SDK是一组快捷AI组件库,支持RK3399Pro和RK1808平台。开发者仅需要几条API调用即可在嵌入式产品中离线地使用这些功能,而无需关心AI模型的部署细节,极大加速了产品的原型验证和开发部署。Rock-X组件库根据用户的需求仍会不断扩充。
[attach]530[/attach]

2.  全平台Demo
2.1.  Demo简介
该demo演示了主动模型下,RK1808使用python调用RockX组件库进行全平台适配性演示。
Demo下载链接:Github
文件目录介绍
[attach]532[/attach]

2.2.  上位机环境部署
1.    python3.6环境准备
2.    Linux/MacOS: pip3 install –-user opencv-python
3.    Windows: pip3 install opencv-python
4.    参考wiki的《WEB配置介绍》,通过网页192.168.180.8将计算棒配置成主动模式
5.    参考wiki说明《配置计算棒网络共享》,配置RK1808计算棒NAT网络共享。
6.    上位机插入USB camera或者使用内置摄像头
7.    运行RK1808端服务程序之后,启动上位机端程序。以face_landmark为例,等待RK1808端启动face_landmark_server.py以后,上位机端运行face_landmark_server.py

2.3.  RK1808环境部署复制1808目录到计算棒上
1.  复制1808目录到计算棒上
2.sudo dnf update(建议升级成最新版本,因为rockx会有驱动依赖)
3.  mkir /home/toybrick/tmp
4. export TMPDIR=/home/toybrick/tmp
5. sudo dnf install -y python3-opencv
6. pip3 install --user rockx
7. 执行python3 face_landmark_server.py启动或者可以设置为开机自启动。开机自启动方法参考http://t.rock-chips.com/wiki.php?mod=view&id=74

2.4.  跨平台说明
当前RK1808支持Linux/Windows/MacOS/Android等多个平台。
[attach]531[/attach]

2.5.  演示效果
下图演示了face_landmark的演示效果。
[attach]535[/attach]











作者: yuys    时间: 2019-9-26 14:33
在RK3399Pro如何使用呢
作者: troy    时间: 2019-9-26 16:15
yuys 发表于 2019-9-26 14:33
在RK3399Pro如何使用呢

参考下1808端的和上位机端的代码,合并一下,把通信部分去掉就可以了。
作者: linuxsky    时间: 2019-9-30 11:47
使用上述代码跑起来后识别到的landmark 明显比图片宽,并没有匹配合适。
[attach]612[/attach]

作者: troy    时间: 2019-9-30 14:21
linuxsky 发表于 2019-9-30 11:47
使用上述代码跑起来后识别到的landmark 明显比图片宽,并没有匹配合适。

可以把图片拿远试一下。还有就是演示时,为了加快速度,对图像进行缩放后再送给1808的,也可以去掉缩放试试,让1808直接推理原始图像,缩放会导致最终的landmark数据会有偏差。
作者: linuxsky    时间: 2019-9-30 16:30
troy 发表于 2019-9-30 14:21
可以把图片拿远试一下。还有就是演示时,为了加快速度,对图像进行缩放后再送给1808的,也可以去掉缩放试 ...

远近都是一样的效果
作者: troy    时间: 2019-9-30 16:55
linuxsky 发表于 2019-9-30 16:30
远近都是一样的效果

那就把代码改成不缩放的
作者: sjiton    时间: 2019-11-18 08:41
车牌检测 车牌识别的demo 为啥没有呢?
作者: troy    时间: 2019-11-18 10:53
sjiton 发表于 2019-11-18 08:41
车牌检测 车牌识别的demo 为啥没有呢?

接口都有,只是demo只写了两个。这几天我们RockX会更新版本,而且也会发布正式的RockX python库,自带test用例。
作者: sjiton    时间: 2019-11-21 08:23
标题: 删除里
本帖最后由 sjiton 于 2020-5-26 09:43 编辑

什么也没有
作者: jwseey2019    时间: 2020-1-6 15:35
请问一下rockx sdk下python的主动模式的demo程序,文档里只介绍了c的api接口,python怎么使用的没有文档呢?
作者: troy    时间: 2020-1-6 18:39
jwseey2019 发表于 2020-1-6 15:35
请问一下rockx sdk下python的主动模式的demo程序,文档里只介绍了c的api接口,python怎么使用的没有文档呢 ...

之前是临时版本的rockx python,现在已经发布正式版的rockx python sdk
http://t.rock-chips.com/forum.ph ... ;tid=504&extra=
作者: jwseey2019    时间: 2020-1-7 09:19
troy 发表于 2020-1-6 18:39
之前是临时版本的rockx python,现在已经发布正式版的rockx python sdk
http://t.rock-chips.com/forum.p ...

谢谢                                    
作者: chhuang    时间: 2020-1-13 16:39
本帖最后由 chhuang 于 2020-1-13 17:17 编辑

之前我按照下面的步驟可以跑 demo
1.    sudo dnf install -y python3-opencv
2.    sudo dnf install –y rockx-devel
3.    sudo dnf install python3-toybrick-0.2-12.aarch64.rpm(安装包位于Demo的1808目录下)
4.    执行python3 face_landmark_server.py启动或者可以设置为开机自启动。开机自启动方法参考http://t.rock-chips.com/wiki.php?mod=view&id=74

但現在已經無法透過 dnf 安裝  rockx-devel, 後來是安裝  rockx-rk1808, 所以我的步驟變成
1.    sudo dnf install -y python3-opencv
2.    sudo dnf install –y rockx-rk1808
3.    sudo dnf install python3-toybrick-0.2-12.aarch64.rpm(安装包位于Demo的1808目录下)
4.    执行python3 face_landmark_server.py
但出現 error
Traceback (most recent call last):
  File "face_landmark_server.py", line 2, in <module>
    import toybrick as toy
  File "/usr/local/lib/python3.6/site-packages/toybrick/__init__.py", line 34, in <module>
    from toybrick.rockx import createRockx, RockxType, Rockx
  File "/usr/local/lib/python3.6/site-packages/toybrick/rockx.py", line 1, in <module>
    from . import rkrockx
ImportError: libobject_detection.so: cannot open shared object file: No such file or directory

請問如何修改?  
另外我有試著安裝  pip3 install --user rockx -i http://repo.rock-chips.com/pypi/simple --trusted-host=repo.rock-chips.com
但出現儲存空間不足 ~~補上空間不足的 log

During handling of the above exception, another exception occurred:


Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python3.6/site-packages/pip/commands/install.py", line 346, in run
    requirement_set.prepare_files(finder)
  File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 620, in _prepare_file
    session=self.session, hashes=hashes)
  File "/usr/lib/python3.6/site-packages/pip/download.py", line 821, in unpack_url
    hashes=hashes
  File "/usr/lib/python3.6/site-packages/pip/download.py", line 659, in unpack_http_url
    hashes)
  File "/usr/lib/python3.6/site-packages/pip/download.py", line 882, in _download_http_url
    _download_url(resp, link, content_file, hashes)
OSError: [Errno 28] No space left on device





作者: troy    时间: 2020-1-13 17:49
chhuang 发表于 2020-1-13 16:39
之前我按照下面的步驟可以跑 demo
1.    sudo dnf install -y python3-opencv
2.    sudo dnf install –y ...

import toybrick as toy
之前的toybrick只是一个很简陋的半成品,临时使用。现在的rockx python库虽然功能上看起来和toybrick的库差不多,但是已经完全不是一个东西了。toybrick库已经不再支持维护了。
因此,你需要参考rockx python的demo,重新移植修改你的face_landmark_server.py。
关于空间目录不足的问题,可能是/tmp目录满了,先清掉试试。
作者: chhuang    时间: 2020-1-13 17:58
troy 发表于 2020-1-13 17:49
import toybrick as toy
之前的toybrick只是一个很简陋的半成品,临时使用。现在的rockx python库虽然功 ...

雖然是半成品,有沒有什麼方法可以讓我安裝舊的版本 ~~
作者: troy    时间: 2020-1-14 08:37
chhuang 发表于 2020-1-13 17:58
雖然是半成品,有沒有什麼方法可以讓我安裝舊的版本 ~~

把新的包都卸掉,重新下载附件,按照说明重新安装即可。
作者: troy    时间: 2020-1-14 08:39
troy 发表于 2020-1-14 08:37
把新的包都卸掉,重新下载附件,按照说明重新安装即可。

建议还是使用最新的python rockx,使用更加方便,功能更为强大,也可以随时更新。
SDK包里面,也有python版本的多个例子,包括face_landmarks,花几个小时应该就能改写成功的,建议尝试一下。
作者: troy    时间: 2020-1-14 16:15
chhuang 发表于 2020-1-13 17:58
雖然是半成品,有沒有什麼方法可以讓我安裝舊的版本 ~~

适配rockx工作已完成,建议从github上拉取最新代码,README文件也已更新。关于pip3安装失败问题,是/tmp目录过小导致,按照说明,重定向tmp目录到用户目录即可。
作者: chhuang    时间: 2020-1-16 11:05
troy 发表于 2020-1-14 16:15
适配rockx工作已完成,建议从github上拉取最新代码,README文件也已更新。关于pip3安装失败问题,是/tmp ...

https://github.com/rockchip-toybrick/master_rockx_demo

github 上面的還是舊的資料,可否確認一下  謝謝
作者: troy    时间: 2020-1-16 11:50
chhuang 发表于 2020-1-16 11:05
https://github.com/rockchip-toybrick/master_rockx_demo

github 上面的還是舊的資料,可否確認一下  謝 ...

先用这个仓库https://github.com/troyseed/toybrick_master_rockx
作者: chinaflys    时间: 2020-6-19 13:56
您好,楼主,如何查看识别的速率?比如usb摄像头或者网络摄像头,识别出来的结果,所花费的时间?
作者: troy    时间: 2020-6-19 17:13
chinaflys 发表于 2020-6-19 13:56
您好,楼主,如何查看识别的速率?比如usb摄像头或者网络摄像头,识别出来的结果,所花费的时间? ...

直接用系统的时间函数,加上打印信息就可以吧
作者: pzx19940110    时间: 2020-7-2 17:23
本帖最后由 pzx19940110 于 2020-7-2 17:26 编辑

楼主你好,我在RK1808计算棒上测试关节点识别的样例pose_body.py的时候每跑个十来帧就报错,[Errno 104] Connection reset by peer。这是什么原因造成的呢?这两个项目都是报同样的错 。https://github.com/rockchip-toybrick/master_rockx_demohttps://github.com/troyseed/toybrick_master_rockx
  1. [toybrick@rk1808 1808]$ python3 pose_server.py
  2. start listen...
  3. connect from:('192.168.180.1', 57484)
  4. rockx_pose_body
  5. __t_infer start
  6. __t_send start
  7. inference use 0.13524651527404785sec
  8. inference use 0.09441924095153809sec
  9. inference use 0.09172511100769043sec
  10. inference use 0.09148001670837402sec
  11. inference use 0.11389923095703125sec
  12. inference use 0.1085505485534668sec
  13. inference use 0.09377622604370117sec
  14. inference use 0.09322404861450195sec
  15. inference use 0.09215903282165527sec
  16. inference use 0.09115290641784668sec
  17. inference use 0.09251642227172852sec
  18. inference use 0.10705876350402832sec
  19. inference use 0.09827089309692383sec

  20. __t_infer end

  21. __t_send end
  22. [Errno 104] Connection reset by peer
  23. __deal finish
复制代码

作者: troy    时间: 2020-7-3 09:27
pzx19940110 发表于 2020-7-2 17:23
楼主你好,我在RK1808计算棒上测试关节点识别的样例pose_body.py的时候每跑个十来帧就报错,[Errno 104] Co ...

这个日志是网络断开导致的。其他的样例表现也是一样吗。
作者: pzx19940110    时间: 2020-7-3 11:30
troy 发表于 2020-7-3 09:27
这个日志是网络断开导致的。其他的样例表现也是一样吗。

是的,试了face的demo也是报这个错误。我调试了一下,问题应该是计算棒的inference部分提前end了,然后就报了socket connect的error:
  1. start listen...
  2. connect from:('192.168.180.1', 57520)
  3. rockx_pose_body
  4. __t_infer start
  5. __t_send start
  6. inference use 0.13480687141418457sec
  7. inference use 0.11851930618286133sec
  8. inference use 0.0913386344909668sec
  9. inference use 0.09126019477844238sec
  10. inference use 0.09553766250610352sec
  11. inference use 0.10653114318847656sec
  12. inference use 0.10649514198303223sec
  13. inference use 0.10819363594055176sec
  14. inference use 0.1082453727722168sec
  15. inference use 0.10398054122924805sec
  16. inference use 0.10600614547729492sec
  17. inference use 0.09516739845275879sec
  18. infer failed

  19. __t_infer end
  20. send failed

  21. __t_send end
  22. recieve failed
复制代码

作者: pzx19940110    时间: 2020-7-3 11:39
本帖最后由 pzx19940110 于 2020-7-3 11:41 编辑
troy 发表于 2020-7-3 09:27
这个日志是网络断开导致的。其他的样例表现也是一样吗。

我从git下载的代码,这是我的pose的测试视频

作者: pzx19940110    时间: 2020-7-3 16:54
pzx19940110 发表于 2020-7-3 11:30
是的,试了face的demo也是报这个错误。我调试了一下,问题应该是计算棒的inference部分提前end了,然后就 ...

请问之前有遇到过这样的问题么? 应该怎么解决呢?
作者: troy    时间: 2020-7-6 16:29
pzx19940110 发表于 2020-7-3 16:54
请问之前有遇到过这样的问题么? 应该怎么解决呢?

之前并没有遇到类似的问题,建议你把计算棒固件更新到最新版本再试一下。
作者: pzx19940110    时间: 2020-7-7 13:39
本帖最后由 pzx19940110 于 2020-7-7 13:44 编辑
troy 发表于 2020-7-6 16:29
之前并没有遇到类似的问题,建议你把计算棒固件更新到最新版本再试一下。 ...

[img]blob:http://t.rock-chips.com/a5938b0c-bb5e-49a8-8edc-87bd1ef071c1[/img]
请问现在的固件是不是最新的了?已经配置过网络共享了,升级固件出现了错误,谢谢!

作者: troy    时间: 2020-7-7 17:06
pzx19940110 发表于 2020-7-7 13:39
请问现在的固件是不是最新的了?已经配置过网络共享了,升级固件出现了错误,谢谢!
...

可以在计算棒上执行sudo ping www.baidu.com,看一下网络共享是否配对
作者: pzx19940110    时间: 2020-7-7 21:38
troy 发表于 2020-7-7 17:06
可以在计算棒上执行sudo ping www.baidu.com,看一下网络共享是否配对

看起来网络也是正常的, 而且中间有一次突然可以连续跑通了,但是一段时间后再去试又不行了。没有改动任何代码
[toybrick@rk1808 1808_pose]$ sudo ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=52 time=47.2 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=52 time=47.0 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=52 time=47.6 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=4 ttl=52 time=47.1 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=5 ttl=52 time=47.1 ms
作者: troy    时间: 2020-7-8 11:10
pzx19940110 发表于 2020-7-7 21:38
看起来网络也是正常的, 而且中间有一次突然可以连续跑通了,但是一段时间后再去试又不行了。没有改动任何 ...

原始未改动的代码+摄像头在你的计算棒上是否可以?
作者: pzx19940110    时间: 2020-7-8 12:43
troy 发表于 2020-7-8 11:10
原始未改动的代码+摄像头在你的计算棒上是否可以?

尝试了原始没改动的代码,在我的计算棒也是同样的问题
connect from'192.168.180.1', 34248)
rockx_pose_body
__t_infer start
__t_send start
inference use 0.11636781692504883sec
inference use 0.09540820121765137sec
inference use 0.08275055885314941sec
inference use 0.08294057846069336sec
inference use 0.10147404670715332sec
inference use 0.0979456901550293sec
inference use 0.0980825424194336sec
inference use 0.09815406799316406sec
inference use 0.0989387035369873sec
inference use 0.08209514617919922sec
inference use 0.0824282169342041sec
inference use 0.09861278533935547sec
inference use 0.0834355354309082sec
inference use 0.0802621841430664sec

__t_infer end

__t_send end
[Errno 104] Connection reset by peer
__deal finish

作者: pzx19940110    时间: 2020-7-8 13:07
troy 发表于 2020-7-8 11:10
原始未改动的代码+摄像头在你的计算棒上是否可以?

刚刚又试了一次,在没有改动关键代码的情况下,只是加了一个print函数,突然又好了。看起来应该不是代码逻辑的问题,。。。难道是硬件或者网络连接的问题?

作者: pzx19940110    时间: 2020-7-8 13:15
pzx19940110 发表于 2020-7-8 13:07
刚刚又试了一次,在没有改动关键代码的情况下,只是加了一个print函数,突然又好了。看起来应该不是代码 ...

...吐了,又不行了了
作者: troy    时间: 2020-7-9 08:34
pzx19940110 发表于 2020-7-8 13:15
...吐了,又不行了了

你这现象有点奇特啊,你手上只有一根计算棒吗,升级到最新的代码没有。我这个代码之前有测过是可以的。
作者: pzx19940110    时间: 2020-7-9 17:57
troy 发表于 2020-7-9 08:34
你这现象有点奇特啊,你手上只有一根计算棒吗,升级到最新的代码没有。我这个代码之前有测过是可以的。 ...

我之前是ssh远程连接的宿主机,我今儿有在本地去测,结果都是可以的。难道是因为ssh远程访问的原因!!

作者: pzx19940110    时间: 2020-7-9 17:58
troy 发表于 2020-7-9 08:34
你这现象有点奇特啊,你手上只有一根计算棒吗,升级到最新的代码没有。我这个代码之前有测过是可以的。 ...

之前一直在家办公,没去公司。。结果今儿去了一试就可以了。。
作者: troy    时间: 2020-7-10 08:55
pzx19940110 发表于 2020-7-9 17:58
之前一直在家办公,没去公司。。结果今儿去了一试就可以了。。

你之前的场景是宿主机在公司,计算棒插在公司的宿主机上,然后远程SSH到宿主机?
你的上位机程序是跑在家里的本地电脑,还是在宿主机上?理论上这个场景跟本地使用也没啥区别才对。
作者: djsk    时间: 2020-7-10 16:48
你好,我在计算棒中执行pip3 install --user rockx   提示不能找到[attach]1216[/attach]


这个库上哪里去下载呀
系统我已经更新过了执行过 dnf update

作者: pzx19940110    时间: 2020-7-13 11:12
troy 发表于 2020-7-10 08:55
你之前的场景是宿主机在公司,计算棒插在公司的宿主机上,然后远程SSH到宿主机?
你的上位机程序是跑在家 ...

是的,之前的宿主机和计算棒都是在公司,然后我远程登录到宿主机操作,上位机程序也都是在宿主机上跑的




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