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

今天在翻几年前的一些YOLO Object Detection with OpenCV的模型,发现很多模型都用到了这两句

# 获取输出层的名称: ['yolo_82', 'yolo_94', 'yolo_106']
ln = net.getLayerNames()
ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
上面这两句的目的是为了获取输出层的名字

什么意思呢?

先来看net.getLayerNames()与net.getUnconnectedOutLayers()的用法了:

net.getLayerName()

用法如其名:获取每一层的名称,返回一个列表,如:[conv_0, bn_0, relu_0, conv_1,..., permut_106, yolo_106]

net.getUnconnectedOutLayers()

也可以猜到部分含义:这里Unconnected就是后面没有连接的层了;

那么它的作用是以列表的形式返回输出层在整个网络中的索引位置;

上面两行代码含义也就明显了:得到输出是:['yolo_82', 'yolo_94', 'yolo_106']

但是在运行的时候,发现这个是报错的

Traceback (most recent call last):
  File "D:\project\social-distance-detector\social_distance_detector.py", line 56, in <module>
    ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
  File "D:\project\social-distance-detector\social_distance_detector.py", line 56, in <listcomp>
    ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
IndexError: invalid index to scalar variable.

将这句中[0]去掉即可运行

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

改为

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

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值