yolov3.cfg的YOLO层中的ignore_thresh和true_thresh的目的是什么?

时间:2019-05-18 13:38:53

标签: threshold yolo darknet

我试图解释yolov3.cfg文件中不同参数的用途,但是,我找不到对ignore_thresh和true_thresh的任何解释。

我目前的(有限的)理解是,它们与非最大抑制相关,在非最大抑制中它们充当组合边界框的阈值,或作为预测置信度的上限和下限。

找不到真正在线解释参数的人,只有找到复制粘贴配置文件部分的人。我浏览了https://blog.paperspace.com/tag/series-yolo/,在PyTorch中实现了YOLOv3,但是他们顺利地跳过了使用和解释这两个参数的过程。

yolov3.cfg的相关部分如下所示。

[yolo]
mask = 3,4,5
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  ...
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

我认为这并不重要,但是我正在使用AlexeyAB的darknet存储库作为框架。

1 个答案:

答案 0 :(得分:2)

我还发现了this

ignore_thresh = .7 :该参数确定是否需要计算IOU误差是否大于阈值,以及IOU误差是否存在于成本函数中。

truth_thresh = 1 :计算中涉及的IOU阈值的大小。

当预测检测框与地面真实IOU重叠了ignore_thresh时,检测框将不参与损耗的计算,否则它将参与。

目的是控制参与损耗计算的检测框的比例。

ignore_thresh太大时,接近1,然后参与。检测框中的回归次数会更少,并且很容易导致过度拟合。

如果ignore_thresh设置得太小,则计算中涉及的参与者数量将很大。同时,在执行检测框架回归时很容易导致拟合不足。