frcnn系列错误: TypeError: 'numpy.float64' object cannot be interpreted as an index 的解决方案
程序员文章站
2022-04-25 21:25:25
...
1.TypeError: 'numpy.float64' object cannot be interpreted as an index 的解决方案
看了很多博客都说要调整numpy版本到1.11.0,这个方法或许能用,但不是根本方法,因为为了frcnn代码去调整一个包库的版本,属实饮鸩止渴,最好的方法就是去修改代码中出问题的地方,标记一下一个回答frcnn爬坑记录
需要补充的是,它的最后一个改错:
修改 /home/XXX/py-faster-rcnn/lib/rpn/proposal_target_layer.py,转到123行:
for ind in inds:
cls = clss[ind]
start = 4 * cls
end = start + 4
bbox_targets[ind, start:end] = bbox_target_data[ind, 1:]
bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS
return bbox_targets, bbox_inside_weights
这里的ind,start,end都是 numpy.int 类型,这种类型的数据不能作为索引,所以必须对其进行强制类型转换,转化结果如下:
for ind in inds:
ind = int(ind)
cls = clss[ind]
start = int(4 * cls)
end = int(start + 4)
bbox_targets[ind, start:end] = bbox_target_data[ind, 1:]
bbox_inside_weights[ind, start:end] = cfg.TRAIN.BBOX_INSIDE_WEIGHTS
return bbox_targets, bbox_inside_weight
最后一个单词,weights少了一个s,同时,/home/XXX/py-faster-rcnn/lib/roi_data_layer中也有一样的这个代码,也改掉。