香橙派rk3588在ubuntu上测试rknn的C++调用npu例程rknn_yolov5_demo

接上篇继续用https://gitee.com/polarbird/rknn-toolkit2.git的例子

yolov5的例子

cd rknn-toolkit2/rknpu2/examples/rknn_yolov5_demo

这个例子有两个程序

一个是图片推理 一个是视频推理

cd examples/rknn_yolov5_demo

从readme.md得知

要导出变量 GCC_COMPILER 里面的例子是交叉编译的 而我们用本机编译 所以只需

export GCC_COMPILER=aarch64-linux-gnu

加权限

chmod +x build-linux.sh

执行编译

./build-linux.sh -t rk3588 -a aarch64 -b Release

报错 找不到mpp

make[2]: *** No rule to make target '../../../3rdparty/mpp/Linux/aarch64/librockchip_mpp.so', needed by 'rknn_yolov5_video_demo'. Stop.

make[2]: *** Waiting for unfinished jobs....

[ 80%] Building CXX object CMakeFiles/rknn_yolov5_video_demo.dir/utils/drawing.cpp.o

make[1]: *** [CMakeFiles/Makefile2:111: CMakeFiles/rknn_yolov5_video_demo.dir/all] Error 2

make[1]: *** Waiting for unfinished jobs....

[ 90%] Linking CXX executable rknn_yolov5_demo

[ 90%] Built target rknn_yolov5_demo

make: *** [Makefile:136: all] Error 2

查看库

ll ../3rdparty/mpp/Linux/aarch64/

发现软链接有问题

lrwxrwxrwx 1 orangepi orangepi 8 Apr 24 01:17 librockchip_mpp.so -> ''$'\177''ELF'$'\002\001\001\003'

-rw-rw-r-- 1 orangepi orangepi 2321616 Apr 24 01:17 librockchip_mpp.so.0

lrwxrwxrwx 1 orangepi orangepi 8 Apr 24 01:17 librockchip_mpp.so.1 -> ''$'\177''ELF'$'\002\001\001\003'

切换路径修复它

cd ../3rdparty/mpp/Linux/aarch64/

# 删除损坏的软链接

rm librockchip_mpp.so librockchip_mpp.so.1

# 重新创建软链接

ln -s librockchip_mpp.so.0 librockchip_mpp.so

ln -s librockchip_mpp.so.0 librockchip_mpp.so.1

回去编译

cd ../../../../rknn_yolov5_demo/

./build-linux.sh -t rk3588 -a aarch64 -b Release

切换到编译输出路径

cd install/rknn_yolov5_demo_Linux

编译出了两个程序

rknn_yolov5_demo rknn_yolov5_video_demo

rknn_yolov5_demo

这个程序会加载模型和读取输入图片 对图片进行预处理 然后进行推理 根据推理结果对图片进行后处理 最后输出带有推理信息的图片

预处理 将输入图片放缩成模型大小640x640 放缩实现了rga放缩和opencv放缩 默认使用opencv放缩

并且opencv放缩是实现letterbox方式的放缩 简单来说就是将输入图片宽高等比例放缩 多余的地方填黑 这样检测效果会好一些 而rga的放缩是非宽高等比例放缩

预处理完成后将图片传入npu推理 推理完成后将得到的数据进行后处理

后处理 把推理获得的坐标、类别、置信度信息进行过滤 再对图像画框打标签写入输出图像

执行程序

./rknn_yolov5_demo model/RK3588/yolov5s-640-640.rknn model/bus.jpg

输出信息

post process config: box_conf_threshold = 0.25, nms_threshold = 0.45

Loading mode...

sdk version: 2.0.0b0 (35a6907d79@2024-03-24T10:31:14) driver version: 0.9.6

model input num: 1, output num: 3

index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], n_elems=1228800, size=1228800, w_stride = 640, size_with_stride=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922

index=0, name=output0, n_dims=4, dims=[1, 255, 80, 80], n_elems=1632000, size=1632000, w_stride = 0, size_with_stride=1638400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922

index=1, name=286, n_dims=4, dims=[1, 255, 40, 40], n_elems=408000, size=408000, w_stride = 0, size_with_stride=491520, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922

index=2, name=288, n_dims=4, dims=[1, 255, 20, 20], n_elems=102000, size=102000, w_stride = 0, size_with_stride=163840, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922

model is NHWC input fmt

model input height=640, width=640, channel=3

Read model/bus.jpg ...

img width = 640, img height = 640

once run use 19.904000 ms

loadLabelName ./model/coco_80_labels_list.txt

person @ (209 243 286 510) 0.879723

person @ (479 238 560 526) 0.870588

person @ (109 238 231 534) 0.839831

bus @ (91 129 555 464) 0.692042

person @ (79 353 121 517) 0.300961

save detect result to ./out.jpg

输出总结

模型对输入图像进行一次推理所花费的时间为 19.904 毫秒

程序将检测结果可视化后保存为 ./out.jpg 文件 在该图像中 用边界框标记出检测到的目标 并显示类别名称和置信度

输入图片

输出图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值