В файле 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
.