我想使用 keras 训练 CNN 以执行多标签图像分类任务。但是我不确定如何准备我的训练数据。更具体地说,我想知道我是否需要训练显示两个或多个标签组合的图像,或者是否足以在单个标签上训练网络,然后它将能够检测图像中的多个标签。
我认为通过示例我的问题会变得更清楚:
假设我正在使用狗与猫分类数据集,并且我想构建一个模型,能够将图像分类为狗或猫,或者在一张图像中同时看到这两种动物。在这种情况下,我是否需要使用显示猫、狗的图像以及在一张图像中同时显示这两种图像的图像来训练模型,还是仅使用仅显示猫和狗的训练图像就足够了?
最佳答案
好吧 - 在可能有多个类的情况下 - 你的问题从多类分类(将一个类分配给图像)变为多分类(将多个决策分配给图像)。例如。给定您的网络的示例输出应该是二维的,每个类都有单独的输出:
output = Dense(nb_of_classes, activation='sigmoid')(previous_layer)
model.compile(loss='binary_crossentropy`, ..)
正如您所见,您实际上是在训练两个单独的分类器,而不是一个。根据我的经验 - 尽管有两个类都存在的示例,但它应该可以正常工作 - 使培训更加高效。
关于machine-learning - 多标签图像分类: is it necessary to have training data for each combination of labels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48367277/