caffe mobilenetV2 检测图片报错
1. 基础信息
文件 | 版本 |
---|---|
操作系统 | ubuntu20.04 |
python | 3.8.5 |
opencv | 4.5.1 |
numpy | 1.17.4 |
caffe | 1.0.0 |
mobilenet v2 | https://github.com/shicai/MobileNet-Caffe |
2. 报错
执行代码
python3 eval_image.py --proto mobilenet_v2_deploy.prototxt --model mobilenet_v2.caffemodel --image ./cat.jpg
出错
Traceback (most recent call last):
File "eval_image.py", line 66, in <module>
eval()
File "eval_image.py", line 38, in eval
im = im[:, off:off + h]
TypeError: slice indices must be integers or None or have an __index__ method
3. 原因分析
切片索引只支持 integers 或者 None
4. 解决
方法一: numpy 降版本使用
网友表示,numpy 1.10* 版本支持浮点数索引,可将numpy 降版本
方法二: 修改索引类型
修改文件 “eval_image.py” line 37, 如下所示
def eval():
nh, nw = 224, 224
img_mean = np.array([103.94, 116.78, 123.68], dtype=np.float32)
# caffe._caffe.set_mode_cpu()
caffe.set_mode_cpu()
net = caffe.Net(args.proto, args.model, caffe.TEST)
im = caffe.io.load_image(args.image)
h, w, _ = im.shape
if h < w:
- off = (w - h) / 2
+ off = (w-h)//2
im = im[:, off:off + h]
问题解决。