caffe input_shape 是如何工作的?
How is caffe input_shape actually work?
我对 test.prototxt 开头使用 Faster-RCNN 实现对象检测 prj 的 caffe 中的以下块感到困惑:
input: "data"
input_shape {
dim: 1
dim: 3
dim: 224
dim: 224
}
input: "im_info"
input_shape {
dim: 1
dim: 3
}
但实际上输入的不是指定大小的224*224,也不需要是224*224,我在测试代码中看到,图片只是读取没有调整大小,然后通过网络传递,很困惑,没有找到caffe如何定义这些块的参考资料,有人可以帮忙吗?
原来输入的形状不是由这里的术语决定的:
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)
和 blob['data'].shape 是经过调整大小处理的输入图像的大小,因此宽度为 600:(我不 post 这里的所有行)
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)
我对 test.prototxt 开头使用 Faster-RCNN 实现对象检测 prj 的 caffe 中的以下块感到困惑:
input: "data"
input_shape {
dim: 1
dim: 3
dim: 224
dim: 224
}
input: "im_info"
input_shape {
dim: 1
dim: 3
}
但实际上输入的不是指定大小的224*224,也不需要是224*224,我在测试代码中看到,图片只是读取没有调整大小,然后通过网络传递,很困惑,没有找到caffe如何定义这些块的参考资料,有人可以帮忙吗?
原来输入的形状不是由这里的术语决定的:
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)
和 blob['data'].shape 是经过调整大小处理的输入图像的大小,因此宽度为 600:(我不 post 这里的所有行)
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)