YOLOv4训练自定义数据集

YOLOv4 训练自定义数据集

[Github 原文档] @Bobby Chen 记得留下小星星

YOLOv4 水下目标检测

0. 配置环境

  • Ubuntu 16.04/18.04
  • CUDA 10.0
  • cuDNN 7.6.0
  • Python 3.6
  • OpenCV 4.2.0
  • tensorflow-gpu 1.13.0

1. 下载依赖项 - [Github]

pip3 install -r requirements.txt

Download the source code

git clone https://github.com/AlexeyAB/darknet.git
cd darknet

vim Makefile

GPU=1
CUDNN=1 
CUDNN_HALF=1 
OPENCV=1 
DEBUG=1 
OPENMP=1 
LIBSO=1 
ZED_CAMERA=1 

make

2. 下载预训练权重

[Google drive] - yolov4.conv.137

[Baidu drive] - yolov4.conv.137 code: nppt


3. 标记自定义数据集 (可跳过

LabelImg is a graphical image annotation tool - labelImg

Ubuntu Linux Python3 + Qt5

git clone https://github.com/tzutalin/labelImg.git
sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
cd labelImg

python3 labelImg.py
python3 labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

4. 制作训练数据路径链接

├── JPEGImages
├── object_00001.jpg
└── object_00002.jpg

├── Annotations
├── object_00001.xml
└── object_00002.xml

├── labels
├── object_00001.txt
└── object_00002.txt

├── backup
├── yolov3-voc-object.backup
└── yolov3-voc-object_20000.weights

├── cfg
├── yolo3_object.data
└── yolov3-voc-object.cfg

  • JPEGImages – 储存所有的图片

  • Annotations – 储存所有的标注 [.xml] 文件

  • labels – 储存所有转换的 [.txt] 文件 (convert all [.xml] file to [.txt] file) 执行 voc_label.py 转换

    python3 ./tools/voc_label.py (convert xml2txt and check your file paths)
    
a. 首先创建训练集文件夹和验证集文件夹,并在所有自定义数据目录执行
python3 ./tools/img2train.py [img_path]
将所有数据分为训练集和验证集并生成 train.txt 和 val.txt 两个文件
  • train.txt – 该文件内容为所有训练图片名(不带.jpg后缀)
  • val.txt – 该文件内容为所有验证集图片名(不带.jpg后缀)
b.执行 voc_label.py 获取以下带路径的文件(用于 .data 文件)
  • object_train.txt – 该文件内容为所有训练集的 绝对路径
  • object_val.txt – 该文件内容为所有验证集的 绝对路径
5. 制作和更改 [.names] [.data] 和 [.cfg] 文件
  • .names 文件内容为训练类别
gedit train.names
Person 
Car
Dog
Cat
...

创建 train.names 后保存退出

  • .data 文件内容为创建以上文件的软链接(建议使用绝对路径)
gedit obj.data
   classes= [类别数]
   train = [object_train.txt 文件的绝对路径]
   valid = [object_val.txt 文件的绝对路径]
   names = [train.names 文件的绝对路径]
   backup = backup/ #训练后权重存储的文件夹
  • .cfg 文件可以更改 darknet/cfg/yolov4-custom.cfg (复制 yolov4-custom.cfg 到本地进行更改) 需要更改以下部分:

    • change line batch to batch=64 (32 or 16)

    • change line subdivisions to subdivisions=16 (根据你的GPU性能可调整为 32 or 64.)

    • change line max_batches to (classes*2000 but not less than number of training images, and not less than 6000), f.e. max_batches=6000 if you train for 3 classes

    • change line steps to 80% and 90% of max_batches, f.e. steps=4800,5400

    • set network size width=416 height=416 or any value multiple of 32:

    • 更改 cfg 文件中的类别数 将 classes=80 更改为自定义数据类别数,共有 3 个 [yolo]-layers 需要更改,位置如下:

    • 更改 cfg 文件中的 [filters=255] 参数,更新后的 filters=(类别数 + 5)x3 ,位于每个 [yolo] layer 中最后的 [convolutional] 层,共有 3[filters=255] 需要更改,位置如下:


5. 训练

在这里插入图片描述

  • 训练及训练过程可视化

    sudo ./darknet detector train [obj.data path] [yolov4-custom.cfg path]  yolov4.conv.137 -map
    
  • 使用多GPU训练

    sudo ./darknet detector train [obj.data path] [yolov4-custom.cfg path]  yolov4.conv.137 -gpus 0,1,2 -map
    

6. 测试

在这里插入图片描述

  • 测试单张图片

    ./darknet detector test [obj.data path] [yolov4-custom.cfg path] [weights file path] [image path]
    
  • 测试视频

    ./darknet detector demo [obj.data path] [yolov4-custom.cfg path] [weights file path] [video path]
    
  • 测试视频并保存测试结果

    ./darknet detector demo [obj.data path] [yolov4-custom.cfg path] [weights file path] [video path] -out_filename [Custom naming]
    
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值