【问题标题】:How is caffe input_shape actually work?caffe input_shape 实际上是如何工作的?
【发布时间】:2017-12-30 19:24:31
【问题描述】:

我对在 test.prototxt 开头使用 Faster-RCNN 的 caffe 实现的 obj 检测 prj 中的以下块感到困惑:

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,我在测试代码中看到,图片只是读取出来的,没有resize然后通过网络,很迷茫,并且没有找到 caffe 如何定义这些块的参考,有人可以帮忙吗?

【问题讨论】:

    标签: caffe


    【解决方案1】:

    原来输入形状不是由这里的术语决定的:

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 2011-09-27
      • 2021-12-16
      • 2013-03-14
      • 2021-03-23
      • 2011-02-11
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多