如何在没有迁移学习的情况下从 tensorflow 对象检测模型动物园重新训练 ssd-mobilenet-v2。我的意思是每一个重量,而不仅仅是最后一层。
我是否必须构建网络架构和训练脚本,或者我可以对训练自定义对象检测器的文档中指定的 .config 文件或 train.py 脚本进行一些小的更改。
这种方法会改善/恶化网络准确性/损失吗?
提前感谢您的帮助。
如何在没有迁移学习的情况下从 tensorflow 对象检测模型动物园重新训练 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. 为骨干网加载参数(即您的 mobilenet 特征提取器) 2. 为预测和回归头加载参数。3.不要加载参数(通常你不会喜欢这个——训练和收敛需要更长的时间)
更具体地说,您应该关注 pipline.config 中的以下节点:
例子:
153 fine_tune_checkpoint: "<PATH-TO-DOWNLOADED-CKPT>/model.ckpt"
154 fine_tune_checkpoint_type: detection
155 load_all_detection_checkpoint_vars: true
所有参数都将被加载和重新训练。