图像分类迁移学习需要负样本吗?

Posted

技术标签:

【中文标题】图像分类迁移学习需要负样本吗?【英文标题】:Does image classification transfer learning require negative examples? 【发布时间】:2020-06-06 00:05:37 【问题描述】:

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

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

问题是它是否正确——是否需要第 4 课?

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

【问题讨论】:

【参考方案1】:

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

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

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

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

    假设您正在对未知的 N+1 类进行测试,则输出概率保证为未知类的 1/N。 某个阈值(如您假设的那样)超过该阈值

假设以下情况:

    如果您遇到一个苹果看起来真的很像 橙色,并且您的模型正确预测了 40% 的苹果、30% 的橙色、30% 香蕉,但是由于您应用了正确识别的阈值 苹果(真阳性)被淘汰了?消除网络良好输出的简单案例 您仍然可以将 91% 分配给某个类,尽管新的“水果”到达不是您的数据集的一部分;这是由于固有的计算和 softmax 的工作方式。

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

【讨论】:

感谢分享您的经验!选择“负面”图像进行训练似乎非常重要——不仅仅是随机图像? ImageNet,最初用于训练网络,正如我在某处所读到的,它代表了整个“图像世界”的“知识”。因此添加负面示例不会带来任何全新的东西? 嗯,主要区别在于通过迁移学习,大量预训练的特征被迁移,因此你的学习问题被简化了很多。此外,您还可以通过迁移学习获得更好的结果/更高的准确性。但是,这并不意味着添加负样本不会带来重要的变化:您仍然需要在自己的数据集(在那些 n 个类上)上训练问题。同样,您可能只是希望,由于数据集庞大且多样化,因此如果转移了很多特征,它将消除任何可能的问题(splitthecomment) 这个想法是它不会消除任何问题,但它会缓解你想要解决的实际问题(通过迁移学习,训练进展更快,你也可以获得更好的结果)。最后,如果您想区分苹果、橙子、李子和“其他水果”,您仍然需要创建名为“other_fruit”的第四个类,其中包含许多水果的大量示例。

以上是关于图像分类迁移学习需要负样本吗?的主要内容,如果未能解决你的问题,请参考以下文章

图像识别基于Matlab的迁移学习的图像分类案例

8.6 归纳式迁移学习

使用迁移学习的单类数据集进行图像分类

使用迁移学习对单类数据集进行图像分类[关闭]

迁移学习是不是需要在 0-255 之间重新缩放图像

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换