不同yolo算法为真么差距这么大

同样的数据集,为什么yolov4,yolov5,yolox训练的效果差距这么大?
yolov4的loss:

img


yolov4训练的置信度0.9左右

yolov5的loss:

img


yolov5的置信度0.7左右

yolox的loss:

img


yolox的置信度0.8左右

1.请问这是和什么有关呢,不是应该yolo越先进,效果应该越好吗?
2.loss值是越接近0越好吗?

你说的置信度是最终图片检测结果的置信度,还是训练的acc?
单单从loss图片没看出来有啥大问题,基本上都在在下降啊。yolo系列的loss是越接近0越好,但是并不是说yolov4的loss比yolov5低,v4效果就一定比v5好

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7419677
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【目标检测】yolo系列:从yolov1到yolov5之YOLOv1详解及复现
  • 除此之外, 这篇博客: yolov3和yolov4损失函数中的 loss公式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在这里插入图片描述
    其中:
    网格共有KxK个,每个网格产生M个候选框anchor,每个anchor经过网络会得到相应的bounding box,最终形成KxKxM个bounding box,如果box内noobj,则只计算该box的置信loss。

    1.回归loss会乘以一个(2-wxh)的比例系数,用来加大对小box的损失。
    其中box_loss_scale=(2-wxh);object_mask其实是个置信度,如果有目标则为1,没有目标为0;对于wh_loss采用回归方法;而对于xy_loss,上述公式采用回归方法,xi和yi hat其实是取了sigmoid之后的值,而在keras版本中,采用了交叉熵,因为raw_pred是经过model的卷积输出,如果采用sigmoid+方差,容易梯度消失,收敛较慢,所以采用二值交叉熵binary_crossentropy更容易计算。

    2.置信度loss损失函数采用交叉熵,分为两部分:obj和noobj,其中noobj的loss还增加了权重系数lambda,这是为了减少noobj计算部分的贡献权重。

    3.分类loss损失函数采用交叉熵,当第i个网格的第j个anchor box负责某一个真实目标时,那么这个anchor box所产生的bounding box才会去计算分类损失函数。

  • 您还可以看一下 李立宗老师的YOLOv1论文深度解析(8小时原汁原味逐句解析YOLO论文)课程中的 对比其他系统——对比小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^