在DARKNET培训期间得到-NaN,我在做什么错?

时间:2020-02-10 21:15:56

标签: python machine-learning nan yolo darknet

我想训练YOLOv3在航空影像上检测人。 Im在“图像”数据集中使用VisDrone对象检测: github.com/VisDrone/VisDrone-Dataset

我写了一个脚本,将标签转换为暗网格式,以便我可以按照pjreddie的“ COCO上的YOLO培训”说明对其进行训练,我再次检查了转换后的标签是否正确匹配了对象,并且它们确实匹配,我还创建了一个正确的标签根据github上VisDrone2018-DET-toolkit上标签说明的coco.names文件。我通过运行创建了trainvalno5k.txt文件

python 5kGenerator.py> trainvalno5k.txt

5kGenerator.py:

import os

for filename in os.listdir('images'):
    print( os.path.abspath( os.path.join( 'images', filename )))

我修改了coco.data文件,结果如下:

classes= 12
train  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/trainvalno5k.txt
#valid  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/5k.txt
#valid = data/coco_val_5k.list
names  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/coco.names
backup = backup
#eval=coco

我评论了有效,因为据我了解,它可以用于检查结果,而有效的数据集与训练无关(我不必费心创建它)。

当我运行./darknet检测器火车cfg / coco.data cfg / yolov3.cfg darknet53.conv.74时,东西会正确加载并且训练开始,但是每隔几行我都会收到-nan消息,我也不知道为什么,以及是否对最终结果有影响,例如:

Loading weights from darknet53.conv.74...Done!
Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
Resizing
416
Loaded: 1.122782 seconds
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.428162, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.409795, Class: 0.690346, Obj: 0.091164, No Obj: 0.519810, .5R: 0.000000, .75R: 0.000000,  count: 1
Region 106 Avg IOU: 0.157575, Class: 0.532119, Obj: 0.333807, No Obj: 0.417611, .5R: 0.045685, .75R: 0.000000,  count: 197
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.427261, .5R: -nan, .75R: -nan,  count: 0

这很慢,因为我正在CPU上进行测试,因此将在Nvidia Quadro上进行适当的培训

能否请您解释这种现象,我该如何解决-nan问题?

Ps。我在Windows 10上使用Ubuntu终端,我不知道这是否重要。

1 个答案:

答案 0 :(得分:1)

  1. 最好使用AlexeyAB repository进行培训。

  2. 您应该使用验证集或测试对数据上受过训练的网络进行评估。

  3. 我训练了26个班级的数据集,而我忽略了5k个班级,而您有12个班级。

  4. Nan值最好在开始训练时降低学习率。然后增加它。

  5. 您可以在Windows和Linux中训练网络,这没关系。