我训练有素的图像分类器模型对所有不在类别中的图像进行分类

时间:2019-03-31 12:57:30

标签: java android python-3.x tensorflow

我已经训练了一种识别动物的模型,并且该模型正在运行,已部署到android应用程序中。我正在寻找一种解决方案,以使图像分类器仅对经过训练的类别进行分类。我不确定是通过模型训练还是添加任何代码来解决此问题。

例如,如果发送了杯子的图片进行分类,则结果显示为“狗”或其他动物名称。如何仅对给定类别进行分类,除此以外将其显示为“非动物”。

我正在使用Tensorflow 1.12,MobileNet模型

2 个答案:

答案 0 :(得分:1)

简单直接的解决方案是创建其他二进制分类器,该分类器将对动物和其他所有动物进行分类。因此,第一步将是对给定图片是否为动物进行分类。如果第一步成功,则第二步是对动物进行分类。

您正在使用的当前ML框架的局限性之一是无法推理出功能的不确定性。从数据集中提取的特征通常作为点估计值给出,它们不能捕获模型对估计值充满信心的程度。要量化不确定性,您需要概率贝叶斯模型(例如,高斯过程)。这样的模型更为复杂,因为假定模型的权重是从某种概率分布中得出的。输入y*的输出x*将是具有一定均值和方差的概率分布。高方差表明该模型的预测不确定。

有一些很棒的文献可以让您详细了解它:

  1. Uncertainty in Deep Learning,作者Yarin Gal
  2. 卡尔·爱德华·拉斯穆森和克里斯托弗·威廉姆斯的
  3. Gaussian Processes for Machine Learning

答案 1 :(得分:0)

如何检查概率分数?即使杯子被归类为狗,它的得分也会降低。因此您可以设置阈值。如果概率得分>阈值,则将其显示为动物,否则显示为动物。