【发布时间】:2020-02-10 21:15:56
【问题描述】:
我想训练 YOLOv3 在航拍图片上检测人类。我在图像数据集中使用 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
我将 valid 注释掉,因为据我了解,它用于检查结果并且有效数据集与训练无关(我没有费心创建它)。
当我运行 ./darknetdetector 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 问题?
附言。我在 Windows 10 上使用 Ubuntu 终端,我不知道这是否重要。
【问题讨论】:
标签: python machine-learning nan yolo darknet