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‘
net.getUnconnectedOutLayers()报错IndexError: invalid index to scalar variable._第1张图片原因可能是使用的torch版本太高,降低下torch版本就不会报错,或者直接修改下报错的文件
修改方法:进入unsampling种报错的地方,修改如下:
net.getUnconnectedOutLayers()报错IndexError: invalid index to scalar variable._第2张图片

你可能感兴趣的:(目标检测,python基础,opencv,人工智能,计算机视觉)