1 环境准备
2 数据集
2.1 配置数据集
打开YOLOv10项目,
找到 yolov10\ultralytics\cfg\datasets\coco128.yaml:
数据集配置文件 数据集可自动下载也可先下载好放到指定目录然后配置好下面的路径
2.1.1 路径配置
相对路径/或绝对路径 建议相对路径

如果自定义数据集需要修改此文件或者copy一份改写
2.1.2 分类配置
80分类

2.2 数据结构解剖

-
图像分布:128张图片平均包含7.26个标注实例
-
类别统计:实际出现32个类别(占80类的40%),前5大类别为:
-
person (17.8%)
-
car (9.2%)
-
chair (7.1%)
-
bottle (5.3%)
-
dining table (4.9%)
-
2.3 标注格式
原始COCO JSON转YOLO TXT格式示例:如需要
# 转换前(COCO JSON)
{"bbox": [183,24,94,120], "category_id": 18}
# 转换后(YOLO TXT)
18 0.35 0.42 0.12 0.15 # 类别ID 中心x 中心y 宽度 高度

2. 训练
2.1 训练参数
根据硬件调整 epochs/batch/device参数
train
yolo detect train data=coco128.yaml model=yolov10n.yaml epochs=100 batch=32 imgsz=640 device=0(GPU设备修改)
或
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, batch=32,imgsz=640)
2.2 超参数优化方案
# hyp.scratch.yaml 关键参数调整
lr0: 0.01 → 0.005 # 降低初始学习率
warmup_epochs: 3 → 5 # 延长热身期
mixup: 0.0 → 0.1 # 启用混合增强
2.3 数据增强策略
# dataset.yaml 增强配置
augmentations:
- hsv_h: 0.015 # 色相增强
- hsv_s: 0.7 # 饱和度增强
- flipud: 0.5 # 垂直翻转概率
- mosaic: 1.0 # 马赛克增强
3. 训练过程
epochs= 100 通常是个经验值
epochs参数指模型遍历整个训练数据集的轮次数,其范围需根据任务复杂度、数据集规模及资源条件动态调整。
实验场景:简单任务或小数据集可能只需50-150轮;复杂任务(如高精度检测)可能需要500-1000+轮.
YOLOv5默认训练轮数为300;YOLOv8/v9/v10参考值通常为100-500。
3.1 epochs 调整依据
| 因素 | 建议调整方向 | 依据说明 |
|---|---|---|
| 数据集规模 | 数据量少 → 降低轮数(如100-200) | 避免过拟合 |
| 任务复杂度 | 小目标检测/密集场景 → 增加轮数 | 需更充分学习特征 |
| 资源限制 | 显存不足 → 减小批次并增加轮数 | 平衡训练稳定性与收敛性 |
| 早停机制 | 验证集性能饱和时提前终止 | 防止无效训练 |
3.2 过程日志
yolov10) PS F:\ai\yolov\v10\yolov10> & C:/Users/qiu-t/anaconda3/envs/yolov10/python.exe f:/ai/yolov/v10/yolov10/coco_128.py
New https://pypi.org/project/ultralytics/8.3.158 available 😃 Update with 'pip install -U ultralytics'
Ultralytics YOLOv8.1.34 🚀 Python-3.12.11 torch-2.7.1+cu128 CUDA:0 (NVIDIA GeForce RTX 5060 Laptop GPU, 8151MiB)
engine\trainer: task=detect, mode=train, model=yolov10n.yaml, data=coco128.yaml, epochs=100, time=None, patience=100, batch=32, imgsz=640, save=True, save_period=-1, val_period=1, cache=False, device=None, workers=8, project=None, name=train6, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=f:\ai\yolov\v10\yolov10\runs\detect\train6
from n params module arguments
0 -1 1 464 ultralytics.nn.modules.conv.Conv [3, 16, 3, 2]
1 -1 1 4672 ultralytics.nn.modules.conv.Conv [16, 32, 3, 2]
2 -1 1 7360 ultralytics.nn.modules.block.C2f [32, 32, 1, True]
3 -1 1 18560 ultralytics.nn.modules.conv.Conv [32, 64, 3, 2]
4 -1 2 49664 ultralytics.nn.modules.block.C2f [64, 64, 2, True]
5 -1 1 9856 ultralytics.nn.modules.block.SCDown [64, 128, 3, 2]
6 -1 2 197632 ultralytics.nn.modules.block.C2f [128, 128, 2, True]
7 -1 1 36096 ultralytics.nn.modules.block.SCDown [128, 256, 3, 2]
8 -1 1 460288 ultralytics.nn.modules.block.C2f [256, 256, 1, True]
9 -1 1 164608 ultralytics.nn.modules.block.SPPF [256, 256, 5]
10 -1 1 249728 ultralytics.nn.modules.block.PSA [256, 256]
11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
12 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1]
13 -1 1 148224 ultralytics.nn.modules.block.C2f [384, 128, 1]
14 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
15 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1]
16 -1 1 37248 ultralytics.nn.modules.block.C2f [192, 64, 1]
17 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2]
18 [-1, 13] 1 0 ultralytics.nn.modules.conv.Concat [1]
19 -1 1 123648 ultralytics.nn.modules.block.C2f [192, 128, 1]
20 -1 1 18048 ultralytics.nn.modules.block.SCDown [128, 128, 3, 2]
21 [-1, 10] 1 0 ultralytics.nn.modules.conv.Concat [1]
22 -1 1 282624 ultralytics.nn.modules.block.C2fCIB [384, 256, 1, True, True]
23 [16, 19, 22] 1 929808 ultralytics.nn.modules.head.v10Detect [80, [64, 128, 256]]
YOLOv10n summary: 385 layers, 2775520 parameters, 2775504 gradients, 8.7 GFLOPs
Freezing layer 'model.23.dfl.conv.weight'
AMP: running Automatic Mixed Precision (AMP) checks with YOLOv8n...
f:\ai\yolov\v10\yolov10\ultralytics\utils\checks.py:641: FutureWarning: `torch.cuda.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cuda', args...)` instead.
with torch.cuda.amp.autocast(True):
AMP: checks passed ✅
f:\ai\yolov\v10\yolov10\ultralytics\engine\trainer.py:276: FutureWarning: `torch.cuda.amp.GradScaler(args...)` is deprecated. Please use `torch.amp.GradScaler('cuda', args...)` instead.
self.scaler = torch.cuda.amp.GradScaler(enabled=self.amp)
train: Scanning F:\ai\yolov\v10\datasets\coco128\labels\train2017.cache... 126 images, 2 backgrounds, 0 corrupt
val: Scanning F:\ai\yolov\v10\datasets\coco128\labels\train2017.cache... 126 images, 2 backgrounds, 0 corrupt:
Plotting labels to f:\ai\yolov\v10\yolov10\runs\detect\train6\labels.jpg...
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically...
optimizer: AdamW(lr=0.000119, momentum=0.9) with parameter groups 95 weight(decay=0.0), 108 weight(decay=0.0005), 107 bias(decay=0.0)
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to f:\ai\yolov\v10\yolov10\runs\detect\train6
Starting training for 100 epochs...
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
1/100 6.73G 3.5 5.731 4.271 3.308 7.837 4.339 536 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.78e-07 0.000805 7.04e-07 2.76e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
2/100 6.65G 3.605 5.761 4.263 3.433 8.211 4.346 364 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.6e-07 0.000805 1.24e-06 3.95e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
3/100 7.08G 3.537 5.722 4.25 3.357 7.648 4.332 427 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.59e-07 0.000805 9.74e-07 3.26e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
4/100 6.73G 3.572 5.705 4.269 3.393 7.635 4.367 435 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.4e-07 0.000805 9.34e-07 3.5e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
5/100 6.98G 3.558 5.717 4.249 3.356 7.72 4.327 499 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.4e-07 0.000805 1.08e-06 3.56e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
6/100 6.83G 3.654 5.714 4.261 3.457 7.791 4.325 416 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.4e-07 0.000805 1.02e-06 3.75e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
7/100 6.73G 3.604 5.726 4.237 3.39 7.656 4.307 561 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.4e-07 0.000805 9.16e-07 3.45e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
8/100 7.08G 3.567 5.734 4.231 3.418 7.774 4.283 535 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.59e-07 0.000805 1.31e-06 4.26e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Size
9/100 6.73G 3.594 5.73 4.228 3.452 7.902 4.284 353 640:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 2/2
all 128 929 7.76e-07 0.000805 1.34e-06 4.3e-07
Epoch GPU_mem box_om cls_om dfl_om box_oo cls_oo dfl_oo Instances Siz

最低0.47元/天 解锁文章
1957

被折叠的 条评论
为什么被折叠?



