【问题标题】:How to train SSD model in Tensorflow Mobile/Lite如何在 Tensorflow Mobile/Lite 中训练 SSD 模型
【发布时间】:2018-10-08 00:14:48
【问题描述】:

我有一个包含 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 模型?

【问题讨论】:

标签: tensorflow tensorflow-lite


【解决方案1】:

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

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

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

【讨论】:

  • 这个链接github.com/tensorflow/models/tree/master/research/… 给了我想要的东西,我说得对吗?一个 SSD(或任何其他多盒检测器)模型,我可以轻松地在自己的数据集上进行训练?
  • “轻松”...嗯.. 它不会是一个“运行它,它会神奇地工作”的过程,但这是一个很好的起点,是的
  • 好吧,我说的轻松是指“得到一些东西,它至少比随机问题更好地解决了问题”。我从未使用过神经网络,但希望 Tensorflow 声称的高级 API 能够让我实现这一目标。
  • Tensorflow 确实是一个高级 API,但你所追求的更高。目前,训练神经网络是半科学半艺术,你会经常碰壁,你需要尝试不同的东西。这就是该领域的情况,毕竟这是一项实时研究:) 如果您是一个完整的初学者,请搜索有关如何为新数据集重新训练 SSD-Mobilenet 的指南/教程(那里有很多,质量各不相同而且我认为TF官方网站上没有)。从那里开始,让它工作,然后用你的数据替换数据并试试你的运气
  • @Lingviston 如果你需要任何 multibox(例如 coco inception 而不是 ssd mobilenet coco),那么这里有很棒的文章和源代码(可以在 Windows 和 Ubuntu 上完成)github.com/EdjeElectronics/…跨度>
猜你喜欢
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 2020-12-11
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
相关资源
最近更新 更多