← 开源
bubbliiiing

yolov4-pytorch

这是一个YoloV4-pytorch的源码,可以用于训练自己的模型。

Model DevelopmentObject detectionPython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
2.16k
Star
593
Fork
+0
本周
1
贡献者
创建于 2020-05-24 · 更新于 2026-10-12 · 今日第 8910 名
主要开发者

bubbliiiing/yolov4-pytorch 排名第 8,910,有 2,163 个星标。

同类别比较

bubbliiiing/yolov4-pytorch 排名第 8,910,此处有 8 个同类条目;fangwei123456/spikingjelly 排名第 8,911。

同类别比较
名称排名指标
maxpumperla/hyperas8,897
语言:
Python
星标数:
2,173
分叉数:
314
简介:
Keras + Hyperopt: A very simple wrapper for convenient hyperparameter optimization
pannous/tensorflow-speech-recognition8,898
语言:
Python
星标数:
2,173
分叉数:
628
简介:
🎙Speech recognition using the tensorflow deep learning framework, sequence-to-sequence neural networks
openai/roboschool8,899
语言:
Python
星标数:
2,171
分叉数:
488
简介:
DEPRECATED: Open-source software for robot simulation, integrated with OpenAI Gym.
paarthneekhara/text-to-image8,908
语言:
Python
星标数:
2,166
分叉数:
398
简介:
Text to image synthesis using thought vectors
fangwei123456/spikingjelly8,911
语言:
Python
星标数:
2,162
分叉数:
327
简介:
SpikingJelly is an open-source deep learning framework for Spiking Neural Network (SNN) based on PyTorch.
facebookresearch/pycls8,912
语言:
Python
星标数:
2,161
分叉数:
239
简介:
Codebase for Image Classification Research, written in PyTorch.
jeonsworld/ViT-pytorch8,915
语言:
Jupyter Notebook
星标数:
2,159
分叉数:
396
简介:
Pytorch reimplementation of the Vision Transformer (An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale)
ankush-me/SynthText8,926
语言:
Python
星标数:
2,145
分叉数:
622
简介:
Code for generating synthetic text images as described in "Synthetic Data for Text Localisation in Natural Images", Ankush Gupta, Andrea Vedaldi, Andrew Zisserman, CVPR 2016.
关键参数与规格
关键参数与规格
参数值
语言Python
类别Model Development
子类别Object detection
星标数2,163
分叉数593
贡献者1
创建日期2020-05-24
更新日期2026-10-12
1 天星标数0
7 天星标数0
排名8,910
上次排名8,968
排名变化58
7 天星标排名12,126
上次 7 天星标排名12,183
7 天星标排名变化57
总星标排名5,964
上次总星标排名5,955
总星标排名变化-9
国家China
README 摘录

参考资料 Reference Top News ** **:**新增Seed设定,用于保证每次训练结果一致。 ** ** **:**支持多GPU训练,新增各个种类目标数量计算,新增heatmap。 ** ** **:**进行了大幅度的更新,修改了loss组成,使得分类、目标、回归loss的比例合适、支持step、cos学习

率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整、新增图片裁剪。 ** BiliBili视频中的原仓库地址为: ** **:**进行了大幅度的更新,增加了大量注释、增加了大量可调整参数、对代码的组成模块进行

修改、增加fps、视频预测、批量预测等功能。 1 | YoloX | YoloV7 | YoloV7-tiny | 性能情况 | 训练数据集 | 权值文件名称 | 测试数据集 | 输入图片大小 | mAP 0. 2 实现的内容 [x] 主干特征提取网络:DarkNet53 => CSPDarkNet53 [x] 特征金字塔:SPP,PAN [x] 训练用到的

小技巧:Mosaic数据增强、Label Smoothing平滑、CIOU、学习率余弦退火衰减 [x] 激活函数:使用Mish激活函数 [ ] ……balabla 所需环境 torch==1. VOC数据集下载地址如下,里面已经包括了训练集、测试集、验证集(与测试集一样),无需再次划分: 链

接: 提取码: j5ge 训练步骤 a、训练VOC07+12数据集 1. 数据集的准备 **本文使用VOC格式进行训练,训练前需要下载好VOC07+12的数据集,解压后放在根目录** 2. py里面的annotation_mode=2,运行voc_annotation. py里面修改model_path以及classes_path

