10

两个问题:

1) 有谁知道我是否可以向预训练的 Inception-v3 模型添加新的图像类?例如,我想在众多国旗上训练 TensorFlow,但我需要确保我仍然可以识别来自 ImageNet 层次结构的图像。我意识到有一种方法可以擦除 Inception 的顶层并在我的类上完全重新训练模型,但这非常有限且耗时。

2)另外,有没有办法输出包含图像接收的标签的整个层次结构?我希望不仅能够具体看到 Inception 将图像标记为什么,而且我希望看到 ImageNet 中所有更广泛的“合成集”。例如,我对“动物/驯养动物/狗/贵宾犬/玩具贵宾犬”感兴趣,而不仅仅是看到输出“玩具贵宾犬”。

非常感谢任何回应。

4

3 回答 3

4
  1. 这是相关的问题: 如何让现有模型识别其他类?

以下是一些解释: https ://github.com/tensorflow/models/issues/2510 。

因此,如果有模型检查点,就有可能以某种方式微调模型。这是带有微调示例的回购链接: https ://github.com/tensorflow/models/tree/master/research/slim/

  1. 可以获得类的节点名称和人类可读的 slug,因此您可以按类别手动链接节点。但这很耗时。
于 2017-12-24T15:38:10.670 回答
4

1)输出层是softmax,这意味着它有预定义的神经元数量,每个神经元都是为一个特定的类定义的。从技术上讲,您可以执行网络手术,以便在输出层中多一个神经元来代表您的新类。但是你必须对你的网络进行额外的训练,以便它更新它的所有权重,以便考虑新的类。坏消息 - 可能需要一段时间,因为更新会影响整个网络并且网络是巨大的。好消息 - 预先训练的现有网络的这种变化将比从头开始学习一切更快。

2)是什么让你认为这种等级制度存在?您无法确定有关数据的内部表示的任何信息。当然,您可以检查每个功能中神经元的激活,甚至可视化它们……但是您必须尝试自己理解这些激活的含义。并且您可能找不到任何您希望看到的层次结构。综上所述 - 了解 ANN 如何在内部表示数据并非易事。实际上 - 非常困难的一个。

建议进一步阅读: https ://github.com/tensorflow/models/tree/master/inception

请注意文档的这一部分- 它与您的 #1 密切相关

于 2016-07-07T14:05:03.120 回答
2

是的,你可以,我最近做了一些非常相似的事情,就我而言,它是致病植物叶子与健康植物叶子。v3 inception 已经训练好了,你要做的是迁移学习。迁移学习是一种技术,它通过为 ImageNet 等一组类别采用经过全面训练的模型,并从现有权重为新类别重新训练,从而缩短了很多这项工作。

链接:tensorflow.org 上的图像再训练

视频来源:YouTube 视频教程,Hvass Laboratories 有一些很棒的视频资源来纠正您的问题。

于 2017-12-24T15:48:44.420 回答