Количество изображений, созданных с использованием дополнения данных с обнаружением объекта - PullRequest
1 голос
/ 21 марта 2019

Я пытался найти ответ в документации, коде и здесь, но мне не повезло. Я хотел бы знать, каково конечное число изображений, которые генерируются при увеличении данных с использованием API обнаружения объектов в Tensorflow. Для ясности приведу пример: скажем, у меня есть набор данных с 2 классами, каждый из которых изначально имеет 50 изображений. Затем я применяю этот конфиг:

  data_augmentation_options {
    ssd_random_crop {
    }
  }

  data_augmentation_options {
    random_rgb_to_gray {
    }
  }

  data_augmentation_options {
    random_distort_color {
    }
  }

  data_augmentation_options {
    ssd_random_crop_pad_fixed_aspect_ratio {
    }
  }

Как узнать окончательное количество изображений, сгенерированных для тренировки моей модели? (если есть способ). Кстати, я использую model_main.py для обучения моей модели.

Спасибо заранее.

1 Ответ

2 голосов
/ 21 марта 2019

В файле input.py в функции augment_input_fn видно, что все опции увеличения данных передаются методу preprocessor.preprocess. Все подробности находятся в файле preprocessor.py , в частности, в функции preprocess:

for option in preprocess_options:
  func, params = option
  if func not in func_arg_map:
    raise ValueError('The function %s does not exist in func_arg_map' %
                   (func.__name__))
  arg_names = func_arg_map[func]
  for a in arg_names:
    if a is not None and a not in tensor_dict:
      raise ValueError('The function %s requires argument %s' %
                     (func.__name__, a))

  def get_arg(key):
    return tensor_dict[key] if key is not None else None

  args = [get_arg(a) for a in arg_names]
  if (preprocess_vars_cache is not None and
      'preprocess_vars_cache' in inspect.getargspec(func).args):
    params['preprocess_vars_cache'] = preprocess_vars_cache
  results = func(*args, **params)
  if not isinstance(results, (list, tuple)):
    results = (results,)
  # Removes None args since the return values will not contain those.
  arg_names = [arg_name for arg_name in arg_names if arg_name is not None]
  for res, arg_name in zip(results, arg_names):
    tensor_dict[arg_name] = res

Обратите внимание, что в приведенном выше коде arg_names содержит все исходные имена изображений, это означает, что каждый параметр увеличения будет выполняться только с исходными изображениями (но не с теми, которые были получены после предыдущих параметров расширения).

Также в preprocessor.py мы видим, что каждая опция увеличения будет создавать только изображение той же формы, что и исходное изображение.

Таким образом, в результате в вашем случае к четырем вариантам и 100 исходным изображениям будет добавлено 400 дополненных изображений к tensor_dict.

...