任务是确定图像属于 3 个类中的哪一个,或者不属于。

我收到了一个现成的模型。具有 ImageNet 权重的 EfficientNet B4 已应用迁移学习来识别 4 个类别:3 个目标类别和第 4 个“无”。后者接受了不包含任何目标对象的随机图像示例的训练。

问题是这是否是正确的方法——是否需要第四堂课?

我的直觉是 net 应该只在 3 个目标类上进行训练。如果输出概率保持在某个阈值(90%?)以下,图像应被视为不包含任何目标对象。我对吗?

最佳答案

由于 softmax 函数的性质和网络训练的方式,您需要第 4 类。

让我们看一个具体的例子:你训练你的网络来区分苹果、橙子和香蕉。然而,你不知何故得到了李子的照片。

乍一看,您可能会感到惊讶,但您需要数据集中的另一个类。不能保证使用阈值会帮助您消除其他类。

您可能会遇到以下两种情况:

  • 假设您正在对未知的 N+1 类进行测试,那么对于未知类,输出概率保证为 1/N。
  • 某个阈值(就像您假设的那样)
    假设以下情况:
  • 如果你有一个苹果看起来像一个苹果的情况怎么办?
    橙色,并且您的模型正确预测了 40% 的苹果、30% 的橙色、30%
    香蕉,但是由于您应用了正确识别的阈值
    苹果(True Positive)被淘汰了?一个简单的案例,您消除了网络的良好输出
  • 您仍然可以将 91% 的分配分配给一个类,尽管新的“水果”到达不是您的数据集的一部分;这是由于固有的计算和 softmax 的工作方式。

  • 个人经验:我曾经训练过一个网络来区分多种类型的交通标志。出于纯粹的好奇,我举了一个客厅椅子的例子。我期待和你一样的事情(阈值),但令我惊讶的是,它是 85% 的“ yield 方式”。

    关于tensorflow - 图像分类迁移学习需要负例吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60340692/

    10-12 16:42