【发布时间】:2019-12-08 23:07:48
【问题描述】:
我目前正在尝试使用带有 python 的 Tensorflow 对象检测 API 构建对象检测器。我已经按照 here 和 here 发布的说明重新训练了 faster-rcnn model
但是,据我所知,培训时间相当长。我知道我使用的是迁移学习,而不是从头开始训练更快的 rcnn 模型。我想知道是否有办法下载未经训练的 fast-rcnn 模型并从头开始(端到端)进行训练,而不必求助于迁移学习。
我熟悉迁移学习的优点,但是,我的对象检测器旨在快速训练、范围狭窄,并且针对字母而不是对象进行训练,因此我不认为迁移学习是最佳途径。
我相信解决这个问题与pipeline.config 文件有关,尤其是在这部分:
fine_tune_checkpoint: "PATH/TO/PRETRAINED/model.ckpt"
from_detection_checkpoint: true
num_steps: 200000
但我不确定如何指定没有fine_tune_checkpoint
【问题讨论】:
-
即使使用迁移学习,您也可以选择步数 (
num_steps)。例如,您可以将其设置为 20000 甚至更少,具体取决于您拥有的数据量。使用高性能硬件从头开始训练需要几天时间。 -
您好,您介意解释一下您的意思吗?更改
num_steps变量不会导致准确性降低吗? -
我的意思是:你可以根据你的数据集调整步数。例如,如果您的数据集有 5000 张图像,则无需为 200000 步训练模型。当您开始训练模型时,您将在每次迭代中显示损失。如果损失接近于零(即损失
-
这就是我的想法,这是可以实现的,但问题是它需要的时间太长了。我相信这是因为我的数据集(字母)与预训练数据集(coco)有很大不同。
-
1- 你想检测字母/书写(字母和数字)吗?,如果是,你应该使用text-detection-CTPN 2- 迁移学习确实没有完全适应新的训练,但是当你使用迁移学习时,预训练的模型并没有完全加载。当你使用自己的数据集重新训练它时,只加载了其中的一部分。这就是使迁移学习成为可能的原因。您可以微调预训练模型以更适合您的需求..
标签: python tensorflow object-detection object-detection-api faster-rcnn