在 Tensorflow 中使用迁移学习是否需要预定义图像大小?

2024-05-25

我打算使用预先训练的模型,例如fast_rcnn_resnet101_pets用于 Tensorflow 环境中的对象检测,如所述here https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html

我为训练和测试集收集了几张图像。所有这些图像都有不同的尺寸。我必须将它们调整为通用尺寸吗?

faster_rcnn_resnet101_pets uses resnet with input size 224x224x3. enter image description here

这是否意味着我必须在发送图像进行训练之前调整所有图像的大小?或者由 TF 自动处理。

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

一般来说,使用相同大小的图像是一个好习惯吗?


不,您不需要自己将输入图像的大小调整为固定形状。Tensorflow 对象检测 api 有一个预处理步骤,可以调整所有输入图像的大小。以下是预处理步骤中定义的函数,其中有一个image_resizer_fn,它对应于一个名为image_resizer在配置内file https://github.com/tensorflow/models/blob/master/research/object_detection/inputs.py.

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 https://github.com/tensorflow/models/blob/master/research/object_detection/protos/image_resizer.proto文件中,您可以在 4 种不同的图像缩放器中进行选择,即

  1. keep_aspect_ratio_resizer
  2. 固定形状调整器
  3. 身份调整器
  4. 条件形状调整器

Here https://github.com/tensorflow/models/blob/master/research/object_detection/samples/configs/faster_rcnn_resnet101_pets.config是模型的示例配置文件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
    }

事实上,调整大小的图像的形状对检测速度和准确度性能有很大影响。虽然对输入图像的大小没有具体要求,但最好所有最小尺寸的图像都大于合理值,以便卷积运算正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Tensorflow 中使用迁移学习是否需要预定义图像大小? 的相关文章

随机推荐

  • 如何在php中获取#后面的URL锚点部分

    在我的项目中使用 LightBox 机制时 我得到了一个 URLhttp nhs search panel php patentid 2 http nhs search panel php patientid 2我需要通过 GET 机制从中
  • 在 Spring 4 中干掉通用的 RedisTemplate

    我读到你可以拥有 Autowired从 Spring 4 开始泛型 这太棒了 我有一个摘要RedisService我想参加的课程 Autowired一个通用的 RestTemplate 如下所示 public abstract class
  • LLDB 在地址处中断

    我为这个可能微不足道的问题表示歉意 但我遇到了麻烦 因为谷歌一遍又一遍地给我相同的不适用的答案 我正在尝试在 LLDB 中设置断点 阅读文档后 我可以选择停止在源代码中的某一行或某个符号上 我想要做的是在某个内存位置设置断点 也不读取或写入
  • 当没有数据时,空 json 对象而不是 null -> 如何使用 gson 反序列化

    我正在尝试使用 Google 的 gson 库解析 json 数据 但 json 数据表现不佳 当一切正常时 它确实看起来像这样 parent child one some String child two 4711 child one应该
  • 使用 math.h 函数时 gdb 给出奇怪的输出[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gdb 将 sqrt 3 计算为 0 https stackoverflow com questions 5122570 why does gdb evaluate sqrt3 to 0 这里
  • 组合多个任意长度的列表

    我正在寻找一种通过以下方式加入多个列表的方法 ListA a b c ListB 1 2 3 4 ListC Resulting List a 1 b 2 c 3 4 换句话说 元素按顺序排列 从第一个列表开始组合到结果列表中 任意数量的输
  • kafka ProducerRecord 和 KeyedMessage 有什么区别

    我正在衡量卡夫卡生产者生产者的表现 目前我遇到了两个配置和用法略有不同的客户 Common def buildKafkaConfig hosts String port Int Properties val props new Proper
  • C++ 中如何检查指针是否仍然指向有效内存?

    我有一个指针等于另一个指针 我想检查我的指针是否等于不为空的指针 int ptr0 new int 5 int ptr1 ptr0 delete ptr0 if std cout lt lt ptr1 equals to a null pt
  • 模糊匹配两个字符串 ur r

    我有两个向量 每个向量都包含一系列字符串 例如 V1 c pen document folder warn V2 c pens copy folder warning 我需要找出哪两个最匹配 我直接使用编辑距离 但这还不够好 就我而言 钢笔
  • 如何使用语言服务器协议将 TS 解析为符号?

    我是这个主题的新手 所以我很可能弄错了一些关键术语 我想将打字稿文件解析为其组件符号 举一个我想象的非常粗略的例子 请参见下文 some ts file export function yell output string alert ou
  • 霸权继承——真的很糟糕吗?

    我是那些必须在 0 警告的情况下编译代码的人之一 通常我尊重编译器 如果它向我发出警告 我会将其视为我应该稍微修改我的代码的标志 如果我必须告诉编译器忽略给定的警告 我会有点抽搐 但这件事我似乎无法回避 而且据我所知 我没有做过任何 坏事
  • 端点路由.net core 3-多区域

    我正在尝试从 net core 2 2 路由迁移到 asp net core 3 中的端点路由 并在启动时使用以下路由 我的 net core 2 2 路线是 routes MapRoute name default template co
  • 为什么在 php 类中作为数组项的函数不起作用

    比如我有这样一段代码 效果很好 但是如果 A 不仅仅是一个变量 而且是一个类方法 那么这不起作用
  • Bootstrap 3 RC 1 准备好投入生产了吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我今天要开始一个巨大的项目 我选择 Zurb 基金会是因为他们 非常 良好的移动优先策略 当我几个月前开始四处寻找时 Bootstrap 3 还
  • 移动 sf 对象的经度

    我有一张国家地图 sf 对象 我想改变俄罗斯东部的经度 以便它不与俄罗斯其他地区隔离 看图片 https i stack imgur com NBjyK jpg 我找到了后端代码st shift longitude https github
  • 用 while 循环代替递归(爬楼梯难题):Python

    我正在练习用 while 循环替换递归 但我遇到了以下问题 如果你一次只能走 1 或 2 级楼梯 你有多少种方式登上长度为 n 的楼梯 递归解决方案非常简单 def stairs n if n lt 1 return 1 else retu
  • 如何从 C++ std::basic_ostream 派生并使 << 运算符虚拟?

    我正在编写一个具有各种消息输出的类 我想让这个类变得通用并且独立于平台 所以我正在考虑通过一个基本流引用它 它可以将所有消息转储到流中 通过这样做 如果该类在控制台程序中使用 我可以通过std cout并显示在控制台窗口中 或者我可以将派生
  • 如何强制 Maven 使用本地存储库而不是前往远程存储库来检索工件?

    我在 Mac Yosemite 上使用 Maven 3 3 3 和 Java 8 我有一个多模块项目
  • AutoCompleteTextView 不显示字典建议

    我有一个习惯AutoCompleteTextView用户可以在其中输入文本 每当用户写 时 我都会显示一个下拉菜单 其中包含自定义用户名的建议 不幸的是 我还需要在键盘上方显示字典单词建议 并且出于某种原因 AutoCompleteText
  • 在 Tensorflow 中使用迁移学习是否需要预定义图像大小?

    我打算使用预先训练的模型 例如fast rcnn resnet101 pets用于 Tensorflow 环境中的对象检测 如所述here https tensorflow object detection api tutorial rea