关于小土堆目标检测YOLOv5的一些报错

内容来自B站UP主:我是土堆的个人空间-我是土堆个人主页-哔哩哔哩视频

视频链接:如何利用 YOLOv5 进行预测(一)_哔哩哔哩_bilibili

报错1,如下图所示:

解决办法:

找到models/experimental.py文件

修改第118行为:

python 复制代码
ckpt = torch.load(w, map_location=map_location, weights_only=False)

报错原因:

这个错误是因为 PyTorch 从 2.6 版本开始,加强了 torch.load 函数的安全机制,将默认参数从 weights_only=False 改为了 weights_only=True。weights_only=True 会严格限制可加载的对象类型,以避免执行模型文件中可能隐含的恶意代码。使用的 YOLOv5 v5.0 在保存模型时包含了不被新机制允许的自定义 Python 类 models.yolo.Model,从而触发了加载错误。

报错2,如下图所示:

解决办法:

  1. 找到model/common.py
  2. 在文件的任意位置(通常放在 SPP 类附近)添加以下代码:
python 复制代码
import warnings
import torch
import torch.nn as nn

class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer
    def __init__(self, c1, c2, k=5):
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)

    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')
            y1 = self.m(x)
            y2 = self.m(y1)
            y3 = self.m(y2)
            return self.cv2(torch.cat([x, y1, y2, y3], 1))

报错原因:

遇到的 AttributeError: Can't get attribute 'SPPF' 错误,是因为你使用的 YOLOv5 代码库版本(v5.0)较老,它所包含的models/common.py中没有定义新版本 YOLO 模型(如 v6.0+)中使用的 SPPF 模块。你尝试加载的权重文件很可能是用新版 YOLOv5 训练的,其中包含了 SPPF 层,所以加载失败。

报错3,如下图所示:

RuntimeError: The size of tensor a (80) must match the size of tensor b (56) at non-singleton dimension 3

解决办法:

手动下载权重文件,下载地址:YOLOV5的权重文件下载地址

通过网盘分享的文件:YOLOv5小土堆权重文件

链接: https://pan.baidu.com/s/1nkmEieO3T_5vB-IIh1DE2w?pwd=tcbe 提取码: tcbe

手动下载完成后放到detect.py的同级目录下后,重新运行即可

报错原因:

这个错误是张量维度不匹配,在 YOLO 的检测头(Detect 层)里,anchor_grid 的形状与模型预测的特征图尺寸不一致。常见原因是:训练时使用的输入图片尺寸(例如 640×640)与当前运行 detect.py 时的输入尺寸不一致,导致特征图缩放比例变化,Anchor 的个数无法对齐。很可能当前使用的权重文件(比如 yolov5s.pt)是用较新版本(v6.0+)训练的,而你的代码是 v5.0。两个版本间的 Anchor 生成逻辑有所不同,即使输入尺寸相同,仍可能触发维度不匹配。

报错4,如下图所示:

AssertionError: Image Not Found C:\Users\demo\Desktop\中文路径\yolov5-5.0\yolov5-5.0\data\images\bus.jpg

解决方法:

保证项目的路径中没有中文字符即可。

报错原因:

文件找不到的问题确实很常见。这个报错 AssertionError: Image Not Found ... 核心意思是 YOLOv5 程序没能找到 bus.jpg 这张图。其实文件是有的,读者发现好像只要路径中没有中文字符就可以解决了

结束:

完成上述步骤之后即可生成检测结果。

enjoy yourself!

相关推荐
YOLO数据集集合4 分钟前
多模态AI道路病害检测系统:YOLO+DeepSeek融合实战
人工智能·yolo·目标检测·计算机视觉·目标跟踪
程序员脚趾7 小时前
GPT-5.6 上线:当 GPT 与 Codex 走向融合,AI 正从“回答问题”走向“完成工作”
人工智能
thubier(段新建)8 小时前
owtb 3pl 面向城市配送物流企业需求V0.2
大数据·人工智能
Token炼金师8 小时前
模型的防线:Prompt 注入防御、越狱攻击与对齐、红队测试、价值观对齐、对抗样本鲁棒性、安全评测与边界 —— 模型安全六防
人工智能·红队测试·prompt 注入防御·越狱攻击与对齐·价值观对齐·对抗样本鲁棒性·安全评测与边界
嘘神秘用9 小时前
布:AI 驱动的 Redis 客户端,更快、更直观
数据库·人工智能·redis
黒亱中旳9 小时前
Java AI 框架三国杀:Solon AI vs Spring AI vs LangChain4j 深度对比
java·人工智能·spring
小和尚同志9 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
alxraves9 小时前
医用超声远程会诊系统:会诊平台的核心架构与功能解析
java·人工智能·架构
jinggongszh10 小时前
智能硬件对接与系统落地:开发岗在制造现场的经验沉淀
大数据·人工智能
ZeekerLin10 小时前
AI 原生团队协作机制:角色、分工与工程文化变化
大数据·人工智能