Darknet-Yolo系列(一)利用 Darknet 在自己的数据集上训练 Yolov4-tiny 模型

利用 Darknet 在自己的数据集上训练 Yolov4-tiny 模型

    • 0.配置环境
    • 1.数据准备
    • 2.模型训练

另有Yolov4模型的各种部署方式,详见github。

0.配置环境

此项目使用的训练环境:Ubuntu 18.04.5, CUDA Version: 10.1, Darknet A版, Nvidia 2080 ti 显卡.

其中 Darknet 的配置参考这里

1.数据准备

这个项目使用的反光衣检测数据集来自reflective-clothes-detect and dataset yolov5,
共有反光衣检测数据1083张。

  • 进入百度云盘下载链接 提取码->(dooh).
  • 将数据文件夹中‘labels/'下的文件复制到‘JPEGImages/’中,保证两者在同一个文件夹下。
  • 修改配置文件
    cd darkent
    
    • 在‘cfg/'路径下创建配置文件yolov4-tiny-reflective.cfg,当然可以直接从’yolov4-tiny-custom.cfg’直接复制过来。
    • 修改参数,classes = 2, filters=(classes + 5)x3 = 21,注意:每个[yolo]层里的classes及其前一个[convolutional]层里的filters参数都需要相应修改,注意是每一个!
      [convolutional]
      filters=21
      
      [yolo]
      classes=2
      
    • 其他参数如batch,learning_rate等可以根据需要修改。
  • 准备数据文件,包含四个文件reflective.data,reflective.names,train-reflective.txt,valid-reflective.txt.
    • 进行训练集验证集数据划分,将划分好的文件 ‘train_reflective.txt’ 和 ‘valid_reflective.txt’ 放到 ‘data/’ 文件夹下。

      python3 split_datasets( )
      

      参数说明:

      imagePath即下载数据中‘JPEGImages’文件的路径

      savePath即生成文件的保存路径,可以直接设置为’/path where darknet installed/data/’

    • 创建‘reflective.data’:

      classes = 2
      train = data/train-reflective.txt 
      valid = data/valid-reflective.txt
      test = data/test-reflective.txt
      names = data/reflective.names
      backup = reflective/
      
    • 创建’reflective.names’:

      other
      reflective
      
  • 详细过程也可参考Darknet的README。

2.模型训练

  • 执行训练代码,这里我训练的是yolov4-tiny模型,并且使用了darknet提供的预训练模型:

    cd darknet/
    mkdir reflective
    # yolov4:
    # sudo ./darknet detector train ./data/reflective.data  ./cfg/yolov4-reflective.cfg ./pretrained/yolov4.conv.137 -map -gpus 0,1 -dont_show
    # yolov4-tiny:
    sudo ./darknet detector train ./data/reflective.data  ./cfg/yolov4-tiny-reflective.cfg ./pretrained/yolov4-tiny.conv.29 -map -gpus 0,1 -dont_show  
    
  • 在主目录下会生成chart.png,可以查看训练过程的loss和map变化,提前结束训练。

  • 权重文件保存在’reflective/‘文件夹下,测试结果最好的权重名为’yolov4-tiny-reflective_best.weights’,让我们来看看效果如何:

    # 在视频上测试模型:
    python3 darknet_video.py --input data/test.mp4 --out_filename data/test_result.mp4 --weights reflective/yolov4-tiny-reflective_best.weights  --data_file data/reflective.data  --config_file cfg/yolov4-tiny-reflective.cfg --dont_show     
    

你可能感兴趣的:(Darkent,深度学习,机器学习,神经网络,图像处理)