使用带有对象检测的数据增强生成的图像数量
Number of images generated using data augmentation with object detection
我尝试在文档、代码和此处搜索答案,但没有成功。
我想知道使用 Tensorflow 中的对象检测 API 进行数据扩充所生成的最终图像数量是多少。
为了清楚起见,我举了一个例子:假设我有一个包含 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 来训练我的模型。
提前致谢。
在文件inputs.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
。
我尝试在文档、代码和此处搜索答案,但没有成功。 我想知道使用 Tensorflow 中的对象检测 API 进行数据扩充所生成的最终图像数量是多少。 为了清楚起见,我举了一个例子:假设我有一个包含 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 来训练我的模型。
提前致谢。
在文件inputs.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
。