在这里插入图片描述

问题描述
在使用ultralytics库训练YOLO模型时,遇到一个非常奇怪的问题:训练过程中的验证损失(loss)出现了NaN,而验证的评价指标如mAP50却能正常计算(有时mAP都也为0)。经过深入研究发现,这个问题和显卡有关。
训练时在控制台打印的结果显示,训练集有正常显示loss,到验证时出现指标为0:
在这里插入图片描述

解决方案
关闭显卡AMP(Automatic Mixed Precision, 自动混合精度)即可

在 YOLOv8 训练时关闭 AMP(Automatic Mixed Precision,自动混合精度),可以通过以下方法实现:


方法 1:在 train() 时设置 amp=False

在调用 Ultralytics YOLOv8 的训练函数时,直接传入 amp=False 参数:

from ultralytics import YOLO

# 加载模型
model = YOLO("yolov8n.pt")  # 或 yolov8n.yaml

# 训练(关闭 AMP)
results = model.train(
    data="coco128.yaml",
    epochs=100,
    imgsz=640,
    batch=16,
    amp=False,  # 禁用自动混合精度
)

方法 2:修改 train.pydefault.yaml 配置文件

如果你使用的是 train.py 或自定义的 YAML 配置文件(如 default.yaml),可以添加或修改:

# default.yaml
amp: False  # 关闭 AMP

方法 3:通过命令行参数关闭 AMP

如果你使用 CLI 命令训练,可以添加 amp=False

yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 amp=False

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