我的CNN分类器对随机图像给出了错误的预测

sin*_*ium 2 classification conv-neural-network tensorflow

我使用3个数据类别(身份证,护照,账单)训练了CNN分类器(使用tensorflow)。
当我用属于3类之一的图像进行测试时,它给出了正确的预测。但是,当我用错误的图像(例如汽车图像)对其进行测试时,它会一直给我预测(即,它预测该汽车属于ID卡类别)。

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

Nov*_*vak 6

这应该以不同的方式解决。这就是所谓的开放集识别问题。您可以在Google上搜索并找到更多有关它的信息,但基本上就是这样:您无法在所有可以想象的课程上训练分类器。它总是会遇到其他一些不熟悉并且以前从未见过的类。

有几种解决方案,我将从中选择其中三种:

  1. 单独的二进制分类器 -您可以构建单独的二进制分类器,以识别图像并将其分类为两个类别,具体取决于账单,护照或身份证是否在图像中。如果是这样,则应让您已经构建的算法来处理图像并将其分类为3类之一。如果第一个分类器说图像中有其他对象,则可以立即丢弃该图像,因为它不是票据/护照/身份证的图像。

  2. 门槛。在图像上有ID的情况下,ID的概率很高,票据和护照的概率也很低。在图像是其他物体(例如汽车)的情况下,所有三个类别的概率极有可能相同。换句话说,这两个类别中的任何一个都不是真正突出的可能性。在这种情况下,无论概率值是0.4还是类似的值,您都从生成的概率中选择最高的概率并将输出类别设置为该概率的类别。要解决此问题,您可以将阈值设置为0.7,例如,如果两个概率均未超过该阈值,则图片上还有其他内容(不是身份证,护照或账单)。

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

我建议1或2。希望对您有所帮助:)