yolov5 onnx模型推理c#

https://blog.csdn.net/weixin_40671962/article/details/128277041

gpu推理

https://zhuanlan.zhihu.com/p/492040015

python gpu推理

https://blog.csdn.net/m0_50786932/article/details/147199619

 

YOLOv5中的‌cls_conf‌指‌类别置信度‌,即目标属于某一类别的概率。在模型输出中,每个预测框会同时输出‌目标置信度(obj_conf)‌和‌类别置信度(cls_conf)‌。

具体作用

  1. ‌目标置信度(obj_conf)‌:表示预测框包含目标的概率。
  2. ‌类别置信度(cls_conf)‌:表示预测框属于某一具体类别的概率。例如,若模型预测目标为“汽车”,则对应类别的cls_conf值为该目标属于“汽车”的概率。

筛选机制

在后处理中,通常需要同时考虑两者:

  • 仅当obj_conf > conf_thres(目标检测阈值)时,认为可能存在目标;
  • 再结合cls_conf(最大类别概率)与obj_conf的乘积是否大于阈值进行筛选。 ‌mul_conf = obj_conf*cls_conf,mul(multiply乘法),,MulConfidence阈值

public override float Confidence { get; set; } = 0.20f;
public override float MulConfidence { get; set; } = 0.25f;
public override float Overlap { get; set; } = 0.45f; //重叠

默认参数

  • ‌置信度阈值‌(conf_thres)默认值为0.25,可通过调整该值控制检测严格程度。
    • public override int Dimensions { get; } = 85; 
    • 每个单元格输出x,y,w,h,objectness5项再加80个类别(预训练权重pt或者onnx,COCO(Common Objects in Context)数据集)的置信度总共85项内容,
    • YOLOv5是一种基于深度学习的目标检测算法,它能够在图像中识别和定位多种物体。YOLOv5在COCO(Common Objects in Context)数据集上进行了预训练,该数据集包含了80个类别的物体
    • 自己训练的如果只有3个类别,则5+3 = 8,public override int Dimensions { get; } = 8
    • image

       

    • (二)C# 类库实现差异
      通过反编译 Yolov8Net 源码发现,其核心处理逻辑假设:

      1、原始输出模式(nms=False):

      解析 85 维向量时,前 4 维为 xywh 归一化坐标,第 5 维为目标置信度,后 80 维为类别概率
      手动执行 NMS 时使用目标置信度 × 类别概率作为最终得分
      2、集成 NMS 模式(nms=True):

      直接读取 6 维向量作为最终结果,但误将第 5 维(目标置信度)当作综合得分,未考虑类别概率
      这种设计差异导致:

      当模型内置 NMS 时(nms=True),类库误用了错误的置信度计算方式
      当模型未内置 NMS 时(nms=False),类库按 YOLOv5/YOLOv8 原生逻辑正确计算综合得分
      ————————————————
      版权声明:本文为CSDN博主「AI、少年郎」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      原文链接:https://blog.csdn.net/www376422613/article/details/149096554

       

posted @ 2025-09-20 20:54  txwtech  阅读(23)  评论(2)    收藏  举报