Need help with yolov4-tf2?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

bubbliiiing
155 Stars 64 Forks MIT License 79 Commits 11 Opened issues

Description

这是一个yolo4-tf2(tensorflow2)的源码,可以用于训练自己的模型。

Services available

!
?

Need anything else?

Contributors list

# 73,658
Python
79 commits

YOLOV4:You Only Look Once目标检测模型在Tensorflow2当中的实现


2021年2月7日更新:
加入letterboximage的选项,关闭letterboximage后网络的map得到大幅度提升。

目录

  1. 性能情况 Performance
  2. 实现的内容 Achievement
  3. 所需环境 Environment
  4. 注意事项 Attention
  5. 小技巧的设置 TricksSet
  6. 文件下载 Download
  7. 预测步骤 How2predict
  8. 训练步骤 How2train
  9. 参考资料 Reference

性能情况

| 训练数据集 | 权值文件名称 | 测试数据集 | 输入图片大小 | mAP 0.5:0.95 | mAP 0.5 | | :-----: | :-----: | :------: | :------: | :------: | :-----: | | VOC07+12+COCO | yolo4vocweights.h5 | VOC-Test07 | 416x416 | - | 88.9 | COCO-Train2017 | yolo4_weight.h5 | COCO-Val2017 | 416x416 | 46.4 | 70.5

实现的内容

  • [x] 主干特征提取网络:DarkNet53 => CSPDarkNet53
  • [x] 特征金字塔:SPP,PAN
  • [x] 训练用到的小技巧:Mosaic数据增强、Label Smoothing平滑、CIOU、学习率余弦退火衰减
  • [x] 激活函数:使用Mish激活函数
  • [ ] ……balabla

所需环境

tensorflow-gpu==2.2.0

注意事项

代码中的yolo4_weights.h5是基于608x608的图片训练的,但是由于显存原因。我将代码中的图片大小修改成了416x416。有需要的可以修改回来。 代码中的默认anchors是基于608x608的图片的。

这个库里面的h5和Keras的h5不同,不要混用。
视频中说的速度慢问题已经解决了很多,现在train.py和train_eager.py速度差距不大,如果还有改进速度的地方可以私信告诉我!

注意不要使用中文标签,文件夹中不要有空格!
在训练前需要务必在modeldata下新建一个txt文档,文档中输入需要分的类,在train.py中将classespath指向该文件

小技巧的设置

在train.py和traineager.py文件下:
1、mosaic参数可用于控制是否实现Mosaic数据增强。
2、Cosine
scheduler可用于控制是否使用学习率余弦退火衰减。
3、label_smoothing可用于控制是否Label Smoothing平滑。

在train_eager.py文件下:
1、regularization参数可用于控制是否实现正则化损失。

文件下载

训练所需的yolo4weights.h5可在百度网盘中下载。
链接: https://pan.baidu.com/s/1jDOPTel7mTXxNDliuKbmvA 提取码: irgc
yolo4
weights.h5是coco数据集的权重。
yolo4vocweights.h5是voc数据集的权重。

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载yolo4weights.h5或者yolo4vocweights.h5,放入modeldata,运行predict.py,输入
    python
    img/street.jpg
    

  2. 利用video.py可进行摄像头检测。
    #### b、使用自己训练的权重
  3. 按照训练步骤训练。
  4. 在yolo.py文件里面,在如下部分修改modelpath和classespath使其对应训练好的文件;modelpath对应logs文件夹下面的权值文件,classespath是model_path对应分的类
    python
    _defaults = {
    "model_path": 'model_data/yolo4_weight.h5',
    "anchors_path": 'model_data/yolo_anchors.txt',
    "classes_path": 'model_data/coco_classes.txt',
    "score" : 0.5,
    "iou" : 0.3,
    # 显存比较小可以使用416x416
    # 显存比较大可以使用608x608
    "model_image_size" : (416, 416)
    }
    
  5. 运行predict.py,输入
    python
    img/street.jpg
    
  6. 利用video.py可进行摄像头检测。

训练步骤

  1. 本文使用VOC格式进行训练。
  2. 训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
  3. 训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
  4. 在训练前利用voc2yolo4.py文件生成对应的txt。
  5. 再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。注意不要使用中文标签,文件夹中不要有空格!
    python
    classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]
    
  6. 此时会生成对应的2007_train.txt,每一行对应其图片位置及其真实框的位置
  7. 在训练前需要务必在modeldata下新建一个txt文档,文档中输入需要分的类,在train.py中将classespath指向该文件,示例如下:
    python
    classes_path = 'model_data/new_classes.txt'    
    
    modeldata/newclasses.txt文件内容为:
    python
    cat
    dog
    ...
    
  8. 运行train.py即可开始训练。

mAP目标检测精度计算更新

更新了getgttxt.py、getdrtxt.py和getmap.py文件。
get
map文件克隆自https://github.com/Cartucho/mAP
具体mAP计算过程可参考:https://www.bilibili.com/video/BV1zE411u7Vw

Reference

https://github.com/qqwweee/keras-yolo3/
https://github.com/Cartucho/mAP
https://github.com/Ma-Dan/keras-yolo4

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.