【问题标题】:How to determine if image is something or not?如何判断图像是不是东西?
【发布时间】:2020-05-21 08:46:27
【问题描述】:

我有一个经过训练的模型,可以确定图像中是否包含猫或狗。我正在使用 SVM 进行分类。我想要一个新模型来确定图像是否是鼠标。它与分类为 2 类的第一个模型不同。这个新模型将只返回 TRUE 或 FALSE。

我认为我不能使用分类器模型,因为我只有 1 个类;鼠标。我不打算在第二个模型中使用第一个模型或与之相关的任何东西。

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: python-3.x machine-learning computer-vision


    【解决方案1】:

    如果您希望能够预测图像是否有鼠标,这仍然是一个分类问题,您需要将图像分为两类 - 鼠标和非鼠标。

    您打算使用的任何分类器都可能需要学习一个边界,以在 n 维输入空间中将鼠标图像与非鼠标图像分开。

    如果您使用神经网络,您可以只使用一个输出神经元,理想情况下,该神经元在图像是鼠标时给出高概率,而在图像中没有鼠标时给出低概率。

    【讨论】:

    • 我对这个神经网络很感兴趣,看起来除了训练分类器模型之外我还想做些什么。我该如何继续构建这个?我不知道下一步该做什么。有什么链接可以开始吗?
    • 我不确定你知道多少。但是,假设您有一个标记数据集(标记为鼠标/非鼠标的图像),您可以开始构建卷积神经网络。这种类型的神经网络最适用于图像。为了获得理论知识,这门课程对我帮助很大 - coursera.org/learn/… 。但是有几个博客有关于图像分类的文章。此外,决定您是否想使用 pytorch 或 tensorflow 或 keras 框架来构建您的 CNN。 Pytorch 和 keras 更容易学习。
    【解决方案2】:



    最好的方法,在研究和工业中似乎有更好结果的方法是使用神经网络,CNN(更准确地说是卷积网络,尽管线性前向层也可以工作)。

    从猫对狗到老鼠对非老鼠,什么都没有改变。仍然是一个分类问题。由于您使用的是 SVM,我假设您没有很多数据,也许可以尝试将迁移学习与 resnet 模型一起使用?它可能会产生良好的效果。

    如果还不够,还可以使用SVM进行分类1-鼠标0-不是鼠标!

    希望对您有所帮助!

    最好的!

    【讨论】:

    • 为了训练模型,我需要准备老鼠的图像并告诉模型这些是老鼠。但我不能只准备第二组不是老鼠的图像,对吗?就像我可以放马、房子、鞋子等任何东西的图像一样。对吧?
    • 你可以为其他动物抓取谷歌图片吗?然后将它们标记为 0 - non rat ?
    • 这是否意味着我可以使用鞋子或钢笔的照片?并将其标记为不是鼠标?我知道你的意思,但不应该有比这更好的吗?我的想法是我的数据集只包含老鼠的图像并训练模型。之后,模型只会给我一个输入图像是鼠标的概率(以 % 为单位),而不是将其分类为鼠标或非鼠标
    【解决方案3】:

    如果您已经有鼠标类,则可以使用监督学习。 当你训练你的模型时,让模型通过定义他这是一个特定的对象是鼠标并定义他什么不是鼠标来了解什么是鼠标......

    使用这种方法,您只需要一个鼠标类来定义您的模型并“教”他什么是鼠标,然后您的模型将分类“鼠标”和“非鼠标”

    【讨论】:

      【解决方案4】:

      我认为您的起源问题中有两个详细的问题

      问题1:

      I don't think I can use a classifier model since I have only 1 class - which is the Mouse
      

      其实你仍然可以对两个标签使用分类器模型,label=0 表示此图像(此实例)是“不是鼠标”,label=1 表示此图像(此实例)是“鼠标”。

      在 label=0 和 label=1 的实例中进行训练后,您的分类器将能够输出是否为鼠标的概率。

      问题2:

      And I don't intend to use the first model or anything related to it in the 2nd model
      

      一般来说,它是transfer learning problem,所以答案是一些预训练可能有助于解决问题而不需要太多实例。

      但是,详细说明您的问题,它使用经过猫和狗训练的模型来帮助预测鼠标,我认为它没有用。

      【讨论】:

        【解决方案5】:

        有两种方法可以解决这个问题:

        1.) 你认为这个问题是一个二分类任务。然后,您使用类中的样本(显示鼠标的图像)和图像未描绘鼠标的样本来训练分类器。这种方法通常有效。为此,您仍然可以训练 SVM,或者训练神经网络。如果您只有少量样本,则在大多数情况下,使用 SVM 或神经网络迁移学习效果很好。请注意,要应用 SVM,您必须定义判别特征(如 HOG)。

        这种方法产生的一个问题是为非鼠标类选择哪些图像。

        2.) 您将问题视为一类分类任务。在这种情况下,您只需要所需类别的样本,并且训练机器学习模型以识别与类别的偏差。

        有一种经典方法,例如一类 SVM,您可以通过在您的类的特征向量周围拟合一个超球面来仅对正样本进行训练。

        如果你想应用神经网络,你可以使用例如 DROCC (https://arxiv.org/abs/2002.12718)

        【讨论】:

          猜你喜欢
          • 2016-10-10
          • 2014-07-07
          • 2013-09-08
          • 2015-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多