多标签图像分类:每个标签组合是否需要有训练数据?

数据挖掘 机器学习 神经网络 深度学习 喀拉斯 多标签分类
2021-09-15 05:08:04

我想为使用 keras 的多标签图像分类任务训练 CNN。但是我不确定如何准备我的培训数据。更具体地说,我想知道我是否需要训练显示两个或多个标签组合的图像,或者在单个标签上训练网络是否足够,然后它将能够检测图像中的多个标签。

我想我的问题通过一个例子变得更加清晰:

假设我正在使用狗与猫分类数据集,并且我想构建一个能够将图像分类为狗或猫或在一张图像中同时看到两种动物的模型。在这种情况下,我是否需要使用显示猫、狗和同时显示在一张图像中的图像来训练模型,还是仅使用仅显示猫和狗的训练图像就足够了?

2个回答

这两种情况都有效。你必须考虑的一点是你不应该Softmax在最后一层使用激活,因为你的类有交集并且它们不是互斥的。您应该使用Sigmoid激活函数,并且应该有两个,每个都可以是 1 或 0 作为输出向量。考虑到在这种情况下,您不应该将每个激活与另一个进行比较。每一个都显示了相应对象猫或狗的存在概率。

对于您的情况,我建议您提供两者都没有的图像,并且在某些情况下两者都有。前者更为重要。因为如果你不提供负面标签,不存在,网络总是试图无中生有。意味着网络总是试图将类似的模式标记为猫或狗。

您需要来自两个标签的图像,否则您的 CNN 将预测任何图像作为您用于训练的标签。除非您为所有标签使用相同数量的图像,否则该模型通常会出现偏差。您可以使用数据增强来生成更多图像,以便所有标签都包含均匀分布。