yolov3 训练数据集

 Yolo模型的训练参考官网:https://pjreddie.com/darknet/yolo/

(1)在VOC数据集上训练YOLO

 如果您想使用不同的训练方式,超参数或数据集,可以从头开始训练YOLO。 这是在Pascal VOC数据集上运行它的方法。

1) 获取 Pascal VOC 数据集

 要训练YOLO,您需要2007年至2012年的所有VOC数据。您可以在此处找到指向这些数据的链接。 要获取所有数据,请创建一个目录以存储所有数据,然后从该目录运行:

 要执行wget命令需要是linux操作系统,如果是windows系统就需要手动下载了,当然也可以使用win10下的Linux子系统,但是那网速,不说了,都是泪,建议还是去其他下载速度快的地方或者使用下载工具下载这些数据。

 现在将有一个VOCdevkit /子目录,其中包含所有VOC训练数据。

2) 生成VOC数据集标签

 现在我们需要生成Darknet使用的标签文件。 Darknet希望为每个图像提供一个.txt文件,并为图像中的每个真实对象添加一行,如下所示:

<object-class> <x> <y> <width> <height>

其中x,y,宽度和高度是相对于图像的宽度和高度。 为了生成这些文件,我们将在Darknet的scripts /目录中运行voc_label.py脚本。 让我们再次下载它,因为我们很懒。

wget https://pjreddie.com/media/files/voc_label.py
python voc_label.py

几分钟后,此脚本将生成所有必需文件。 通常,它会在VOCdevkit / VOC2007 / labels /和VOCdevkit / VOC2012 / labels /中生成许多标签文件。 在目录中,您应该看到:

ls
2007_test.txt   VOCdevkit
2007_train.txt  voc_label.py
2007_val.txt    VOCtest_06-Nov-2007.tar
2012_train.txt  VOCtrainval_06-Nov-2007.tar
2012_val.txt    VOCtrainval_11-May-2012.tar

 诸如2007_train.txt之类的文本文件列出了该年份的图像文件和图像集。 Darknet需要一个文本文件,其中包含要训练的所有图像。 在此示例中,让我们训练除2007测试集以外的所有内容,以便我们可以测试模型。 执行:

cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt

现在,我们将所有2007年和2012年的训练集合成一个大清单。 这就是我们要做的所有数据设置!

3) 修改Pascal Data的配置文件cfg

 现在转到您的Darknet目录。 我们必须更改cfg / voc.data配置文件以指向您的数据:

  1 classes= 20
  2 train  = <path-to-voc>/train.txt
  3 valid  = <path-to-voc>2007_test.txt
  4 names = data/voc.names
  5 backup = backup

您应该用放置VOC数据的目录替换<path-to-voc>。

4)下载预训练模型

 为了进行训练,我们使用在Imagenet上预先训练的卷积权重。 我们使用darknet53模型的权重。 您可以在此处下载卷积图层的权重(76 MB)。

wget https://pjreddie.com/media/files/darknet53.conv.74

5)训练模型

 现在我们可以训练! 运行命令:

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------

*****************************************************************************************************************************************

(2)在COCO数据集上训练YOLO

 如果您想使用不同的训练方式,超参数或数据集,可以从头开始训练YOLO。 这是在COCO数据集上运行它的方法。

 1) 获取COCO数据

要训练YOLO,您将需要所有COCO数据和标签。 脚本scripts / get_coco_dataset.sh将为您执行此操作。 找出要放置COCO数据并下载的位置,例如:

cp scripts/get_coco_dataset.sh data
cd data
bash get_coco_dataset.sh

现在,您应该具有为Darknet生成的所有数据和标签。

2) 修改COCO配置文件cfg

 现在转到您的Darknet目录。 我们必须更改cfg / coco.data配置文件以指向您的数据:

  1 classes= 80
  2 train  = <path-to-coco>/trainvalno5k.txt
  3 valid  = <path-to-coco>/5k.txt
  4 names = data/coco.names
  5 backup = backup

您应该将<path-to-coco>替换为放置COCO数据的目录。

您还应该修改模型cfg以进行培训,而不是进行测试。 cfg / yolo.cfg应该看起来像这样:

[net]
# Testing
# batch=1
# subdivisions=1
# Training
batch=64
subdivisions=8
....

3) 训练模型

 现在我们可以训练! 运行命令:

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74

如果要使用多个GPU,请运行:

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74 -gpus 0,1,2,3

如果要停止并从检查点重新开始训练,请执行以下操作:

./darknet detector train cfg/coco.data cfg/yolov3.cfg backup/yolov3.backup -gpus 0,1,2,3
原文地址:https://www.cnblogs.com/juluwangshier/p/12289790.html