原来输入形状不是由这里的术语决定的:
input: "data"
input_shape {
dim: 1
dim: 3
dim: 224
dim: 224
}
input: "im_info"
input_shape {
dim: 1
dim: 3
}
在我将输入昏暗更改为任意大小后,例如 424:
input: "data"
input_shape {
dim: 1
dim: 3
dim: 424
dim: 424
}
input: "im_info"
input_shape {
dim: 1
dim: 3
}
测试AP没有一点变化,表明做了一些修改,所以图像大小在这里不是由test.prototxt中的input_shape决定的,然后我深入代码,在这里找到了几行:
net.blobs['data'].reshape(*(blobs['data'].shape))
之前:
forward_kwargs = {'data': blobs['data'].astype(np.float32, copy=False)}
if cfg.TEST.HAS_RPN:
forward_kwargs['im_info'] = blobs['im_info'].astype(np.float32, copy=False)
else:
forward_kwargs['rois'] = blobs['rois'].astype(np.float32, copy=False)
blobs_out = net.forward(**forward_kwargs)
而 blobs['data'].shape 是输入图像的大小,经过调整大小处理,宽度为 600:(我不在这里发布所有行)
im_scale = float(cfg.TEST.MAX_SIZE) / float(im_size_max)
im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale,
interpolation=cv2.INTER_LINEAR)