【问题标题】:How do you add new categories and training to a pretrained Inception v3 model in TensorFlow?如何在 TensorFlow 中为预训练的 Inception v3 模型添加新类别和训练?
【发布时间】:2019-01-05 12:05:24
【问题描述】:

我正在尝试使用像 Inception v3 这样的预训练模型(在 2012 ImageNet 数据集上训练)并将其扩展为几个缺失的类别。

我在 Ubuntu 14.04 上使用 CUDA 从源代码构建了 TensorFlow,诸如花上迁移学习之类的示例效果很好。但是,花卉示例剥离了最后一层并删除了所有 1,000 个现有类别,这意味着它现在可以识别 5 种花卉,但不能再识别例如熊猫。 https://www.tensorflow.org/versions/r0.8/how_tos/image_retraining/index.html

如何将 5 个花卉类别添加到 ImageNet 中现有的 1000 个类别中(并为这 5 个新花卉类别添加训练),以便我有 1005 个类别可以将测试图像分类为?换句话说,能够同时识别那些熊猫和向日葵?

我知道一种选择是下载整个 ImageNet 训练集和花卉示例集并从头开始训练,但鉴于我目前的计算能力,这需要很长时间,并且不允许我添加,比如说,未来还有 100 个类别。

我的一个想法是在使用 5 个花卉类别进行重新训练时将参数 fine_tune 设置为 false,这样最后一层就不会被剥离:https://github.com/tensorflow/models/blob/master/inception/README.md#how-to-retrain-a-trained-model-on-the-flowers-data,但我不确定如何继续,并且不确定这是否会产生包含 1,005 个类别的有效模型。感谢您的想法。

【问题讨论】:

    标签: machine-learning tensorflow


    【解决方案1】:

    经过几年的专业学习和深度学习工作,这里有一个更完整的答案:

    将类别添加到现有模型(例如在 Imagenet LSVRC 1000 类数据集上训练的 Inception)的最佳方法是在预训练模型上执行迁移学习。

    如果您只是想使模型适应您自己的数据集(例如 100 种不同类型的汽车),只需按照无数在线迁移学习教程(包括 Tensorflow 的官方教程)执行再训练/微调。

    虽然生成的模型可能具有良好的性能,但请记住,教程分类器代码高度未优化(可能是有意的),您可以通过部署到生产环境或仅改进其代码将性能提高数倍。

    但是,如果您尝试构建一个包含默认 LSVRC 数据集(1000 个日常图像类别)的通用分类器并将其扩展为包含您自己的其他类别,则您需要访问现有的1000 个 LSVRC 图像并将您自己的数据集附加到该集。您可以在线下载 Imagenet 数据集,但随着时间的推移,访问变得越来越多。在许多情况下,这些图像也非常过时(查看计算机或手机的图像,了解一下记忆通道)。

    获得 LSVRC 数据集后,执行上述迁移学习,但包括 1000 个默认类别以及您自己的图像。对于您自己的图像,通常建议每个类别至少有 100 个合适的图像(越多越好),如果启用失真,您可以获得更好的结果(但这会大大增加再训练时间,特别是如果您没有启用 GPU,因为瓶颈文件不能为每个失真重复使用;我个人认为这很蹩脚,没有理由不能将失真也缓存为瓶颈文件,但这是一个不同的讨论,可以手动添加到您的代码中)。

    使用这些方法并结合错误分析,我们已经针对 4000 多个类别训练了通用分类器以达到最先进的准确性,并将它们部署在数千万张图像上。此后,我们转向专有模型设计以克服现有模型限制,但迁移学习是获得良好结果的一种非常合理的方式,甚至通过 BERT 和其他设计进入自然语言处理。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      很遗憾,您无法向现有图表添加类别;您基本上必须保存一个检查点并从该检查点开始训练该图。

      【讨论】:

      • 我们如何保存检查点并从该检查点开始训练该图?
      猜你喜欢
      • 2017-03-28
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      相关资源
      最近更新 更多