【求助】关于yolov5x上板推理的问题

上次我问到在x86 docker中使用oe包中的yolov5x推理一张图片,hbDNNWaitTaskDone(task_handle, 0)需要几分钟才能退出,现在我需要在板上接收数据实时推理,我现在的思路简单粗暴,就是接收到一帧,执行推理单帧的程序一次(以前在xavier上基于ROS上用过这种方式,当时是用的service,效果还可以),这样在板上能保证实时性吗?

还有什么更好地思路吗?因为第一次接触这块,还不太了解。还请各位朋友指点一下!?

1.芯片型号:J5

2.天工开物开发包OpenExplorer版本:docker_openexplorer_centos_7_j5_v1.1.33

3.问题定位:板端部署

?感谢您使用地平线芯片算法工具链,最近我们在收集大家的满意度反馈,欢迎您填写问卷,详细情况可见:https://developer.horizon.ai/forumDetail/146177053698464782

yolov5x在J5开发板上的性能可以做到实时性,这个肯定没问题。你是想让板子从哪接受数据?只是从本地读取一张图片推理一帧的话,把你的代码用build_j5.sh编译就好。如果是从摄像头取数据,或者想从本地源源不断读取数据(回灌),可以参考ai_forward_view_sample的示例。

嗯,刚才在板子上推理了一帧试了一下,推理的确很快,但是1920 1080的图像,imwrite带框的结果非常慢,得将近5分钟,才能输出完整的图片,这是为什么?

和x86的docker恰好相反,那边推理很慢,但是imwrite输出结果却很快。

这部分程序是在哪里运行的?BPU还是CPU?(我不懂,乱说的)

可视化是在CPU处理的哈,推理结束之后就跟BPU没关系了。J5的CPU是A55,肯定不能和电脑的CPU比,毕竟是嵌入式设备。

你是有强烈的可视化需求吗?拿我们ai_forward_view_sample举例,板子做完推理之后,会将后处理完的数据发送到x86端,在x86上完成可视化并且在网页上显示实时结果。换言之,在开发板上进行可视化不是一个常规的需求。。。

补充一下,我这里说的可视化就是指imwrite,然后流程是推理-后处理-可视化,推理是BPU做,后处理是CPU做,可视化imwrite也是CPU做,但是不建议在板子上imwrite

感谢回复,明白!

我想确认一下:

我现在是:一个程序从上到下,推理+后处理+可视化一套完成的,板子会自动将代码各自的过程分给BPU和CPU吗,不需要我们人为调度是吗?

可以这样理解吗?

对,可以这样理解。

可以在docker环境下运行hb_perf xxxxxxx.bin,会生成一张png图,图中绿色的方框表示的是BPU计算的部分,只有这些地方才会使用BPU算,其他都是CPU。

想问下有yolov5后处理的c++代码吗,只做一张图片的推理,保存生成结果