hpc203 / yolov5-dnn-cpp-python

用opencv的dnn模块做yolov5目标检测,包含C++和Python两个版本的程序

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

标注的confidences全都太高,接近于1

wangchunin opened this issue · comments

找了一些原因,可能是由于在原版yolov5中:
# Compute conf
x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf
但是我发现我这边得到的obj_conf(detection[5])比原版的要低很多,乘下来就只有0.2左右了。
我不是太清楚,这个是怎么计算的,想请教一下您😂
在您的代码中也有类似的描述:
###其实只需要对x,y,w,h做sigmoid变换的, 不过全做sigmoid变换对结果影响不大,因为sigmoid是单调递增函数,那么就不影响类别置信度的排序关系,因此不影响后面的NMS
###不过设断点查看类别置信度,都是负数,看来有必要做sigmoid变换把概率值强行拉回到0到1的区间内

谢谢!

我的也是同样的情况,置信度都接近于1了。这是怎么回事呀

原版的yolov5里,置信度等于目标框置信度和类别置信度的乘积,我这里的程序没有做这一步处理,导致最后得到的置信度很高,你可以在程序里加上这一步

你是说在做归一化之前吗?这里应该单独标出类别置信度吧,还是标记目标框置信度和类别置信度?