如何从头开始训练ssd-mobilenet

问题描述 投票:0回答:1

我如何在无需迁移学习的情况下从tensorflow对象检测模型Zoo中重新训练ssd-mobilenet-v2。我的意思是每一个重量,而不仅仅是最后一层。

我必须构建网络体系结构和脚本来进行培训,还是可以对文档中指定的.config文件或train.py脚本进行一些小的更改以培训自定义对象检测器。

这种方法会改善/降低网络的准确性/损失吗?

提前感谢您的帮助。

python tensorflow object-detection object-detection-api mobilenet
1个回答
0
投票

首先,默认情况下,所有参数都将受到重新训练,除非您在pipeline.config中另外定义。

有一个名为pipeline.config的文件,可用于控制训练过程。https://github.com/tensorflow/models/blob/master/research/object_detection/samples/configs/ssd_mobilenet_v2_coco.config

在配置文件中,您可以定义是否要从检查点加载模型参数。您可以选择几种操作:1.加载骨干网(即您的移动网络功能提取器)的参数2.为预测和回归头加载参数。3.不要加载参数(通常您不会喜欢此参数-训练和收敛将花费更长的时间)

更具体地说,您应该在pipline.config中关注以下节点:

  1. fine_tune_checkpoint-您要用于进行迁移学习的原始模型的检查点。
  2. fine_tune_checkpoint_type-定义检查点是否为分类 / 检测
  3. load_all_detection_checkpoint_vars-如果True-则将在训练开始之前加载fine_tune_checkpoint的参数。
  4. freeze_variables-如果您不想重新训练所有参数,则可以定义要冻结的变量。(请参阅其原始文件object_detection / protos / train.proto]]--https://github.com/tensorflow/models/blob/master/research/object_detection/protos/train.proto中的完整文档)>

    示例:

  5. 153   fine_tune_checkpoint: "<PATH-TO-DOWNLOADED-CKPT>/model.ckpt"
    154   fine_tune_checkpoint_type: detection
    155   load_all_detection_checkpoint_vars: true
    

将加载和重新训练所有参数。

© www.soinside.com 2019 - 2024. All rights reserved.