已解决虚拟机yolov5报错:AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘

文章介绍了在新版PyTorch中因recompute_scale_factor属性被移除导致的错误,提供了一个简单的解决方案:找到并修改upsampling.py脚本,删除不再适用的属性引用,然后重新运行程序以解决问题。

 

作者主页:爱笑的男孩。的博客_优快云博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.youkuaiyun.com/Code_and516?type=blog个人简介:打工人。

持续分享:机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。

如发现文章有误,麻烦请指出,我会及时去纠正。有其他需要可以私信我或者发我邮箱:zhilong666@foxmail.com 

目录

前言

报错内容

开始解决


前言

YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而性能高,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv5使用ultralytics/yolov5,在Windows系统上做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 希望学习Ubuntu上演示的同学,请前往 《YOLOv5(PyTorch)实战:训练自己的数据集(Ubuntu)》课程链接:https://edu.csdn.net/course/detail/30793  本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测实战:训练自己的数据集》Ubuntu系统 https://edu.csdn.net/course/detail/30793Windows系统 https://edu.csdn.net/course/detail/30923《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284       
<think>好的,我现在需要解决用户提到的YOLOv5出现的AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'错误。首先,我得理解这个错误的原因。根据用户提供的引用资料,这个问题是由于PyTorch版本与YOLOv5代码不兼容导致的。特别是,当使用较新版本的PyTorch时,Upsample模块的参数可能发生了变化,导致代码中引用了不存在的属性。 接下来,我需要确认具体的解决方法。引用[4]提到,修改代码中涉及Upsample的部分,将`recompute_scale_factor`参数替换掉。具体来说,在YOLOv5的某个文件中(可能是common.py),找到对应的interpolate函数调用,并调整参数。例如,将原来的代码行替换为省略`recompute_scale_factor`参数的版本,或者调整参数顺序。 另外,用户提供的解决方案中还提到可以降级PyTorch版本到1.9.0或以下,这可能是因为旧版本的PyTorch没有引入这个参数变更。但用户可能更倾向于修改代码而不是降级库,因为降级可能会影响其他依赖。 需要检查用户当前使用的PyTorch版本,以及对应的YOLOv5代码版本。如果用户使用的是最新的YOLOv5,可能需要查看官方是否已有修复补丁。或者根据错误提示的文件路径,找到具体的代码行进行修改。 总结解决方案步骤:1. 定位到出错的代码行;2. 修改interpolate函数的参数,移除`recompute_scale_factor`;3. 或者降级PyTorch到兼容版本。同时,要确保用户清楚如何操作这些步骤,比如如何找到文件中的具体行数,如何正确修改代码,以及如何安装指定版本的PyTorch。</think>### 逐步解决方案:YOLOv5 AttributeError 'Upsample' object 属性错误 #### **问题原因** 此错误是由于PyTorch版本(≥1.11.0)与YOLOv5代码中的`torch.nn.Upsample`模块参数不兼容导致的。新版本PyTorch移除了`recompute_scale_factor`属性,但代码中仍尝试调用该参数[^2][^4]。 --- #### **解决方法** 1. **修改YOLOv5源码(推荐)** - **步骤1**:打开YOLOv5项目中的`common.py`文件(位于`models`目录下)。 - **步骤2**:搜索以下代码段(通常在`class Conv`或上采样相关部分): ```python return F.interpolate(input, self.size, self.scale_factor, self.mode, align_corners=self.align_corners, recompute_scale_factor=self.recompute_scale_factor) ``` - **步骤3**:删除`recompute_scale_factor=self.recompute_scale_factor`参数,修改后应为: ```python return F.interpolate(input, self.size, self.scale_factor, self.mode, align_corners=self.align_corners) ``` - **验证**:重新运行`detect.py`,错误应已解决。 2. **降级PyTorch版本** - 若不想修改代码,可安装兼容的PyTorch版本(如1.9.0): ```bash pip install torch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 ``` - **注意**:需根据CUDA版本调整安装命令[^3]。 --- #### **操作验证** ```python # 修改后代码示例(common.py片段) def forward(self, x): return F.interpolate(x, size=self.size, scale_factor=self.scale_factor, mode=self.mode, align_corners=self.align_corners) ``` --- #### **关联问题** 1. 如何检查当前PyTorch版本? 2. 修改YOLOv5源码后如何确保其他功能不受影响? 3. 是否有官方补丁解决此问题? --- [^1]: 引用[1]: 优快云博客《阳光不锈@》 : 引用[2]: YOLOV5报错分析 : 引用[3]: 真实解决方案对比 : 引用[4]: 代码修改方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱笑的男孩。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值