m0_74337277 2023-07-14 06:41 采纳率: 40%
浏览 55
已结题

opencv dnn推理yolov5-cls转换后的onnx分类模型

我的onnx 模型是yolov5-cls分类模型转换的,只有两个类别。
没转换之前使用yolov5 提供的脚本推理时,这两个类别标签都会输出,只是置信度不同。
使用OpenCV dnn对此onnx模型推理时,推理结果是一个数组,只有两个值,请问输出的这个数组当中的含义是什么呢?
而且推理了一堆样本后,对比以前pt模型文件推理的结果,区别非常大,输出的类别标签几乎是1,置信度也有很多超过1或者2的,这是什么问题呢?

备注一下:yolov5当时训练输入的imgsz为640

附上代码截图以及运行结果图。
希望能得到各位的指点,不胜感激!

img

img

  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2023-07-14 12:55
    关注
    1. 首先说下你这代码,你这for循环里面读模型,每一一张图片都读一次模型做法有欠考虑。

      img

    2. 第二是输出结果,由于你是二分类,所以最终的结果就是长度为2的数组啊,从你打印的这个结果来看,是没有经过segmoid的结果,而如果你想要获取最终的分类置信度,你还需要对sigmoid的结果进行一次softmax。
    3. 图片预处理不一样,如果你看python源码你会发现,他在分类的时候预处理和检测分割的预处理不一样,他有经过均值和中间抠图步骤,而不是你这样直接的用blobFromimag()直接简单的进行resize。这也会导致你分类结果不太一样。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 创建了问题 7月14日

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错