首页 > 解决方案 > 暗网:损失减少,但训练 1 类时 iou 保持非常低

问题描述

我正在用 1 个类训练 Darknet Yolo(有 9000 个训练示例!),但我有这个输出样本:

v3 (iou loss, Normalizer: (iou: 0.07, obj: 1.00, cls: 1.00) Region 150 Avg (IOU: 0.000000), count: 1, class_loss = 0.003734, iou_loss = 0.000000, total_loss = 0.003734  

iou 保持在 0.07不变,并且类损失非常低。

 (next mAP calculation at 1000 iterations) 
 250: 0.004589, 0.011130 avg loss, 0.000004 rate, 7.071465 seconds, 16000 images, 2.931760 hours left

导致这个恒定的小 iou 的问题是什么?

细节

yolov4-custom.cfg文件中最相关的部分:

batch=64
subdivisions=16
width=512
height=512
channels=1
momentum=0.949
decay=0.0005

max_batches = 2000
steps=1600,1800

...

filters=18
activation=linear


[yolo]
mask = 6,7,8
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=1

obj.data文件

classes = 1
train  = /content/darknet/build/darknet/x64/data/train.txt
names = /content/darknet/build/darknet/x64/data/obj.names
backup = /content/darknet/build/darknet/x64/backup/

obj.name文件

Object

标签: computer-visionobject-detectionyoloobject-detection-apidarknet

解决方案


首先,您需要更改 cfg 文件。如果您有 <= 3 个类,则需要设置 max_batches = 6000,步骤:4800、5400。然后您需要设置所有 3 个 yolo 层和 prev。层的过滤器。损失应该变低,即训练和你的模型,因为它被证明训练得很好。


推荐阅读