,这两个参数必须要修改。 数据集的准备 **本文使用VOC格式进行训练,训练前需要自己制作好数据集,** 训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。 训练前将图片文件放在VOCdevkit文件夹下的

VOC2007文件夹下的JPEGImages中。 数据集的处理 在完成数据集

常见问题

记录了多少星标和分叉?

bubbliiiing/yolov4-pytorch 有 2,163 个星标和 593 个分叉。

仓库排名是多少?

bubbliiiing/yolov4-pytorch 排名第 8,910。

记录的语言和类别是什么?

bubbliiiing/yolov4-pytorch 有 2,163 个星标,语言为 Python,类别为 Model Development。

哪个仓库排名最接近?

bubbliiiing/yolov4-pytorch 与 fangwei123456/spikingjelly 比较,后者排名第 8,911,有 2,162 个星标。

README

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


目录

  1. 仓库更新 Top News
  2. 相关仓库 Related code
  3. 性能情况 Performance
  4. 实现的内容 Achievement
  5. 所需环境 Environment
  6. 文件下载 Download
  7. 训练步骤 How2train
  8. 预测步骤 How2predict
  9. 评估步骤 How2eval
  10. 参考资料 Reference

Top News

2023-07:新增Seed设定,用于保证每次训练结果一致。

2022-04:支持多GPU训练,新增各个种类目标数量计算,新增heatmap。

2022-03:进行了大幅度的更新,修改了loss组成,使得分类、目标、回归loss的比例合适、支持step、cos学习率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整、新增图片裁剪。
BiliBili视频中的原仓库地址为:https://github.com/bubbliiiing/yolov4-pytorch/tree/bilibili

2021-10:进行了大幅度的更新,增加了大量注释、增加了大量可调整参数、对代码的组成模块进行修改、增加fps、视频预测、批量预测等功能。

相关仓库

模型 路径
YoloV3 https://github.com/bubbliiiing/yolo3-pytorch
Efficientnet-Yolo3 https://github.com/bubbliiiing/efficientnet-yolo3-pytorch
YoloV4 https://github.com/bubbliiiing/yolov4-pytorch
YoloV4-tiny https://github.com/bubbliiiing/yolov4-tiny-pytorch
Mobilenet-Yolov4 https://github.com/bubbliiiing/mobilenet-yolov4-pytorch
YoloV5-V5.0 https://github.com/bubbliiiing/yolov5-pytorch
YoloV5-V6.1 https://github.com/bubbliiiing/yolov5-v6.1-pytorch
YoloX https://github.com/bubbliiiing/yolox-pytorch
YoloV7 https://github.com/bubbliiiing/yolov7-pytorch
YoloV7-tiny https://github.com/bubbliiiing/yolov7-tiny-pytorch

性能情况

训练数据集 权值文件名称 测试数据集 输入图片大小 mAP 0.5:0.95 mAP 0.5
VOC07+12+COCO yolo4_voc_weights.pth VOC-Test07 416x416 - 89.0
COCO-Train2017 yolo4_weights.pth COCO-Val2017 416x416 46.1 70.2

实现的内容

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

所需环境

torch==1.2.0

文件下载

训练所需的yolo4_weights.pth可在百度网盘中下载。
链接: https://pan.baidu.com/s/1oXz13QwLx1lnXct538qL2Q
提取码: 16qc
yolo4_weights.pth是coco数据集的权重。
yolo4_voc_weights.pth是voc数据集的权重。

VOC数据集下载地址如下,里面已经包括了训练集、测试集、验证集(与测试集一样),无需再次划分:
链接: https://pan.baidu.com/s/19Mw2u_df_nBzsC2lg20fQA
提取码: j5ge

训练步骤

a、训练VOC07+12数据集

  1. 数据集的准备
    本文使用VOC格式进行训练,训练前需要下载好VOC07+12的数据集,解压后放在根目录

  2. 数据集的处理
    修改voc_annotation.py里面的annotation_mode=2,运行voc_annotation.py生成根目录下的2007_train.txt和2007_val.txt。

  3. 开始网络训练
    train.py的默认参数用于训练VOC数据集,直接运行train.py即可开始训练。

  4. 训练结果预测
    训练结果预测需要用到两个文件,分别是yolo.py和predict.py。我们首先需要去yolo.py里面修改model_path以及classes_path,这两个参数必须要修改。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

