[英]Same label multiple times in one image - Tensorflow
我正在尝试创建一个 tf model,它可以检测任何图像中的任何笔迹。 为了做到这一点,我只用一个 label: edit 在所有火车图片中制作了标签。 这意味着,一张图像可以多次使用此标签。
经过数小时的使用 cpu 训练后,我没有得到预期的结果。 model 看不到我训练前给的任何积木。
我正在使用以下 model:
http://download.tensorflow.org/models/object_detection/tf2/20200711/efficientdet_d6_coco17_tpu-32.tar.gz
问题是我多次用一个 label 标记一张图像吗?
可能是使用 cpu 而不是 gpu 的问题? 我目前有一个 4GB 的 gpu,但似乎不够用。 我用 2000 步训练了 model,learning_rate 是 0.006。 我应该训练它不止于此吗?
有什么建议么?
提前谢谢你。
以下是经过训练的 model 的 tensorboard 的屏幕截图:
GPU 唯一的优势就是训练速度更快。 它不应该对预期结果有任何影响。 只是需要更长的时间。 但是,对于某些型号,差异可能很大。 监控你的训练可能会给你更多的洞察力。
没有得到预期的结果是什么意思? 它与您的预期有何不同?
我建议您使用某种监控,例如 Tensorboard 来监控训练和验证数据集的损失和指标(如果您还没有这样做的话)。 这将为您提供有关实时培训的宝贵信息。
当你的model好像学不到什么东西的时候,你就要开始调试了。 您可以按照以下步骤来确保这些都不是您的问题: https://blog.slavv.com/37-reasons-why-your-neural.network-is-not-working-4020854bd607
我特别喜欢在单个批次上过拟合 model。 这个测试告诉我我的算法管道是否正确,包括预处理、model 和评估。 结果应该是对单个训练批次的评估应该给你一个很好的分数,而对于数据的 rest,分数会很差,因为 model 将在单个批次上过度拟合。
有时,问题可能定义错误。 你能澄清一下你的标签是什么吗? 我不完全明白。 如果它是一个常见问题,那么你可以搜索 inte.net 以查看通常如何定义的灵感。
一般来说,你希望你所有的损失函数都下降到 go。 在您的情况下,他们 go 在前几百步中上升,这不一定表示有问题,因为有时在训练稳定之前需要很短的时间。 N.尽管如此,三角形表明损失是 NaN。 这意味着有问题。 我可以推荐使用tf.keras.callbacks.TerminateOnNaN
回调来立即检测损失中的 NaN,这将立即终止您的训练。
从损失函数本身,很难判断模型的性能如何。 在每个机器学习任务中,您都必须能够理解 model 的性能。指标正是用于此目的。 在这种情况下(对象检测),我建议使用IoU来确定预测框与目标框的重叠程度,并使用precision
和recall
来评估预测框是否包含手写文本的二元分类性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.