如何在不进行迁移学习的情况下从tensorflow对象检测模型Zoo中重新训练ssd-mobilenet-v2。我的意思是每一个重量,而不仅仅是最后一层。
我是否需要构建网络体系结构和脚本来进行培训,或者可以对文档中指定的.config文件或train.py脚本进行一些小的更改以培训自定义对象检测器?
这种方法会提高/降低网络的准确性/损失吗?
在此先感谢您的帮助。
答案 0 :(得分:1)
首先,默认情况下,所有参数都将被重新训练,除非您在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中的以下节点上:
示例:
153 fine_tune_checkpoint: "<PATH-TO-DOWNLOADED-CKPT>/model.ckpt"
154 fine_tune_checkpoint_type: detection
155 load_all_detection_checkpoint_vars: true
所有参数都将被加载和重新训练。