zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    淡入淡出js
    Comparable和Comparator的区别
    mybatis的动态sql详解
    mybatis动态sql之foreach
    mybatis的动态sql中collection与assoction
    Mybatis中#与$区别
    转JSONObject put,accumulate,element的区别
    Spring配置,JDBC数据源及事务
    销毁session
    IIS express 7.5 设置默认文档
  • 原文地址:https://www.cnblogs.com/juluwangshier/p/12289790.html
Copyright © 2011-2022 走看看