• YOLOv5全面解析教程⑥:模型训练流程详解


    e46540ddb8ebf98f4ce48a72f398874e.jpeg


    作者 | Fengwen、BBuf
     

    欢迎Star、试用One-YOLOv5:

    https://github.com/Oneflow-Inc/one-yolov5

    1

    结构项目预览

    77b3d1d56b0ae96e138b93266eb4f8d8.png
     

    2

    安装

    1. git clone https://github.com/Oneflow-Inc/one-yolov5  # clone
    2. cd one-yolov5
    3. pip install -r requirements.txt  # install

    3

    训练

    两种训练方式

    1. 带权重训练 

    $ python path/to/train.py --data coco.yaml --weights yolov5s --img 640

    2. 不带权重训练 

    $ python path/to/train.py --data coco.yaml --weights '' --cfg yolov5s.yaml --img 640

    单GPU训练

    $ python train.py  --data coco.yaml --weights yolov5s --device 0

    多GPU训练

    $ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --weights yolov5s --device 0,1

    注意:
     

    • --nproc_per_node  指定要使用多少GPU。举个例子:在上面多GPU训练指令中它是2。

    • --batch 是总批量大小。它将平均分配给每个GPU。在上面的示例中,每GPU是64/2=32。

    • --cfg : 指定一个包含所有评估参数的配置文件。

    • 上面的代码默认使用GPU 0…(N-1)。使用特定的GPU?可以通过简单在 --device 后跟指定GPU来实现。「案例」,在下面的代码中,我们将使用GPU 2,3。

    $ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --cfg yolov5s.yaml --weights '' --device 2,3

    恢复训练

    如果你的训练进程中断了,你可以这样恢复先前的训练进程。

    1. # 多卡训练.
    2. python -m oneflow.distributed.launch --nproc_per_node 2 train.py --resume

    你也可以通过 --resume 参数指定要恢复的模型路径。

    1. # 记得把 /path/to/your/checkpoint/path  替换为你要恢复训练的模型权重路径
    2. --resume /path/to/your/checkpoint/path

    使用SyncBatchNorm

    SyncBatchNorm可以提高多gpu训练的准确性,但会显著降低训练速度。它仅适用于多GPU DistributedDataParallel 训练。建议最好在每个GPU上的样本数量较小(样本数量<=8)时使用。

    要使用SyncBatchNorm,只需将添加 --sync-bn 参数选项,具体「案例」如下:

  • 相关阅读:
    Vue+Element之SpingBoot学生管理系统
    spring boot 拦截器不拦截静态资源,只拦截controller的方法
    一文解读高压放大器
    LeetCode 环形链表 II(C语言)
    【每日刷题】Day22
    后端跨域问题的处理
    外泌体化合物库
    【C++天梯计划】1.7 哈希算法(hash)
    钉钉消息:jenkins把自动化测试结果发送到钉钉群
    网页JS自动化脚本(五)修改文字元素的内容和大小
  • 原文地址:https://blog.csdn.net/OneFlow_Official/article/details/129434477