frcnn系列错误: TypeError: 'numpy.float64' object cannot be interpreted as an index 的解决方案

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中也有一样的这个代码,也改掉。

你可能感兴趣的:(FRCNN,深度学习,工具)