coco128 训练

1 环境准备

Pytorch学习 -优快云博客

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大类别为:

    1. person (17.8%)

    2. car (9.2%)

    3. chair (7.1%)

    4. bottle (5.3%)

    5. 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
    ### 使用 COCO128 数据集进行 YOLOv11 模型训练 为了使用 COCO128 数据集完成模型训练,以下是详细的说明: #### 准备工作 COCO128 是一个简化版的小型数据集,通常作为入门级教程的一部分提供给开发者。它包含了来自 COCO train2017 的前 128 张图像,并将其分为训练和验证两部分[^2]。 #### 配置文件设置 在开始之前,需要配置 `coco128.yaml` 文件来指定以下几个关键参数: 1. **训练图像目录路径**:指向存储训练图像的位置。 2. **验证图像路径**:与训练图像相同或不同,具体取决于实验设计。 3. **类别数量**:定义数据集中存在的对象类别数目。 4. **类别名称列表**:列出所有可能的目标标签名。 此 YAML 文件的作用在于向框架清晰传达数据结构及其元信息。 #### 开始训练流程 当一切准备就绪后,可以通过命令行启动训练脚本。假设已经安装好必要的依赖库并下载了预处理好的 COCO128 数据集,则执行如下指令即可触发训练过程: ```bash python train.py --img 640 --batch 16 --epochs 50 --data coco128.yaml --cfg yolov11.cfg --weights '' --name yolo_v11_results ``` 上述代码片段解释如下: - `--img`: 设置输入图片尺寸大小,默认为 640×640 像素; - `--batch`: 批次大小设定值设为 16; - `--epochs`: 总共运行 50 轮 epoch 来优化权重矩阵; - `--data`: 提供数据描述符即前面提到的 yaml 格式的配置文档地址; - `--cfg`: 自定义网络架构定义文件路径; - `--weights`: 初始化时加载现有 checkpoint 或者留空表示随机初始化; - `--name`: 输出日志保存子文件夹命名规则[^1]。 #### 查看训练成果 随着训练进程推进,在终端窗口会实时更新当前批次的各项统计数值比如总损耗函数值以及分类准确性等等。最终所有的历史记录会被汇总存入名为 `results.csv` 的 CSV 文档里,其中涵盖了每一轮迭代后的核心评估指标变化趋势图样,例如平均精度均值(AP),召回率(recall)等重要参考依据[^3]。 通过以上步骤操作,便能够顺利完成基于 COCO128 小样本集合上的目标检测算法原型开发任务。
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值