【发布时间】:2019-11-22 20:03:58
【问题描述】:
我按照简单的tutorial 训练了一个自定义对象检测器。
我的损失高达 0.6,但我的问题是检测到的对象会将其他对象归类为我训练过的对象。例如,在我的例子中,它将狗归类为通心粉和奶酪。
我究竟做错了什么 ?
【问题讨论】:
标签: tensorflow
我按照简单的tutorial 训练了一个自定义对象检测器。
我的损失高达 0.6,但我的问题是检测到的对象会将其他对象归类为我训练过的对象。例如,在我的例子中,它将狗归类为通心粉和奶酪。
我究竟做错了什么 ?
【问题讨论】:
标签: tensorflow
我遇到了完全相同的问题,模型“记住”了以前的对象。配置文件中有一个新配置,在制作视频时没有实现。
在ssd_mobilenet_v1_pet.config 文件中,您必须指定训练开始的检查点的路径,因此它将具有先前训练的所有权重,此配置为fine_tune_checkpoint,下面是from_detection_checkpoint所以它将使用指定的检查点,之后有load_all_detection_checkpoint_vars,默认设置为true,但如果你想让模型“忘记”它训练过的对象,则必须是false。
问题在于load_all_detection_checkpoint_vars 会加载并修复所有权重,包括最后一层的权重,而不仅仅是较低层的权重,因此它会记住过去对象的分类和检测,并与新的对象进行错误分类,因为你的*.pbtxt 有不同的分类。如果您将其设置为 false,它将仅根据您的训练集加载数据并为最终层学习新的权重。
【讨论】: