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

Multilabel image classification: is it necessary to have training data for each combination of labels?

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

我想通过 示例 我的问题会更清楚:

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

好吧 - 如果你有多个 class 可能 - 你的问题从 multiclass classification(分配一个 class 到图像)到 multiclassification(将多个决策分配给图像)。例如。鉴于您的网络示例输出应该是二维的,每个 class:

都有单独的输出
output = Dense(nb_of_classes, activation='sigmoid')(previous_layer)
model.compile(loss='binary_crossentropy`, ..)

如您所见 - 您实际上是在训练两个独立的 classifier 而不是一个。根据我的经验 - 它应该工作正常,尽管有两个 classes 的例子 - 使训练更有效率。

这是一个示例,说明如何使用 CNN 通过 Keras 对图像进行分类。

https://github.com/wiamsuri/cnn-image-classifier-keras

您可以将需要分类的图片放在images子文件夹中,用于训练和测试CNN模型。