YOLO5训练参数解析
下面是一个表格,列出了所有常见参数及其含义:
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
--weights | str | ROOT / "yolov5s.pt" | 初始权重文件路径 |
--cfg | str | "" | 模型配置文件路径 |
--data | str | ROOT / "data/coco128.yaml" | 数据集配置文件路径 |
--hyp | str | ROOT / "data/hyps/hyp.scratch-low.yaml" | 超参数配置文件路径 |
--epochs | int | 100 | 训练总轮数 |
--batch-size | int | 16 | 所有 GPU 上的总批量大小,-1 表示自动批量大小 |
--imgsz , --img , --img-size | int | 640 | 训练和验证图像的大小(像素) |
--rect | store_true | False | 使用矩形训练 |
--resume | nargs="?" | False | 继续最近的训练,如果不指定则从头开始训练 |
--nosave | store_true | False | 仅保存最终检查点 |
--noval | store_true | False | 仅在最后一个轮次验证 |
--noautoanchor | store_true | False | 禁用自动锚点 |
--noplots | store_true | False | 不保存绘图文件 |
--evolve | int | 300 (可选) | 演化超参数的代数 |
--evolve_population | str | ROOT / "data/hyps" | 加载超参数种群的位置 |
--resume_evolve | str | None | 从最后一代恢复演化 |
--bucket | str | "" | gsutil 存储桶 |
--cache | str | ram (可选) | 图像缓存到内存或磁盘 |
--image-weights | store_true | False | 使用加权图像选择进行训练 |
--device | str | "" | CUDA 设备,如 0 或 0,1,2,3 或 cpu |
--multi-scale | store_true | False | 变更图像大小 +/- 50% |
--single-cls | store_true | False | 将多类别数据作为单类别进行训练 |
--optimizer | str | SGD | 优化器选择 (SGD , Adam , AdamW ) |
--sync-bn | store_true | False | 使用 SyncBatchNorm,仅在 DDP 模式下可用 |
--workers | int | 8 | 最大数据加载器工作线程数(在 DDP 模式下每 RANK) |
--project | str | ROOT / "runs/train" | 保存结果的项目路径 |
--name | str | exp | 保存结果的项目名称 |
--exist-ok | store_true | False | 允许存在的项目/名称,不递增 |
--quad | store_true | False | 使用四边形数据加载器 |
--cos-lr | store_true | False | 使用余弦学习率调度器 |
--label-smoothing | float | 0.0 | 标签平滑的 epsilon 值 |
--patience | int | 100 | 提前停止的耐心(没有改进的轮次) |
--freeze | nargs="+" | [0] | 冻结的层(如:backbone=10 ,first3=0 1 2 ) |
--save-period | int | -1 | 每 x 轮保存检查点(如果 < 1 则禁用) |
--seed | int | 0 | 全局训练种子 |
--local_rank | int | -1 | 自动 DDP 多 GPU 参数,不修改 |
--entity | str | None | 实体 |
--upload_dataset | nargs="?" | False | 上传数据集,“val” 选项 |
--bbox_interval | int | -1 | 设置边界框图像记录间隔 |
--artifact_alias | str | latest | 使用数据集工件的版本 |
以下是几个 train.py
命令的示例,并附上解释:
1. 基本训练命令
python train.py --weights yolov5s.pt --cfg yolov5s.yaml --data coco128.yaml --epochs 50 --batch-size 16 --imgsz 640
解释:使用预训练权重 yolov5s.pt
训练模型,配置文件为 yolov5s.yaml
,数据集为 coco128.yaml
,训练轮数为 50,批量大小为 16,图像尺寸为 640x640。
要启用提前停止(Early Stopping),可以使用 --patience
参数。提前停止可以在训练过程中监控验证集上的性能指标,如果在指定的轮次内没有看到改进,训练将提前终止,从而防止过拟合。
2.提前停止的训练命令示例
python train.py --weights yolov5s.pt --data coco128.yaml --epochs 100 --batch-size 16 --imgsz 640 --patience 10
解释:
--weights yolov5s.pt
:使用预训练权重yolov5s.pt
作为初始权重。--data coco128.yaml
:指定数据集配置文件。--epochs 100
:设置训练的总轮次为 100。--batch-size 16
:设置批量大小为 16。--imgsz 640
:设置训练和验证图像的尺寸为 640x640。--patience 10
:启用提前停止机制,如果在 10 个轮次内没有看到验证集上的性能改进,则停止训练。
注意:YOLOv5 的训练脚本默认会进行这种监控,所以使用 --patience
参数时,你通常不需要进行额外的设置。