如何在 Tensorflow Mobile/Lite 中训练 SSD 模型

Lin*_*ton 3 tensorflow tensorflow-lite

我有一个 300*300 图像的数据集以及其中的对象框和标签。我想使用 SSD 网络来检测图像上的这些对象。我也想在移动设备上做到这一点,所以我需要最终的模型与 TF Mobile/Lite 兼容。问题是:我应该从哪里开始?

我知道 TF Mobile/Lite 支持 SSD(参见https://github.com/tensorflow/tensorflow/issues/15633例如,我认为 TF 不应该有经过训练的 SSD 模型,我只需要在我自己的数据集上进行训练。但我只能找到预先训练过的。我也找不到任何教程来解释如何在自己的数据集上训练现有模型。

所以,更准确地说:

  1. 我的假设是,我应该获得未经训练的模型并使用一些简单的脚本在我自己的数据集上对其进行训练,对吗?
  2. 如果,那么我在哪里可以获得这个模型和训练脚本?
  3. 我是否需要使用桌面 TF 对其进行训练,然后转换为 Mobile/Lite 模型?

GPh*_*ilo 5

1)除非你有大量数据,否则你的假设是错误的。如今,大多数应用程序都是从在 Imagenet 上预训练的模型开始,然后根据您的数据集进行微调。原因是,虽然数据集不同,但从 Imagenet 学到的许多特征对于新数据集也很有用,因此您可以对其进行微调,避免需要大量数据(以及大量时间/计算能力) )。

2)可以查看tensorflow模型存储库。请注意,图架构和权重是分开的,因此如果您决定从头开始,请在开始训练时不要加载权重。

3) 是的,tflite 是一个面向移动设备的优化运行时,图形仍然在桌面上使用普通 Tensorflow 进行训练,冻结,然后您可以在使用.pbtflite 构建的应用程序中使用冻结图形的文件。有关如何执行所有这些操作的更多详细信息,您应该查看 Tensorflow 的网站,他们有许多涵盖每个步骤的指南(在这里详细介绍所有这些指南是不可能的)。