Page 1 of 2

无法运行restart_rknn.sh

Posted: 2024-04-05 11:45
by kw_ddw
设备为rv1103,烧录buildroot镜像,无法运行restart_rknn.sh。请问如何解决?另外请介绍一下buildroot镜像中的环境内容都有哪些。

Re: 无法运行restart_rknn.sh

Posted: 2024-04-05 12:08
by kw_ddw
我根据瑞新微的文档,进行如下操作

Code: Select all

# 进入 rknpu2 目录
cd Projects/rknn-toolkit2/rknpu2
# 推送 rknn_server 到板端
adb push runtime/Linux/rknn_server/armhf-uclibc/usr/bin/*
/oem/usr/bin
# 推送 librknnmrt.so
adb push runtime/Linux/librknn_api/armhf-uclibc/librknnmrt.so
/oem/usr/lib
# 进入板端
adb shell
# 赋予可执行权限
chmod +x /oem/usr/bin/rknn_server
chmod +x /oem/usr/bin/start_rknn.sh
chmod +x /oem/usr/bin/restart_rknn.sh
# 重启 rknn_server 服务
restart_rknn.sh
但是运行start_rknn.sh时提示找不到rknn_server这个程序,请问如何解决?

Re: 无法运行restart_rknn.sh

Posted: 2024-04-06 14:09
by kw_ddw
另外,我根据文档编译了yolov5的程序,程序传输至rv1103后运行程序,显示内存不足,请问有任何的解决方法吗?

Code: Select all

# ./rknn_yolov5_demo model/yolov5.rknn model/bus.jpg
load lable ./model/coco_80_labels_list.txt
E RKNN: failed to allocate fd, ret: -1, errno: 12, errstr: Cannot allocate memory
E RKNN: failed to allocate model memory!, size: 14750080, flags: #2
rknn_init fail! ret=-1
init_yolov5_model fail! ret=-1 model_path=model/yolov5.rknn
# free -h
              total        used        free      shared  buff/cache   available
Mem:          33.7M       17.3M        1.6M        9.7M       14.8M        3.7M
Swap:             0           0           0



Re: 无法运行restart_rknn.sh

Posted: 2024-04-07 3:08
by Crocodile
kw_ddw wrote: 2024-04-05 12:08 我根据瑞新微的文档,进行如下操作

Code: Select all

# 进入 rknpu2 目录
cd Projects/rknn-toolkit2/rknpu2
# 推送 rknn_server 到板端
adb push runtime/Linux/rknn_server/armhf-uclibc/usr/bin/*
/oem/usr/bin
# 推送 librknnmrt.so
adb push runtime/Linux/librknn_api/armhf-uclibc/librknnmrt.so
/oem/usr/lib
# 进入板端
adb shell
# 赋予可执行权限
chmod +x /oem/usr/bin/rknn_server
chmod +x /oem/usr/bin/start_rknn.sh
chmod +x /oem/usr/bin/restart_rknn.sh
# 重启 rknn_server 服务
restart_rknn.sh
但是运行start_rknn.sh时提示找不到rknn_server这个程序,请问如何解决?
您好,请检查三个文件是否被传输到正确的位置,oem/usr/bin 是环境变量,如果移动到其他地方会导致找不到rknn_server的位置,这是我测试后的结果。
restart_rknn_output.jpg

Re: 无法运行restart_rknn.sh

Posted: 2024-04-07 3:23
by Crocodile
kw_ddw wrote: 2024-04-06 14:09 另外,我根据文档编译了yolov5的程序,程序传输至rv1103后运行程序,显示内存不足,请问有任何的解决方法吗?

Code: Select all

# ./rknn_yolov5_demo model/yolov5.rknn model/bus.jpg
load lable ./model/coco_80_labels_list.txt
E RKNN: failed to allocate fd, ret: -1, errno: 12, errstr: Cannot allocate memory
E RKNN: failed to allocate model memory!, size: 14750080, flags: #2
rknn_init fail! ret=-1
init_yolov5_model fail! ret=-1 model_path=model/yolov5.rknn
# free -h
              total        used        free      shared  buff/cache   available
Mem:          33.7M       17.3M        1.6M        9.7M       14.8M        3.7M
Swap:             0           0           0


RV1103本身内存使用紧张,请尝试关闭默认运行的rkipc程序,执行

Code: Select all

killall rkipc
或者

Code: Select all

RkLunch-stop.sh

Re: 无法运行restart_rknn.sh

Posted: 2024-04-09 16:57
by kw_ddw
您好,我想要部署自己重新训练的yolov5模型,了解到部署时部分网络结构需要替换,请问我是否可以这样操作:
1.得到自己训练的yolov5onnx模型
python export.py --rknpu --weight yolov5s.pt(自己训练的PT)
2.修改rknn_model_zoo/examples/yolov5/model/coco_80_labels_list.txt。
比如我只想识别人,那么这个txt里我只有人一个标签。
3.根据文档执行其他操作

感谢!

Re: 无法运行restart_rknn.sh

Posted: 2024-04-10 1:28
by Crocodile
kw_ddw wrote: 2024-04-09 16:57 您好,我想要部署自己重新训练的yolov5模型,了解到部署时部分网络结构需要替换,请问我是否可以这样操作:
1.得到自己训练的yolov5onnx模型
python export.py --rknpu --weight yolov5s.pt(自己训练的PT)
2.修改rknn_model_zoo/examples/yolov5/model/coco_80_labels_list.txt。
比如我只想识别人,那么这个txt里我只有人一个标签。
3.根据文档执行其他操作

感谢!
使用自训练模型还需要修改postprocess.h 下的 OBJ_CLASS_NUM (识别种类)参数,比如您的使用场景只有一种类型需要识别就修改为1。不然在解析输出数据会出现段错误。

Re: 无法运行restart_rknn.sh

Posted: 2024-04-11 15:32
by kw_ddw
您好,我在rv1103上跑yolov5模型,帧数大概在八九帧。如果我想提高帧数,大概可以采取哪些方法?感谢

Re: 无法运行restart_rknn.sh

Posted: 2024-04-12 1:17
by Crocodile
kw_ddw wrote: 2024-04-11 15:32 您好,我在rv1103上跑yolov5模型,帧数大概在八九帧。如果我想提高帧数,大概可以采取哪些方法?感谢
这个需要根据您的使用场景,正常如果传入的图像是视频流可以尝试在视频捕获阶段把图像缩放为640*640(按模型的输入需求修改),将传入图像的接收地址设置为RKNN模型的输入虚拟地址,优化掉图像传入模型处理的过程,每一次进行模型推理时仅需要执行rknn_run即可。

您还可进行尝试优化图像捕获过程,如果相比于把图像处理为模型输入需求,捕获分辨率过大的图像比较耗时,就可以尝试先获取小图像,再处理为大图像(利用rga算法,rga再luckfox-pico上只能处理DMA的数据,直接将DMA的目标地址设置为模型的输入虚拟地址)

如果您在获取到识别结果后还需要进行一些其他操作,比如画框标记等,还是可以尝试使用多线程来处理。

希望这对您有所帮助。

Re: 无法运行restart_rknn.sh

Posted: 2024-04-18 14:55
by kw_ddw
您好,我在rv1103上运行使用opencv-mobile库的代码时,遇到摄像头图像无法读取的情况。之后我运行了opencv-mobile例程,遇到同样的问题.
具体输出如下。

Code: Select all

# pwd
/
# killall rkipc
killall: rkipc: no process killed
# ./opencv-mobile-test
opencv-mobile HW JPG encoder with rk mpp
opencv-mobile MIPI CSI camera with v4l2 rkaiq
   devpath = /dev/video11
   driver = rkisp_v7
   card = rkisp_mainpath
   bus_info = platform:rkisp-vir0
   version = 20000
   capabilities = 84201000
   device_caps = 4201000
   fmt = UYVY 4:2:2  59565955
   fmt = Y/CbCr 4:2:2  3631564e
   fmt = Y/CrCb 4:2:2  3136564e
   fmt = Y/CrCb 4:2:0  3132564e
       size = 32 x 16  ~  2304 x 1296  (+8 +8)
   fmt = Y/CbCr 4:2:0  3231564e
   fmt = Y/CrCb 4:2:0 (N-C)  31324d4e
   fmt = Y/CbCr 4:2:0 (N-C)  32314d4e
rkaiq log level ff0

此后程序卡死,无任何输出。