Требуется ли предварительно определенный размер изображения, чтобы использовать трансферное обучение в тензорном потоке? - PullRequest
2 голосов
/ 23 мая 2019

Я намерен использовать предварительно обученную модель, такую ​​как fast_rcnn_resnet101_pets для обнаружения объектов в среде Tensorflow, как описано здесь

Я собрал несколько изображений для обучения и тестирования набора. Все эти изображения имеют различный размер. Должен ли я изменить их размер до общего размера?

fast_rcnn_resnet101_pets использует resnet с размером ввода 224x224x3. enter image description here

Значит ли это, что я должен изменить размер всех своих изображений перед отправкой на тренировку? Или TF позаботится автоматически.

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

В целом, рекомендуется ли иметь изображения одинакового размера?

1 Ответ

4 голосов
/ 23 мая 2019

Нет, вам не нужно изменять размеры входных изображений до фиксированных форм самостоятельно. API обнаружения объекта Tensorflow имеет этап предварительной обработки, который изменяет размер всех входных изображений. Ниже приведена функция, определенная на этапе предварительной обработки, и существует image_resizer_fn, она соответствует полю с именем 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

Здесь - это пример файла конфигурации для модели 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
    }

Фактически, форма измененных изображений имеет большое влияние на скорость обнаружения в зависимости от точности. Хотя нет особых требований к размерам входных изображений, для правильной работы сверточной операции лучше иметь все изображения с наименьшим размером, превышающим разумное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...