net.getUnconnectedOutLayers()报错IndexError: invalid index to scalar variable.

博客主要讨论了在使用OpenCV内置的YOLOv3进行目标检测时遇到的两个错误:一是`IndexError:invalid index to scalar variable.`,二是`AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'`。对于第一个问题,解决方案是修改索引方式,将`i[0]`改为`i`。第二个问题可能由于torch版本过高导致,降低torch版本或直接修改源代码可以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、net.getUnconnectedOutLayers()报错IndexError: invalid index to scalar variable.

使用opencv内置的YOLOv3做检测时报错IndexError: invalid index to scalar variable.即标量用了无效的索引。

原代码

ln = net.getLayerNames()
ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]

对ln和net.getUnconnectedOutLayers()进行打印输出,发现ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]是为了获取YOLO输出层的名字,net.getUnconnectedOutLayers()得到的是[200 227 254],每个元素都是标量,不能用索引来取,因此将i[0]改为i即可,具体修改如下

修改后

    ln = net.getLayerNames()
    print(ln)#('conv_0', 'bn_0', 'leaky_1', 'conv_1', 'bn_1', 'leaky_2', ...
    print(net.getUnconnectedOutLayers())#[200 227 254]
    ln = [ln[i - 1] for i in net.getUnconnectedOutLayers()]

二、AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘

在yolov5训练完成后,运行detect.py进行推理测试时,出现这样的错误AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
在这里插入图片描述原因可能是使用的torch版本太高,降低下torch版本就不会报错,或者直接修改下报错的文件
修改方法:进入unsampling种报错的地方,修改如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

视觉AI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值