在DARKNET训练过程中出现-NaN,我做错了什么?

我想训练YOLOv3来检测空中照片中的人类。 我在使用VisDrone图像对象检测数据集:github.com/VisDrone/VisDrone-Dataset

我编写了一个脚本,将标签转换为darknet格式,以便按照pjreddie的“在COCO上训练YOLO”说明进行训练。我仔细检查了转换后的标签是否与对象正确匹配,结果是匹配的。我还根据VisDrone2018-DET-toolkit在github上的标签描述,创建了一个正确的coco.names文件。我通过运行以下命令创建了trainvalno5k.txt文件:

python 5kGenerator.py > trainvalno5k.txt

5kGenerator.py的代码如下:

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

我修改了coco.data文件,修改后的内容如下:

classes= 12train  = /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.listnames  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/coco.namesbackup = backup#eval=coco

我注释掉了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.0005Resizing416Loaded: 1.122782 secondsRegion 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.428162, .5R: -nan, .75R: -nan,  count: 0Region 94 Avg IOU: 0.409795, Class: 0.690346, Obj: 0.091164, No Obj: 0.519810, .5R: 0.000000, .75R: 0.000000,  count: 1Region 106 Avg IOU: 0.157575, Class: 0.532119, Obj: 0.333807, No Obj: 0.417611, .5R: 0.045685, .75R: 0.000000,  count: 197Region 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终端,不知道这是否重要。


回答:

  1. 最好使用AlexeyAB的存储库进行训练。

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

  3. 我已经训练了一个包含26个类别的数据集,我忽略了5k类别,而您有12个类别。

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注