一、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种报错的地方,修改如下: