双泉东 2024-06-11 16:13 采纳率: 0%
浏览 13

yolov5训练自己的数据集但推理报错

img

用yolov5训练自己的数据集,口罩检测,训练结果保存在data/train/exp/下面,然而执行detect.py脚本报了如下错误,可能是什么原因呢?git clone 最新的代码难道有bug?


python detect.py --weights runs/train/exp8/weights/last.pt /work/kouzhao/images/train2017/13_Interview_Interview_Sequences_13_809.jpg 
detect: weights=['runs/train/exp8/weights/last.pt', '/work/kouzhao/images/train2017/13_Interview_Interview_Sequences_13_809.jpg'], source=data/images, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1
YOLOv5 🚀 v7.0-318-gc0380fd8 Python-3.10.13 torch-2.2.1 CUDA:0 (NVIDIA GeForce GTX 1060 6GB, 6073MiB)

Fusing layers... 
YOLOv5s summary: 157 layers, 7015519 parameters, 0 gradients, 15.8 GFLOPs
Traceback (most recent call last):
  File "/work/yolov5/detect.py", line 312, in <module>
    main(opt)
  File "/work/yolov5/detect.py", line 307, in main
    run(**vars(opt))
  File "/opt/conda/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/work/yolov5/detect.py", line 115, in run
    model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half)
  File "/work/yolov5/models/common.py", line 467, in __init__
    model = attempt_load(weights if isinstance(weights, list) else w, device=device, inplace=True, fuse=fuse)
  File "/work/yolov5/models/experimental.py", line 98, in attempt_load
    ckpt = torch.load(attempt_download(w), map_location="cpu")  # load
  File "/opt/conda/lib/python3.10/site-packages/torch/serialization.py", line 1040, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "/opt/conda/lib/python3.10/site-packages/torch/serialization.py", line 1258, in _legacy_load
    magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, '\xff'.
  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-06-11 16:18
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的错误信息和描述,这个问题通常与以下几个方面有关:

    1. 权重文件损坏last.pt文件可能在保存或传输过程中损坏,导致无法正常加载。您可以尝试重新下载或复制该文件。

    2. 版本不兼容:确保您使用的YOLOv5代码库版本与训练时使用的版本一致。如果代码库有更新,可能需要对权重文件进行相应的调整。

    3. CUDA和PyTorch版本:确认您的CUDA和PyTorch版本与权重文件兼容。如果版本不匹配,可能会导致加载错误。

    4. 文件路径问题:确保文件路径正确无误,并且权重文件具有正确的权限设置,以便程序可以访问。

    5. 反序列化错误_pickle.UnpicklingError: invalid load key, '\xff' 错误表明在尝试反序列化权重文件时遇到了问题。这可能是因为文件损坏或者序列化/反序列化过程中使用了不兼容的协议版本。

    解决步骤:

    • 首先,尝试重新生成或获取一个未损坏的权重文件。
    • 确保您的YOLOv5代码库是最新的,或者与训练权重时使用的版本相同。
    • 检查您的CUDA和PyTorch版本是否与权重文件兼容。如果不兼容,考虑升级或降级相应的软件。
    • 尝试在命令行中使用torch.load('path_to_your_file.pt', map_location='cpu')来手动加载权重文件,看是否能够成功加载,这可以帮助确定问题是否出在文件本身。
    • 如果手动加载成功,但程序中仍然报错,可能需要检查detect.py脚本中权重加载的相关代码。

    代码实现(示例):

    import torch
    
    # 尝试手动加载权重文件
    try:
        model_weights = torch.load('runs/train/exp8/weights/last.pt', map_location='cpu')
        print("权重文件加载成功")
    except Exception as e:
        print(f"加载权重文件时出错: {e}")
    

    参考资料:

    如果上述步骤无法解决问题,您可能需要更详细的错误信息或日志来进一步诊断问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月11日

悬赏问题

  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题
  • ¥15 使用dify通过OpenAI 的API keys添加OpenAI模型时报了“Connection Error”错误