在 DARKNET 培训期间获得 -NaN,我做错了什么?
Getting -NaN during DARKNET training, what am i doing wrong?
我想训练 YOLOv3 在航拍图片上检测人类。 我在图像数据集中使用 VisDrone 对象检测:
github.com/VisDrone/VisDrone-Dataset
我编写了一个将标签转换为暗网格式的脚本,以便我可以根据 pjreddie "Training YOLO on COCO" 说明对其进行训练,我仔细检查了我转换后的标签是否与对象正确匹配并且它们匹配,我还创建了一个根据 github 上 VisDrone2018-DET-toolkit 上的标签描述,正确的 coco.names 文件。我通过 运行ning
创建了 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
我将 valid 注释掉了,因为据我所知,它用于检查结果,而 valid 数据集与训练无关(我懒得创建它)。
当我 运行 ./darknet detector train 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 终端,我不知道这是否重要。
最好使用AlexeyAB repository进行训练
您应该使用验证集或测试来评估您数据上经过训练的网络。
我训练了一个 26 类 的数据集,我忽略了 5k 类 而你有 12 类.
对于 Nan
值,最好在开始训练时降低学习率。然后增加它。
您可以在 windows 和 Linux 中训练您的网络,这没关系。
我想训练 YOLOv3 在航拍图片上检测人类。 我在图像数据集中使用 VisDrone 对象检测: github.com/VisDrone/VisDrone-Dataset
我编写了一个将标签转换为暗网格式的脚本,以便我可以根据 pjreddie "Training YOLO on COCO" 说明对其进行训练,我仔细检查了我转换后的标签是否与对象正确匹配并且它们匹配,我还创建了一个根据 github 上 VisDrone2018-DET-toolkit 上的标签描述,正确的 coco.names 文件。我通过 运行ning
创建了 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
我将 valid 注释掉了,因为据我所知,它用于检查结果,而 valid 数据集与训练无关(我懒得创建它)。
当我 运行 ./darknet detector train 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 终端,我不知道这是否重要。
最好使用AlexeyAB repository进行训练
您应该使用验证集或测试来评估您数据上经过训练的网络。
我训练了一个 26 类 的数据集,我忽略了 5k 类 而你有 12 类.
对于
Nan
值,最好在开始训练时降低学习率。然后增加它。您可以在 windows 和 Linux 中训练您的网络,这没关系。