gpt4 book ai didi

Tensorflow 对象检测 API - 模型的微调如何工作?

转载 作者:行者123 更新时间:2023-11-30 08:51:19 27 4
gpt4 key购买 nike

这是有关 Tensorflow 对象检测 API 的更普遍的问题。

我正在使用这个 API,更具体地说,我根据我的数据集微调模型。根据 API 的描述,我使用 model_main.py 函数从给定的检查点/卡住图中重新训练模型。

但是,我不清楚 API 中的微调是如何进行的。最后一层的重新初始化是自动发生还是我必须实现类似的东西?在 README 文件中,我没有找到有关此主题的任何提示。也许有人可以帮助我。

最佳答案

无论是从stratch训练还是从checkpoint训练,model_main.py是主程序,除了这个程序之外,你所需要的只是一个正确的pipeline配置文件。

所以对于微调来说,可以分为两个步骤,恢复权重和更新权重。这两个步骤都可以根据列车定制配置proto file ,这个proto对应于管道配置文件中的train_config

train_config: {
batch_size: 24
optimizer { }
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"
fine_tune_checkpoint_type: "detection"
# Note: The below line limits the training process to 200K steps, which we
# empirically found to be sufficient enough to train the pets dataset. This
# effectively bypasses the learning rate schedule (the learning rate will
# never decay). Remove the below line to train indefinitely.
num_steps: 200000
data_augmentation_options {}
}

第 1 步,恢复重量。

在此步骤中,您可以通过设置fine_tune_checkpoint_type来配置要恢复的变量,选项为检测分类。通过将其设置为“检测”,本质上您可以从检查点恢复几乎所有变量,而通过将其设置为“分类”,则仅恢复来自“feature_extractor”范围的变量被恢复,(主干网络中的所有层,如VGG,Resnet,MobileNet,它们被称为特征提取器)。

以前,这是由 from_detection_checkpointload_all_detection_checkpoint_vars 控制的,但这两个字段已弃用。

还要注意的是,配置完 fine_tune_checkpoint_type 后,实际的恢复操作将检查图中的变量是否存在于检查点中,如果不存在,则将通过常规初始化操作来初始化该变量。

举个例子,假设您想要微调 ssd_mobilenet_v1_custom_data 模型,并下载了检查点 ssd_mobilenet_v1_coco,当您设置 fine_tune_checkpoint_type:检测,那么图中检查点文件中也可用的所有变量都将被恢复,并且框预测器(最后一层)权重也将被恢复。但如果您设置fine_tune_checkpoint_type:classification,则仅恢复mobilenet层的权重。但是,如果您使用不同的模型检查点,例如 faster_rcnn_resnet_xxx,那么由于图中的变量在检查点中不可用,您将看到输出日志显示 Variable XXX is not available in checkpoint 警告,并且它们不会被恢复。

第 2 步,更新权重

现在您已经恢复了所有权重,并且您想继续在自己的数据集上进行训练(微调),通常这应该足够了。

但是,如果您想尝试一些东西,并且想在训练期间卡住某些层,那么您可以通过设置 freeze_variables 来自定义训练。假设您想卡住 mobilenet 的所有权重并且仅更新框预测器的权重,您可以设置 freeze_variables: [feature_extractor] 以便所有具有 feature_extractor 的变量他们的名字中的内容将不会被更新。详细信息请参见another answer我写的。

因此,要在自定义数据集上微调模型,您应该准备一个自定义配置文件。您可以从 sample config 开始文件,然后修改一些字段以满足您的需要。

关于Tensorflow 对象检测 API - 模型的微调如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56012092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com