图像识别遇到未知物体怎么办?

Posted PyVision

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像识别遇到未知物体怎么办?相关的知识,希望对你有一定的参考价值。

导语:把不在标签类别内的未知物体识别成已知类别,是图像识别一个头痛的问题,怎么解决呢?

几天前,我收到了 Plant Village 的一个问题,Plant Village 是一个和我合作的团队,他们正在开发一个 app 。它可以检测植物的病害,当它指向叶子的时候可以得到很好的结果,但是如果你把它指向电脑键盘,它会认为这是受损的作物。

对于计算机视觉研究人员来说,这个结果并不令人惊讶,但对于大多数其他人来说,这令人震惊,所以我想解释为什么会发生这种情况,以及我们能做些什么。

作为人类,我们已经习惯了对周围世界中的一切进行分类,我们自然而然地希望机器具有同样的能力。大多数模型只能识别非常有限的目标,例如原始 ImageNet 竞赛的1000个类别。至关重要的是,训练过程假设模型看到的每个例子都是这些目标中的一个,并且预测必须在这个集合中。模型没有说“我不知道”的选择,也没有训练数据来帮助它学习这种反应。这是一种在研究环境中有意义的简化,但是当我们试图在现实世界中使用模型时会引起问题。

当我在 Jetpac 的时候,我们很难说服人们相信这个具有开创性的 AlexNet 模型是一个巨大的突破,因为每次我们交给他们一个运行网络的演示手机,他们都会把手机指向自己的脸,它会预测出类似“氧气面罩”或“安全带”之类的东西。这是因为 ImageNet 的竞赛类别没有包括任何人的标签,但是大多数带有面具和安全带标签的照片都包含人脸。另一个令人尴尬的错误是,当他们把它指向一个盘子时,它会预测“马桶座圈” !这是因为在最初的分类中没有盘子,而且在外观上最接近的白色圆形物体是一个马桶。

我认为这是“开放世界” vs. “封闭世界”的问题。模型被训练和评估,假设只有一个有限的宇宙的物体呈现给他们,但一旦在实验室外面使用它,假设就被打破了,用户根据任意摆在他们面前的物体的表现来判断模型效果,而不管这个物体是否是在训练集中。

那么,解决方案是什么呢?

不幸的是,我不知道有什么简单的方法可以解决这个问题,但是我看到了一些有用的策略。最显然的是在训练数据中添加一个“未知”类。坏消息是,这会带来另外一系列的问题。

  • 什么样本应该放进这个未知类?可能的自然图像数量几乎无限,那么你如何选择包括哪一个呢?
  • 在未知类中,每种不同类型的目标需要多少个?
  • 对于那些看起来与你关心的类非常相似的未知目标,你应该怎么做?例如,添加一个不在 ImageNet 1000中,但看起来几乎相同的狗品种,可能会迫使大量本来可能是正确的匹配到未知的类。
  • 你的训练数据中未知类的样本的比例应该是多少?

最后一点实际上涉及到一个更大的问题。你从图像分类网络得到的预测值不是概率。他们假设看到某个特定类的几率等于该类在训练数据中出现的频率。如果你试图使用包含亚马逊丛林中的企鹅的动物分类器,你会遇到这个问题,因为(大概)所有的常见的企鹅都是假阳性。即使是在美国的城市里,在 ImageNet 的训练数据中出现罕见品种的频率也远远高于在狗公园里出现的频率,所以它们会被过度描述为假阳性。通常的解决方案是找出你在生产中将要面对的情况下的先验概率,然后使用这些数据将校准值应用到网络的输出中,从而得到更接近真实概率的结果。

有助于解决实际应用程序中总的问题的主要策略是,将模型的使用做限制,把什么物体将出现的假设与训练数据匹配。一个简单的方法就是通过产品设计。你可以创建一个用户界面,让用户在运行分类器之前将他们的设备集中在感兴趣的对象上,就像 app 要求你给支票或其他文档拍照时一样。

稍微复杂一点,你可以编写一个单独的图像分类器,它试图识别主图像分类器不适合的条件。这与添加单个“未知”类不同,因为它更像是一个级联(cascade),或者是细节模型之前的一个过滤器。在农作物病害案例中,操作环境在视觉上是非常清晰的,因此可以训练一个模型来区分叶子和随机选择的其他照片。足够的相似性让门控(gating)模型应该至少能够区分这是一个不支持的场景。这个门控模型将在完整图像分类器之前运行,如果它没有检测到看起来像是植物的东西,它将提前退出,并弹出一个错误消息,表明没有发现作物。

要求你拍信用卡图像或执行其他类型 OCR 的应用程序通常会结合使用屏幕上的指示和模型来检测模糊或欠对齐,以引导用户拍摄可以成功处理的照片,一个“有树叶吗? ”模型是这个界面模式的简单版本。

这可能不是一组非常令人满意的答案,但它们反映了一旦你把机器学习超出了受限的研究问题,用户期望的混乱。有很多常识和外部知识可以帮助人们识别一个物体,而我们在传统的图像分类任务中并没有捕捉到这些东西。为了得到满足用户期望的结果,我们必须围绕我们的模型设计一个完整的系统,这个系统理解他们将要部署到的世界,并且根据模型输出以外的东西做出明智的决定。

来源:

https://petewarden.com/2018/07/06/what-image-classifiers-can-do-about-unknown-objects/

以上是关于图像识别遇到未知物体怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

什么是AI图像识别?它如何用于物体检测?

什么是AI图像识别?它如何用于物体检测?

CNN如何识别一幅图像中的物体

人工智能系列(14)——图像识别

7.图像识别后的目标区域的绘制(基本图形的绘制) --- OpenCV从零开始到图像(人脸 + 物体)识别系列

对二值化图像的选定区域内的目标彩图的物体颜色进行识别(RGB)并输出,用opencv怎么编写源代码?