我想训练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终端,我不知道这是否重要。
答案 0 :(得分:1)
最好使用AlexeyAB repository进行培训。
您应该使用验证集或测试对数据上受过训练的网络进行评估。
我训练了26个班级的数据集,而我忽略了5k个班级,而您有12个班级。
的Nan
值最好在开始训练时降低学习率。然后增加它。
您可以在Windows和Linux中训练网络,这没关系。