YOLOv8训练扫描训练集后冻结,GPU/CPU均出现该问题
YOLOv8训练扫描数据集后冻结的解决方案
问题情况
- 启动YOLOv8 GPU训练,完成训练集图像扫描后程序冻结
- 切换至CPU运行,问题仍存在
- 程序停止时的输出日志(已翻译为中文):
Ultralytics YOLOv8.1.6 🚀 Python-3.11.7 torch-2.1.2+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 SUPER, 12281MiB) engine\trainer: 任务=检测, 模式=训练, 模型=yolov8s.yaml, 数据=path_n_class.yaml, 轮次=300, 时间限制=None, 早停耐心值=50, 批次大小=16, 图像尺寸=640, 保存模型=True, 保存周期=-1, 数据集缓存=False, 设备=0, 数据加载线程数=8, 项目名称=None, 训练任务名称=train, 覆盖已有任务=False, 使用预训练权重=True, 优化器=自动选择, 详细日志输出=True, 随机种子=0, 确定性训练=True, 单类别训练=False, 矩形训练=False, 余弦学习率调度=False, 关闭马赛克增强轮次=10, 续训=False, 自动混合精度训练=True, 训练数据比例=1.0, 性能分析=False, 冻结层=None, 多尺度训练=False, 掩码重叠=True, 掩码比例=4, Dropout=0.0, 验证=True, 验证集划分=val, 保存JSON格式结果=False, 保存混合模型=False, 检测置信度阈值=None, IOU阈值=0.7, 最大检测数=300, 半精度训练=False, 使用DNN后端=False, 生成训练曲线=True, 数据源=None, 视频帧步长=1, 流缓冲区=False, 可视化模型=False, 测试增强=False, 类别无关NMS=False, 指定训练类别=None, 视网膜掩码=False, 嵌入提取=None, 显示检测结果=False, 保存视频帧=False, 保存TXT格式检测结果=False, 保存置信度=False, 保存检测裁剪图=False, 显示标签=True, 显示置信度=True, 显示检测框=True, 框线宽度=None, 导出格式=torchscript, Keras格式导出=False, 模型优化=False, INT8量化=False, 动态导出=False, 模型简化=False, ONNX opset版本=None, 工作区大小=4, 禁用NMS=False, 初始学习率=0.01, 最终学习率=0.01, 动量=0.937, 权重衰减=0.0005, 热身轮次=3.0, 热身动量=0.8, 热身偏置学习率=0.1, 框损失权重=7.5, 分类损失权重=0.5, DFL损失权重=1.5, 姿态损失权重=12.0, 关键点目标损失权重=1.0, 标签平滑=0.0, 有效批次大小=64, HSV色调扰动=0.015, HSV饱和度扰动=0.7, HSV明度扰动=0.4, 旋转角度=0.0, 平移幅度=0.1, 缩放幅度=0.5, 剪切角度=0.0, 透视变换=0.0, 上下翻转概率=0.0, 左右翻转概率=0.5, 马赛克增强概率=1.0, Mixup增强概率=0.0, Copy-Paste增强概率=0.0, 自动增强策略=randaugment, 随机擦除概率=0.4, 裁剪比例=1.0, 配置文件=None, 跟踪器配置=botsort.yaml, 结果保存目录=runs\detect\train 覆盖model.yaml中的类别数nc=80为nc=1 输入来源 层数 参数数量 模块名称 模块参数 0 -1 1 928 ultralytics.nn.modules.conv.Conv [3, 32, 3, 2] 1 -1 1 18560 ultralytics.nn.modules.conv.Conv [32, 64, 3, 2] 2 -1 1 29056 ultralytics.nn.modules.block.C2f [64, 64, 1, True] 3 -1 1 73984 ultralytics.nn.modules.conv.Conv [64, 128, 3, 2] 4 -1 2 197632 ultralytics.nn.modules.block.C2f [128, 128, 2, True] 5 -1 1 295424 ultralytics.nn.modules.conv.Conv [128, 256, 3, 2] 6 -1 2 788480 ultralytics.nn.modules.block.C2f [256, 256, 2, True] 7 -1 1 1180672 ultralytics.nn.modules.conv.Conv [256, 512, 3, 2] 8 -1 1 1838080 ultralytics.nn.modules.block.C2f [512, 512, 1, True] 9 -1 1 656896 ultralytics.nn.modules.block.SPPF [512, 512, 5] 10 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] 11 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1] 12 -1 1 591360 ultralytics.nn.modules.block.C2f [768, 256, 1] 13 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] 14 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1] 15 -1 1 148224 ultralytics.nn.modules.block.C2f [384, 128, 1] 16 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2] 17 [-1, 12] 1 0 ultralytics.nn.modules.conv.Concat [1] 18 -1 1 493056 ultralytics.nn.modules.block.C2f [384, 256, 1] 19 -1 1 590336 ultralytics.nn.modules.conv.Conv [256, 256, 3, 2] 20 [-1, 9] 1 0 ultralytics.nn.modules.conv.Concat [1] 21 -1 1 1969152 ultralytics.nn.modules.block.C2f [768, 512, 1] 22 [15, 18, 21] 1 2116435 ultralytics.nn.modules.head.Detect [1, [128, 256, 512]] YOLOv8s 模型摘要: 225层, 11135987个参数, 11135971个梯度, 28.6 GFLOPs 冻结层'model.22.dfl.conv.weight' AMP: 正在使用YOLOv8n进行自动混合精度(AMP)兼容性检查... 下载https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n.pt到'yolov8n.pt'... 100%|██████████| 6.23M/6.23M [00:00<00:00, 7.51MB/s] AMP: 检查通过 ✅ 训练: 扫描C:\Users\lichs\Desktop\pj\8nano100\training\datasets\data\labels\train.cache... 762张图像, 204张背景图, 0张损坏: 100%|██████████| 762/762 [00:00<?, ?it/s]
解决步骤
- 调整数据加载线程数:将
workers=8改为workers=0或workers=2,避免数据加载阶段出现死锁 - 启用数据集缓存:添加
cache=True参数,将数据集预加载至内存,跳过重复扫描流程 - 验证数据集格式:手动检查标签文件,确保每行格式为
类别ID x_center y_center width height,且坐标为0-1之间的归一化值 - 降低批次大小:将
batch=16调整为batch=8或batch=4,减少内存占用压力 - 关闭自动混合精度:添加
amp=False参数,排除精度转换导致的冻结问题 - 更新依赖库:升级Ultralytics到最新版本,同时确认PyTorch与CUDA版本匹配
内容的提问来源于stack exchange,提问作者Eric Heitz
相关产品推荐
相关产品推荐

