深度学习(四):目标检测网络模型数据输入层是如何做图片分辨率缩放的

在卷积神经网络中往往需要对输入图像做缩放,那么是怎么做做缩放的,是直接长宽都缩放到目标长宽,还是按照某种的比例来做呢?

以FasterRCNN的Caffe版本(https://github.com/rbgirshick/py-faster-rcnn)为例,其缩放方式如下:

例如:

这个步骤无论是训练阶段还是推理阶段都采用。

在config.py文件中中定义了目标分辨率大小,即短边的目标是缩放到600,同时长边的不能超过1000

# Scales to use during training (can list multiple scales)
# Each scale is the pixel size of an image's shortest side
__C.TRAIN.SCALES = (600,)

# Max pixel size of the longest side of a scaled input image
__C.TRAIN.MAX_SIZE = 1000

# Scales to use during testing (can list multiple scales)
# Each scale is the pixel size of an image's shortest side
__C.TEST.SCALES = (600,)

# Scales to use during testing (can list multiple scales)
# Each scale is the pixel size of an image's shortest side
__C.TEST.SCALES = (600,)

 

训练阶段:

数据输入层为由Python实现的RoIDataLayer层

layer {
  name: 'input-data'
  type: 'Python'
  top: 'data'
  top: 'im_info'
  top: 'gt_boxes'
  python_param {
    module: 'roi_data_layer.layer'
    layer: 'RoIDataLayer'
    param_str: "'num_classes': 21"
  }
}

训练阶段图像缩放的函数调用过程如下:

 推理阶段:

在prototxt文件中数据输入层定义了所需要的分辨率为224x224

input: "data"
input_shape {
  dim: 1
  dim: 3
  dim: 224
  dim: 224
}

input: "im_info"
input_shape {
  dim: 1
  dim: 3
}

我们来看FasterRCNN的推理阶段的python文件(tools\demo.py)是如何处理的,

下图为计算图像缩放的比例倍数函数调用流程:

 

 

 

调用完成后,我们回到test.py的im_detect函数中,调用blobs, im_scales = _get_blobs(im, boxes)后,im_scales为图片的缩放倍数,对于000456.jpg图片,其分辨率为375x500,缩放的比例倍数为1.6,即目标是放大到600x800。

我们来看以下语句:

这个语句的作用是调用caffe将输入层的图片维度调整为*(blobs['data'].shape),这个*(blobs['data'].shape)是什么信息呢?如下:

也就是说了这里不使用.prototxt文件中的224x224信息,而是将分辨率缩放为600x800。同样im_info的维度也reshape为当前的维度信息,只不过这个维度信息与.prototxt文件定义的是一致的:

因此,综上所述,FasterRCNN(Caffe版本)在训练和推理阶段都是按照同样的规则对图片做动态的缩放,即每张图片的缩放比例都是不同的,而在推理阶段则不采用.prototxt定义的输入层的维度信息,这样确保了训练和推理阶段都是对同样分辨率尺度下的图片进行处理,有利于提高检测的精度。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值