是否需要预定义图像大小才能在 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种不同的图像缩放器,即
- keep_aspect_ratio_resizer
- fixed_shape_resizer
- identity_resizer
- 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
}
事实上,调整大小的图像的形状对检测速度和准确度性能有很大影响。虽然对输入图像的尺寸没有具体要求,但最好让所有图像的最小尺寸都大于一个合理的值,这样才能使卷积运算正常进行。
我打算使用 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种不同的图像缩放器,即
- keep_aspect_ratio_resizer
- fixed_shape_resizer
- identity_resizer
- 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
}
事实上,调整大小的图像的形状对检测速度和准确度性能有很大影响。虽然对输入图像的尺寸没有具体要求,但最好让所有图像的最小尺寸都大于一个合理的值,这样才能使卷积运算正常进行。