首页 > 解决方案 > Tensorflow 对象检测 API - “fine_tune”与“检测”与“分类”

问题描述

我正在关注本教程:https ://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html

其中,文件中有以下代码段pipeline.config

fine_tune_checkpoint_type: "detection" # Set this to "detection" since we want to be training the full detection model

进一步调查导致以下发现:

我的问题是:

最终,我希望进行迁移学习——例如,采用现有的训练模型并训练它为一个或多个新类绘制框。

标签: tensorflowtensorflow2.0object-detectionobject-detection-api

解决方案


这些选项指示如何恢复检查点并来自这里

我在这里复制有趣的部分:

此选项控制如何从(预训练的)fine_tune_checkpoint 恢复变量。对于 TF2 型号,支持 3 种不同的类型:

  1. “分类”:仅恢复特征提取器的分类主干部分。当您想从预训练的图像分类模型开始训练检测模型时,通常使用此选项,例如在 ImageNet 上预训练的 ResNet 模型。
  2. “检测”:恢复整个特征提取器。完整检测模型中唯一未恢复的部分是框和类预测头。当您想要使用预训练的检测模型并在需要不同框和类预测头的新数据集或任务上进行训练时,通常使用此选项。
  3. “full”:恢复整个检测模型,包括特征提取器、其分类主干和预测头。只有在预训练和微调任务相同时才应使用此选项。否则,模型的参数可能具有不兼容的形状,这将导致尝试恢复检查点时出错。有关此参数的更多详细信息,请参阅 /meta_architectures/*meta_arch.py​​ 文件中的 restore_map (TF1) 或 restore_from_object (TF2) 函数文档。

我猜fine_tune 目前已被“full”取代。根据您的需要,正确的选择似乎是“检测”。要知道哪些模型支持 wich 选项,如上所述,您必须查看restore_from_object正确的函数定义/meta_architectures/*meta_arch.py files


推荐阅读