专栏算法工具链YOLOX_tiny的估计性能和实测性能差距非常大

YOLOX_tiny的估计性能和实测性能差距非常大

已解决
casiatao2022-08-08
123
7
我在开发机上使用hb_mapper对YOLOX_tiny的bin模型进行评估,得到的帧率为52FPS,而在开发板上实测,得到的帧率只有7FPS,不太明白为什么会差这么多,我看了生成的profile文件,CPU的推理用时很短
算法工具链
+1
评论2
0/1000
  • 颜值即正义
    Lv.2

    您好,推测可能是这个模型使用了查表激活(可以查看转换日志,显示算子类型为HzLut),当查表算子的shape超过8192时会被回退到cpu计算(但在转换时模型并不会被拆段,只是运行时编译器会进行判断),而html是统计不到cpu部分的耗时的,所以会存在动静态性能差异较大的问题。

    2022-08-08
    0
    5
    • casiatao回复颜值即正义:

      您好,请问查表激活是什么意思呢,我查了一下没查到这个东西。我在板端进行推理,得到的profile.log文件中,显示BPU的推理时间占了绝大部分,应该不会是cpu的问题吧。另外,请问板端的hrt_model_exec有没有类似hb_perf中统计每一层的计算时间的功能。

      2022-08-08
      0
    • casiatao回复颜值即正义:

      您好,我查了一下转换日志,发现Mul的算子类型为HzLut,我的模型中有很多这样的操作,请问有什么推荐的解决方案吗

      2022-08-08
      0
    • casiatao回复casiatao:

      我好像明白了,您说的查表激活是指SiLU吗

      2022-08-08
      0
    • 颜值即正义回复casiatao:

      你好,是的,在 SiLU 激活的计算中有 sigmoid,对于这种无法用矩阵乘计算的 op,我们只能通过查表去实现,但 BPU 查表无法无限大,所以当算子 shape>8192 时,我们会回退至 CPU 执行,这时候 BPU 的预估就无法统计到了,会体现在板端耗时中。

      综上,我们还是建议使用 BPU 原生加速的 ReLU 或者 ReLU6 来做激活函数。

      2022-08-08
      0
    • casiatao回复颜值即正义:

      您好,我还有一个问题,有一个sigmoid的输入shape为1x1x52x52,是小于8192的,但是在模型转换时仍然提示我该层将在CPU上运行,这是为什么呢

      2022-08-09
      0
  • 小帽哥aicv
    Lv.1
    你好,请问x3派移植yolox需要编译yolox,请问你是怎么做的?
    2023-03-24
    0
    0