Tensorflow 我的CNN分类器对随机图像的预测是错误的

Tensorflow 我的CNN分类器对随机图像的预测是错误的,tensorflow,classification,conv-neural-network,Tensorflow,Classification,Conv Neural Network,我用3种数据类别(身份证、护照、账单)训练了我的CNN分类器(使用tensorflow)。 当我用属于三个类别之一的图像进行测试时,它给出了正确的预测。然而,当我用错误的图像(例如汽车图像)测试它时,它会不断给我预测(即,它预测汽车属于身份证类别) 有没有办法让它显示错误消息而不是给出错误的预测?最简单的方法是只为其他三个类别添加第四个类别,并使用各种完全随机的照片对其进行训练。最简单的方法是只为其他三个类别之外的任何类别添加第四个类别并训练它使用各种完全随机的照片。这应该以不同的方式处理。这被

我用3种数据类别(身份证、护照、账单)训练了我的CNN分类器(使用tensorflow)。
当我用属于三个类别之一的图像进行测试时,它给出了正确的预测。然而,当我用错误的图像(例如汽车图像)测试它时,它会不断给我预测(即,它预测汽车属于身份证类别)


有没有办法让它显示错误消息而不是给出错误的预测?

最简单的方法是只为其他三个类别添加第四个类别,并使用各种完全随机的照片对其进行训练。

最简单的方法是只为其他三个类别之外的任何类别添加第四个类别并训练它使用各种完全随机的照片。

这应该以不同的方式处理。这被称为开集识别问题。你可以在谷歌上找到更多关于它的信息,但基本上是这样的: 你不能在每一个可以想象的类上训练你的分类器。它总是会遇到它不熟悉的、以前从未见过的其他类

有几种解决方案,我将从中挑出三种:

  • 独立二进制分类器-您可以构建独立的二进制分类器来识别图像,并根据票据、护照或身份证是否在图像中,将其分为两类。如果是,它应该让您已经建立的算法来处理图像,并将其分为三类之一。如果第一个分类器表示图像中有其他对象,您可以立即丢弃该图像,因为它不是bill/passport/ID的图像

  • 阈值化。在身份证出现在图像上的情况下,身份证的概率很高,而票据和护照的概率相当低。在图像是其他东西的情况下(例如汽车),所有3类的概率很可能大致相同。换句话说,这两个类的概率都不突出。在这种情况下,您可以从生成的类中选择最高的概率,并将输出类设置为该概率的类,而不管概率值是0.4或类似的值。要解决这个问题,您可以将阈值设置为0.7,如果两个概率都不超过该阈值,那么图片上还有其他内容(不是身份证、护照或账单)

  • 创建第四个类:未知。如果选择此选项,则应将少数其他图像添加到数据集中,并将其标记为未知。然后训练分类器,看看结果如何


  • 我推荐1或2个。希望有帮助:)

    这应该以不同的方式解决。这被称为开集识别问题。你可以在谷歌上找到更多关于它的信息,但基本上是这样的: 你不能在每一个可以想象的类上训练你的分类器。它总是会遇到它不熟悉的、以前从未见过的其他类

    有几种解决方案,我将从中挑出三种:

  • 独立二进制分类器-您可以构建独立的二进制分类器来识别图像,并根据票据、护照或身份证是否在图像中,将其分为两类。如果是,它应该让您已经建立的算法来处理图像,并将其分为三类之一。如果第一个分类器表示图像中有其他对象,您可以立即丢弃该图像,因为它不是bill/passport/ID的图像

  • 阈值化。在身份证出现在图像上的情况下,身份证的概率很高,而票据和护照的概率相当低。在图像是其他东西的情况下(例如汽车),所有3类的概率很可能大致相同。换句话说,这两个类的概率都不突出。在这种情况下,您可以从生成的类中选择最高的概率,并将输出类设置为该概率的类,而不管概率值是0.4或类似的值。要解决这个问题,您可以将阈值设置为0.7,如果两个概率都不超过该阈值,那么图片上还有其他内容(不是身份证、护照或账单)

  • 创建第四个类:未知。如果选择此选项,则应将少数其他图像添加到数据集中,并将其标记为未知。然后训练分类器,看看结果如何


  • 我推荐1或2个。希望有帮助:)

    这不是真正的编程问题,它的方式更复杂。您需要的是分布外检测,分类器可以告诉您样本不在训练集中

    最近有一些关于这个问题的研究论文,如和


    通常情况下,您不能使用未经过专门培训的模型,例如,softmax分类器产生的概率没有为此目的进行校准,因此对这些概率进行阈值化根本不起作用。

    这实际上不是一个编程问题,其方式更为复杂。您需要的是分布外检测,分类器可以告诉您样本不在训练集中

    最近有一些关于这个问题的研究论文,如和


    一般来说,您不能使用未经过专门培训的模型,例如,softmax分类器产生的概率没有为此目的进行校准,因此对这些概率进行阈值化根本不起作用。

    不太可能,这更像是一个研究问题,而不是编程问题。更准确地说,您可以使用诸如检测的技术