如何从头开始训练ssd移动网络



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

我是否必须构建网络架构和用于训练的脚本,或者我是否可以对训练自定义对象检测器的文档中指定的.config文件或train.py脚本进行一些小的更改。

这种方法会改善/恶化网络准确性/损失吗?

提前感谢您的帮助。

首先,除非您在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-如果为真-则fine_tune_checkpoint中的参数将在训练开始前加载
  4. freeze_variables-如果您不想重新训练所有参数,您可以定义要冻结的变量。(请参阅其proto文件中的完整文档object_detection/protos/train.proto(-https://github.com/tensorflow/models/blob/master/research/object_detection/protos/train.proto)

示例:

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

所有参数都将被加载并重新培训。

最新更新