3,302
社区成员




各位大佬,我在wos上下了一个snpe2.20,跑了一个yolov5l的目标检测模型(用的是这个预训练https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l.pt)。我导出的onnx可以正确识别,但是转成dlc后我发现,从output0里读出的xywh和bbox的confidence是正常的,但是所有类别的confidence都很小,几乎就是0,即使是在cpu上执行也是这样,这个是哪里有什么问题吗
如果您使用的是原版模型而没有经过任何裁剪,这种方式一般来说是不被推荐的。对于YoloV5而言,通过archers还原bbox的后处理部分一般来说是不做进模型中的,而是在sdk中实现,这里可以参考https://github.com/gesanqiu/SNPE_Tutorial 中的实现,仓库里doc目录中有文档描述如何实现。另一种调试思路,您可以逐层排查精度是在哪里掉光的。您可以在build snpe task的时候调用Snpe_SNPEBuilder_SetOutputLayers接口,指定中间层的layer名称,并把该层的输出保存,检查范围是否符合预期。您应该重点关注用红框框出来的三个layer,以/model.24/Transpose_2为例,如果您发现从Transpose的output tensor的data[:][:][:][:][5:](85即4+1+80,[5:]即所有类别的confidence)有大于0(sigmoid(0)即0.5,习惯上以0.5为界限)的值,那您应该继续向下排查剩余的层或使用上面提到的方案,否则您应该检查模型转换是不是出了什么问题,例如对比dlc和onnx在某一层的参数是否一致。