使用hrt_model_exec在J5板卡上测试性能,平均延时和帧率之间的关系?

1.芯片型号:J5

2.天工开物开发包OpenExplorer版本:J5_OE_1.1.62等

3.问题定位:使用bin模型在板卡上进行性能测试,使用hrt_model_exec会得到单帧平均延时和极限帧率

4.问题具体描述:想请教一下各位大佬,我部署了yolo-v8到办卡上使用hrt_model_exec进行性能测试,得到的单帧平均时延是437ms,极限帧率是18fps。如果通过这个单帧平均时延来算的话,帧率就2fps。怎么得到18fps呢?

您好,地平线工具链在持续迭代优化,为了给您提供更好的服务,希望您能抽出3分钟左右的时间,将您在使用工具链期间的感受和建议告诉我们,您的宝贵意见对我们很重要,非常感谢!-
问卷链接:地平线算法工具链使用满意度反馈

你好,如果单帧平均时延是通过单核单线程测得的,不能直接使用1000/437计算极限帧率,因为BPU是双核并且可以多线程

你好,我这里单针平均延时,是通过多核测试的,以下是我的测试命令:

hrt_model_exec perf --model_file horizon_J5_V8.bin --core_id 0 --thread_num 8 --frame_count 1000 profile_path profiler.log-
我得到的结果如图所示。所以我想问问,我是使用多核测试,那这个单帧平均时延和极限帧率我该相信哪个。我现在想要部署yolov8到J5开发板上,但是在测试性能的时候,这里我就卡住了。不知道到底是不是18FPS。

你好,如果想要获取准确的单帧延时latency,请使用单核单线程--core_id 1 --thread_num 1;如果想要获取准确的上板极限帧率,请使用双核满线程--core_id 0 --thread_num 8。你的配置测出的是上板的实际最大帧率

此外,这个模型的输入是batch1还是batch8

应该是batch1测试。请问batch对极限帧率有影响吗?

好的,我明白了,我已经在地平[线征程5算法工具链](https://developer.horizon.cc/api/v1/fileData/horizon\_j5\_open\_explorer\_cn\_doc/oe\_mapper/source/faststart/evaluation\_guide.html) 找到答案。大致含义是单帧延时体现了单个模型处理一帧数据所需的时间,是衡量计算平台能满足实时性能要求的一个重要指标。 但由于不同计算平台有多核、大小核、异构计算等不同的架构和设计,所以单帧延时指标有时并不能体现全部性能。 例如双核BPU的J5在评测单帧延时的时候,就会有一个核心处于空闲状态。

吞吐量体现了计算平台在满载/接近满载的状态下,单位时间内能够处理的图像总帧数。 在真实场景中,计算平台由于要并发处理多个摄像头的数据,所以越大的吞吐量才能满足更大的数据处理要求, 更贴合实际性能表现,也能作为统一的指标综合体现不同计算平台架构的能力。吞吐量一般可通过 增加并发多线程 ,或者使用 多batch模式 进行评测。

这里的多batch模式,例如:batch=8,是不是指,可以积累输入视频8帧,一起检测,再给定检测结果(可以区分8帧图片检测结果吗?能否一一对应?)

对的,batch8意味着累积输入视频的8帧或者来自不同摄像头的8帧图像一起送入模型进行推理,模型输出肯定是和输入帧一一对应的,在后处理正确的情况下,可视化的检测结果可以和图片一一对应

多batch会在一定程度上提高模型的吞吐率,尤其对于尺寸较小的模型,提升效果更加明显

好的,谢谢!!!