Neural network 在单一类别数据上培训多标签CNN是否会妨碍准确性?

Neural network 在单一类别数据上培训多标签CNN是否会妨碍准确性?,neural-network,deep-learning,keras,training-data,imagenet,Neural Network,Deep Learning,Keras,Training Data,Imagenet,我为多标签分类构建了一个CNN,即预测每张图像的多个标签 我注意到ImageNet和许多其他数据集实际上每个标签都包含一组示例。他们构造数据的方式是,给定一个标签,就有一个该标签的示例列表。即: 标签->图像列表。另外,我使用的Keras支持每个标签一个文件夹的数据结构,每个文件夹中都有一个图像列表作为标签的示例 我关心的问题是,许多图像实际上可能有多个标签。例如,如果我对常规对象进行分类,一个名为“Cars”的文件夹将包含汽车图像,但一些汽车图像中也包含人(这可能会妨碍类“people”的结果

我为多标签分类构建了一个CNN,即预测每张图像的多个标签

我注意到ImageNet和许多其他数据集实际上每个标签都包含一组示例。他们构造数据的方式是,给定一个标签,就有一个该标签的示例列表。即: 标签->图像列表。另外,我使用的Keras支持每个标签一个文件夹的数据结构,每个文件夹中都有一个图像列表作为标签的示例

我关心的问题是,许多图像实际上可能有多个标签。例如,如果我对常规对象进行分类,一个名为“Cars”的文件夹将包含汽车图像,但一些汽车图像中也包含人(这可能会妨碍类“people”的结果)

我的第一个问题: 1) 这是否会降低网络的潜在准确性(即,地面实况中每张图像的单个标签)

如果是这种情况,我想改为创建以下表单的数据集: image1,{其标签列表} image2,{其标签列表} 等

2) 这样的结构会产生更好的结果吗


3) 关于这一点,什么是好的学术论文?

这取决于你如何衡量准确性。具体而言,这将取决于您使用的成本函数。假设您使用的是a,您将获得类概率作为输出,即输出节点c将给出图像显示类型为c的对象的概率,这样所有概率相加为一。因此,您可以使用一个标签对其进行训练,在这种情况下,每个图像只使用一个“正确”标签,并隐式训练您的网络,以最大化正确标签的预测概率。或者,您可以构造一个成本函数,使多个或所有标签的预测概率最大化。当您使用模型预测单个最合适的标签时,第二种方法可能会导致性能略有下降,反之亦然


人们在实践中所做的是第一种方法,即在一个最合适的标签上进行培训。由于您的网络仍然输出每个类别的概率,您可以检查“错误”的分类图像,并检查网络的预测是否至少在有效标签中。这是开始的标准。另外,请查看年度网站。

您描述的问题是一个非常著名的多分类问题。如果要将每个标签指定给给定的图像,则需要分别为每个标签做出决定,而不是从预定义的集合中指定标签

keras
设置的情况下,您可以使用
sigmoid
激活(使用
binary\u crossentopy
对模型进行训练)或设置多个输出(如果每个标签有多个决策,如预测一个类和一些其他值,则建议使用此设置)每节课

回答您的问题:

  • 根据我的经验(并且知道通常的损失函数是如何工作的),如果你只为一个类设置培训-在理想情况下,这将导致分配50%-50%(在两个基本真相类的情况下),33%-33%-33%(在三个基本真相类的情况下),如您所见,这可能会产生问题,例如设置分类阈值。我个人会选择每类单独输出
    sigmoid
    的策略-记住-拥有多个图像信息通常会导致更好的模型性能

  • 正如我前面提到的-提供多个类可能会有所帮助,因为您正在提供一个隐式类关联,并在分配多个类的情况下解决类冲突

  • 关于你的案子你有一份很好的报告


  • 你看过答案了吗?是的,并在下面写下后续问题…谢谢你的回答,我很感激。在我的例子中,这是一个多标签问题,许多标签共存于同一个图像中。这意味着我不能将概率相加为1,我希望每个标签自身映射到0到1的置信度分数/概率(即,每幅图像0到1,而不是总和)。你觉得怎么样?谢谢你的回答。我读了你的答案和论文。我有几个后续问题:1。本标准中是否建议采用该方法?我在参考文献中找到了一整张纸,上面有不同的建议来解决这个问题。。虽然看起来他们彼此很不一样。2.您认为有多大程度的多标签训练数据才能获得好的结果?我的意思是,如果我像你在单类数据上发送的论文中建议的那样训练模型,而不是在多标签数据上训练模型,那么精确度的增量是多少?