tensorflow - 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
进一步调查导致以下发现:
- 该字段至少有 3 个选项
fine_tune_checkpoint_type
-fine_tune
和detection
classification
- 并非模型动物园中的所有模型都允许所有选项。
我的问题是:
fine_tune
在这种情况下,每一个detection
和意味着什么classification
,更重要的是何时使用每一个是合适的。- 如何判断哪些选项与模型动物园中的模型兼容?
最终,我希望进行迁移学习——例如,采用现有的训练模型并训练它为一个或多个新类绘制框。
解决方案
这些选项指示如何恢复检查点并来自这里
我在这里复制有趣的部分:
此选项控制如何从(预训练的)fine_tune_checkpoint 恢复变量。对于 TF2 型号,支持 3 种不同的类型:
- “分类”:仅恢复特征提取器的分类主干部分。当您想从预训练的图像分类模型开始训练检测模型时,通常使用此选项,例如在 ImageNet 上预训练的 ResNet 模型。
- “检测”:恢复整个特征提取器。完整检测模型中唯一未恢复的部分是框和类预测头。当您想要使用预训练的检测模型并在需要不同框和类预测头的新数据集或任务上进行训练时,通常使用此选项。
- “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
推荐阅读
- c# - 如何使用我的机器人将角色自动分配给新成员?
- r - RStudio 状态文件不存在
- node.js - 尝试在 Heroku 上安装 FFMPEG
- c# - 如何从 C# 在 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ 下创建注册表项
- python - 使用子构造函数覆盖多态超类中的方法
- c# - 添加迁移时出错 - 对象引用未设置为对象的实例
- c# - 尽管类/runtimetpye 匹配,但分配失败
- docker - 使用默认管道在 gitlab.com 中构建失败
- javascript - Express 错误地呈现 HTML
- python - 如何制作类型检查器将识别为str的自定义注释?