yolov5-deepsort:AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘

这篇博客主要讨论了一个在使用PyTorch时遇到的问题:'Upsample'对象缺少'recompute_scale_factor'属性。作者提供了一个简单的解决方案,即修改requirements.txt文件中的PyTorch版本。通过将PyTorch版本更新为指定版本,并确保权重文件预先下载到本地,可以避免这个错误。对于初学者来说,直接修改库版本可能比理解代码更实际。

AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
出现上述问题,改代码对于新手有点不太现实,直接该torch的版本就可以了。
把requirements.txt 中torch的版本改成如下图就可以解决问题了,下载相关的权重文件最好先下载到本地,建议tb-csdn。
在这里插入图片描述
在这里插入图片描述

<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]: 代码修改方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值