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

一、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种报错的地方,修改如下:
在这里插入图片描述


版权声明:本文为weixin_43745234原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。