学习无为 2025-01-20 17:01 采纳率: 50%
浏览 14
已结题

用yolo训练东北大学数据集且不用预训练参数精确度为 0.00133,正常吗

用yolo训练东北大学数据集且不用预训练参数,保证数据格式正确并且已经已经训练了十几轮但是精确度为 0.002左右,正常吗?


```bash
 
 

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     23/150     0.375G       4.03      3.773      3.709         13        224: 100%|██████████| 158/158 [00:10<00:00, 15.58it/s]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 12/12 [00:00<00:00, 14.07it/s]
                   all        180        412    0.00395    0.00433    0.00347    0.00145
  0%|          | 0/158 [00:00<?, ?it/s]
      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     24/150     0.375G      4.003      3.775      3.706         19        224: 100%|██████████| 158/158 [00:10<00:00, 15.47it/s]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 12/12 [00:00<00:00, 14.08it/s]
                   all        180        412      0.002      0.297    0.00349    0.00142
  0%|          | 0/158 [00:00<?, ?it/s]
      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
     25/150     0.375G      3.982      3.757      3.705         20        224: 100%|██████████| 158/158 [00:10<00:00, 15.33it/s]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 12/12 [00:00<00:00, 14.11it/s]
                   all        180        412    0.00195        0.3    0.00317    0.00136

    


```

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2025-01-20 17:05
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    从你提供的训练日志来看,YOLO模型在没有使用预训练权重的情况下训练东北大学数据集时,精度确实非常低(例如mAP50和mAP50-95都接近于零)。这种情况下,有几种可能的原因和解决方法:

    1. 数据集问题

      • 确保数据集标注正确,没有错误。
      • 检查数据集是否平衡,即每个类别的样本数量是否均匀分布。
    2. 模型配置问题

      • 检查YOLO的配置文件,确保所有参数设置正确,包括输入尺寸、输出通道数等。
      • 确认模型结构与数据集匹配,如类别数是否一致。
    3. 训练策略问题

      • 学习率调整不当:尝试降低学习率或采用学习率衰减策略。
      • 数据增强:适当的数据增强可以提高模型泛化能力。
      • 验证集划分:确保验证集划分合理,以准确评估模型性能。
    4. 优化器选择

      • 除了默认的优化器(如SGD),尝试其他优化器(如Adam)。
    5. 预训练权重

      • 虽然你提到不使用预训练权重,但有时预训练权重可以帮助模型更快收敛。如果可能,尝试加载预训练权重,即使只加载一部分。

    解决方案

    1. 检查数据集

      • 确保数据集标注正确,没有错误。
      • 检查数据集是否平衡,即每个类别的样本数量是否均匀分布。
    2. 调整模型配置

      • 确认模型配置文件中类别数正确。
      • 尝试不同的输入尺寸和输出通道数。
    3. 调整训练策略

      • 降低学习率,尝试 0.001 或更低。
      • 使用学习率衰减策略,例如每若干个epoch后将学习率减半。
      • 应用数据增强技术,如随机裁剪、旋转、亮度调整等。
      • 确保验证集划分合理,以准确评估模型性能。
    4. 尝试不同优化器

      • 替换优化器,例如使用Adam优化器。
    5. 使用预训练权重

      • 即使只加载部分预训练权重,也可以帮助模型更快收敛。

    示例代码调整

    假设你使用的是YOLOv5,以下是一些可能的代码调整示例:

    降低学习率

    # 在训练脚本中调整学习率
    optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9, weight_decay=0.0005)
    

    应用数据增强

    from albumentations import Compose, RandomBrightnessContrast, ShiftScaleRotate
    
    # 定义数据增强
    transform = Compose([
        RandomBrightnessContrast(p=0.5),
        ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.1, rotate_limit=45, p=0.5)
    ])
    
    # 在数据加载器中应用数据增强
    dataset = CustomDataset(transform=transform)
    

    使用学习率衰减

    from torch.optim.lr_scheduler import ReduceLROnPlateau
    
    scheduler = ReduceLROnPlateau(optimizer, mode='min', factor=0.5, patience=3)
    
    # 在训练循环中调用
    for epoch in range(num_epochs):
        # 训练代码...
        scheduler.step(val_loss)  # val_loss 是验证损失
    

    通过上述调整,可以期望模型性能有所提升。如果问题仍然存在,建议进一步检查数据集和模型配置的具体细节。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 1月20日