是否需要预定义图像大小才能在 Tensorflow 中使用迁移学习?

Is it required to have predefined Image size to use transfer learning in Tensorflow?

我打算使用 faster_rcnn_resnet101_pets 等预训练模型在 Tensorflow 环境中进行对象检测,如 here

所述

我已经为训练和测试集收集了几张图片。所有这些图像大小不一。我必须将它们调整为通用尺寸吗?

faster_rcnn_resnet101_pets 使用输入大小为 224x224x3 的 resnet。

这是否意味着我必须在发送所有图像进行训练之前调整它们的大小?或者由TF自动处理。

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_resnet101_pets.config

一般来说,使用相同大小的图片是个好习惯吗?

不,您不需要自己将输入图像调整为固定形状。 Tensorflow 对象检测 api 有一个预处理步骤,可以调整所有输入图像的大小。 以下是在预处理步骤中定义的函数,并且有一个 image_resizer_fn,它对应于配置 file 中名为 image_resizer 的字段。

def transform_input_data(tensor_dict,
                     model_preprocess_fn,
                     image_resizer_fn,
                     num_classes,
                     data_augmentation_fn=None,
                     merge_multiple_boxes=False,
                     retain_original_image=False,
                     use_multiclass_scores=False,
                     use_bfloat16=False):


"""A single function that is responsible for all input data transformations.
  Data transformation functions are applied in the following order.
  1. If key fields.InputDataFields.image_additional_channels is present in
     tensor_dict, the additional channels will be merged into
     fields.InputDataFields.image.
  2. data_augmentation_fn (optional): applied on tensor_dict.
  3. model_preprocess_fn: applied only on image tensor in tensor_dict.
  4. image_resizer_fn: applied on original image and instance mask tensor in
     tensor_dict.
  5. one_hot_encoding: applied to classes tensor in tensor_dict.
  6. merge_multiple_boxes (optional): when groundtruth boxes are exactly the
     same they can be merged into a single box with an associated k-hot class
     label.

根据proto文件,您可以选择4种不同的图像缩放器,即

  1. keep_aspect_ratio_resizer
  2. fixed_shape_resizer
  3. identity_resizer
  4. conditional_shape_resizer

Here 是模型 faster_rcnn_resnet101_pets 的示例配置文件,图像都用 min_dimension=600 和 max_dimension=1024

重新整形
model {
  faster_rcnn {
    num_classes: 37
    image_resizer {
      keep_aspect_ratio_resizer {
        min_dimension: 600
        max_dimension: 1024
      }
    }
    feature_extractor {
      type: 'faster_rcnn_resnet101'
      first_stage_features_stride: 16
    }

事实上,调整大小的图像的形状对检测速度和准确度性能有很大影响。虽然对输入图像的尺寸没有具体要求,但最好让所有图像的最小尺寸都大于一个合理的值,这样才能使卷积运算正常进行。