物体检测-系列教程11:YOLOV5 源码解析1 (基本概述、目录结构介绍、训练命令行参数)

计算机视觉 全教程 目录

😎😎😎物体检测-系列教程 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传
点我下载源码

1、基本概述

在这里插入图片描述

  1. YOLOv5没有一篇对应的论文,是一个对v4更好的实现
  2. v5版本是一个在github更新的基于工程项目的实现
  3. 基本上和v4没有差异,只不过在整个项目上做出了更好的实现效果
  4. 主要基于github的文档介绍来讲解yolov5
  5. 按照根据需求文档按照即可,建议版本,python=3.8、torch=1.8.1、torchvision=0.9.1,安装的时候指定一下清华源关掉梯子即可(对安装不熟悉参考这篇文章):
pip install -r requirements.txt  # install
  1. github源码中有多个模型可以选择,分别为5n、5s、5m、5l、5x等模型,源码中运行的是coco数据集,但是这个coco数据集实在太大了,实际上yolov5的泛化能力非常好,直接跑自己的项目就好了。
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml  --batch-size 128
                                                                 yolov5s                    64
                                                                 yolov5m                    40
                                                                 yolov5l                    24
                                                                 yolov5x                    16
  1. yolov5的代码写得非常非常好,对比v3你会觉得v3比较啰嗦,v5的代码是一个如此庞大的工程,但是配置文件却是如此简洁,每个人都需要对一个很大很好的开源项目从前到后一行一行代码去debug,因为这是你从初级程序员进阶的必经之路,非常建议选择yolov5

2、yolov5目录结构

yolov5是一个相对比较庞大的工程,这部分主要介绍一级目录所有的文件的意义:

2.1 文件夹/包:

.github:存放github相关配置的,这个不用管
data:主要是构建数据集的配置文件,还有一些官方的测试文件,当然如果你需要训练自己的数据集,那就需要修改部分配置文件了
model:主要是构建网络的函数代码文件、配置文本文件
runs:这个真的是最重要的文件夹了,我们主要跑的就是三个脚本,分别是训练、测试、预测,这三个分别一个文件夹,每个文件夹又都会记录出每次运行该脚本的结果
utils:主要是功能函数的代码文件,比如画图、计算损失等
wandb:
weights:

2.2 .py文件:

train.py:训练脚本,将通用模型训练自己任务的模型
test.py:测试脚本,读取自己训练的模型,对当前的数据进行测试
detect.py:检测脚本,读取自己训练的模型,实时检测当前视频帧,并显示实时的视频和标记的框、置信度、
hubconf.py:

2.3 其他不重要的文件:

.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENCE:证书
README.MD
requiresments.txt
tutorial.ipynb
yolov5s.pt:coco数据集训练出来的5s模型

3、train.py参数解读

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
    parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')
    parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=300)
    parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')
    parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')
    parser.add_argument('--rect', action='store_true', help='rectangular training')
    parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')
    parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
    parser.add_argument('--notest', action='store_true', help='only test final epoch')
    parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')
    parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')
    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
    parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')
    parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
    parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
    parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
    parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')
    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
    parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')
    parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')
    parser.add_argument('--project', default='runs/train', help='save to project/name')
    parser.add_argument('--entity', default=None, help='W&B entity')
    parser.add_argument('--name', default='exp', help='save to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--quad', action='store_true', help='quad dataloader')
    parser.add_argument('--linear-lr', action='store_true', help='linear LR')
    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
    parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')
    parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')
    parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')
    parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')
    opt = parser.parse_args()
  1. --weights: 5n、5s、5m、5l、5x中选择一个作为预训练模型,初始模型路径,默认是’yolov5s.pt’。
  2. --cfg: 模型配置文件(.yaml)的路径。
  3. --data: 数据集配置文件(.yaml)的路径。默认是data/coco128.yaml
  4. --hyp: 超参数配置文件(.yaml)的路径。默认是data/hyp.scratch.yaml
  5. --epochs: 训练的次数
  6. --batch-size: 批次
  7. --img-size: 训练和测试的图像尺寸。可以指定一个或两个尺寸。
  8. --rect: 是否采用矩形训练,这可以提高训练速度和效率。
  9. --resume: 是否恢复最近的训练。
  10. --nosave: 只保存最终的检查点。
  11. --notest: 只在最后一个epoch进行测试。
  12. --noautoanchor: 禁用自动锚点检查。
  13. --evolve: 进化超参数。
  14. --bucket: Google Cloud Storage的桶名。
  15. --cache-images: 缓存图像以加快训练速度。
  16. --image-weights: 使用加权图像选择进行训练。
  17. --device: 训练使用的CUDA设备,例如00,1,2,3cpu
  18. --multi-scale: 图像尺寸变化±50%。
  19. --single-cls: 将多类数据作为单一类别训练。
  20. --adam: 使用Adam优化器。
  21. --sync-bn: 使用同步批量归一化,仅在分布式数据并行(DDP)模式下可用。
  22. --local_rank: DDP参数,通常不需要手动修改。
  23. --workers: 数据加载器的最大工作进程数。
  24. --project: 训练结果保存的项目路径。
  25. --entity: W&B(Weights & Biases)的实体。
  26. --name: 保存的项目/名称。
  27. --exist-ok: 如果项目/名称已存在,则不增加编号。
  28. --quad: 使用四边形数据加载器。
  29. --linear-lr: 使用线性学习率调整。
  30. --label-smoothing: 标签平滑的epsilon值。
  31. --upload_dataset: 作为W&B(Weights & Biases)工件表上传数据集。
  32. --bbox_interval: 设置W&B日志记录的边界框图像间隔。
  33. --save_period: 每"save_period"轮日志记录一次模型。
  34. --artifact_alias: 使用的数据集工件的版本。
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器学习杨卓越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值