b、训练自己的数据集

  1. 数据集的准备
    本文使用VOC格式进行训练,训练前需要自己制作好数据集,
    训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
    训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

  2. 数据集的处理
    在完成数据集的摆放之后,我们需要利用voc_annotation.py获得训练用的2007_train.txt和2007_val.txt。
    修改voc_annotation.py里面的参数。第一次训练可以仅修改classes_path,classes_path用于指向检测类别所对应的txt。
    训练自己的数据集时,可以自己建立一个cls_classes.txt,里面写自己所需要区分的类别。
    model_data/cls_classes.txt文件内容为:

cat
dog
...

修改voc_annotation.py中的classes_path,使其对应cls_classes.txt,并运行voc_annotation.py。

  1. 开始网络训练
    训练的参数较多,均在train.py中,大家可以在下载库后仔细看注释,其中最重要的部分依然是train.py里的classes_path。
    classes_path用于指向检测类别所对应的txt,这个txt和voc_annotation.py里面的txt一样!训练自己的数据集必须要修改!
    修改完classes_path后就可以运行train.py开始训练了,在训练多个epoch后,权值会生成在logs文件夹中。

  2. 训练结果预测
    训练结果预测需要用到两个文件,分别是yolo.py和predict.py。在yolo.py里面修改model_path以及classes_path。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载yolo_weights.pth,放入model_data,运行predict.py,输入
img/street.jpg
  1. 在predict.py里面进行设置可以进行fps测试和video视频检测。

b、使用自己训练的权重

  1. 按照训练步骤训练。
  2. 在yolo.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类。
_defaults = {
    #--------------------------------------------------------------------------#
    #   使用自己训练好的模型进行预测一定要修改model_path和classes_path!
    #   model_path指向logs文件夹下的权值文件,classes_path指向model_data下的txt
    #   如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改
    #--------------------------------------------------------------------------#
    "model_path"        : 'model_data/yolo_weights.pth',
    "classes_path"      : 'model_data/coco_classes.txt',
    #---------------------------------------------------------------------#
    #   anchors_path代表先验框对应的txt文件,一般不修改。
    #   anchors_mask用于帮助代码找到对应的先验框,一般不修改。
    #---------------------------------------------------------------------#
    "anchors_path"      : 'model_data/yolo_anchors.txt',
    "anchors_mask"      : [[6, 7, 8], [3, 4, 5], [0, 1, 2]],
    #---------------------------------------------------------------------#
    #   输入图片的大小,必须为32的倍数。
    #---------------------------------------------------------------------#
    "input_shape"       : [416, 416],
    #---------------------------------------------------------------------#
    #   只有得分大于置信度的预测框会被保留下来
    #---------------------------------------------------------------------#
    "confidence"        : 0.5,
    #---------------------------------------------------------------------#
    #   非极大抑制所用到的nms_iou大小
    #---------------------------------------------------------------------#
    "nms_iou"           : 0.3,
    #---------------------------------------------------------------------#
    #   该变量用于控制是否使用letterbox_image对输入图像进行不失真的resize,
    #   在多次测试后,发现关闭letterbox_image直接resize的效果更好
    #---------------------------------------------------------------------#
    "letterbox_image"   : False,
    #-------------------------------#
    #   是否使用Cuda
    #   没有GPU可以设置成False
    #-------------------------------#
    "cuda"              : True,
}
  1. 运行predict.py,输入
img/street.jpg
  1. 在predict.py里面进行设置可以进行fps测试和video视频检测。

评估步骤

a、评估VOC07+12的测试集

  1. 本文使用VOC格式进行评估。VOC07+12已经划分好了测试集,无需利用voc_annotation.py生成ImageSets文件夹下的txt。
  2. 在yolo.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
  3. 运行get_map.py即可获得评估结果,评估结果会保存在map_out文件夹中。

b、评估自己的数据集

  1. 本文使用VOC格式进行评估。
  2. 如果在训练前已经运行过voc_annotation.py文件,代码会自动将数据集划分成训练集、验证集和测试集。如果想要修改测试集的比例,可以修改voc_annotation.py文件下的trainval_percent。trainval_percent用于指定(训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1。train_percent用于指定(训练集+验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1。
  3. 利用voc_annotation.py划分测试集后,前往get_map.py文件修改classes_path,classes_path用于指向检测类别所对应的txt,这个txt和训练时的txt一样。评估自己的数据集必须要修改。
  4. 在yolo.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
  5. 运行get_map.py即可获得评估结果,评估结果会保存在map_out文件夹中。

Reference

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

排名相邻
同类项目