【问题标题】:Obtain negative results from a machine learning algorithm从机器学习算法中获得负面结果
【发布时间】:2017-02-12 12:09:21
【问题描述】:

我有一组特定对象的图像。我想找出其中一些是否存在机器学习算法异常。例如,如果我有很多眼镜的照片,我想找出其中一个是坏的还是有异常的东西。像这样的:

好!!

糟糕!!

(显然我会用同款眼镜……)

问题是我不知道所有负面情况,所以,对于训练,我只有正面图像。

换句话说,我想要一种算法来识别图像是否与数据集不同。你有什么建议吗?

特别是有没有办法使用卷积神经网络?

【问题讨论】:

  • 你只能在你遇到的负面情况下训练它,然后在另一组上进行测试,看看你的表现如何。你错误地认为一个人必须有一套详尽的训练才能继续进行。这就是重点:训练神经网络,然后根据它获得的实时数据对其进行更新。
  • 你可以得到轮廓(如果玻璃与背景清晰可辨),并检查轮廓是否凸出带有凸包或类似的东西。轮廓与其凸包之间的差异可能是衡量碎玻璃的好方法(取决于图像)。在这种情况下不需要学习。
  • 我的问题有点笼统:通常机器学习算法会标记已知类别中的图像,每个类别都有不同的分数。有没有办法 - 例如,如果我只有一种类型的对象 - 来获取测试对象是否与已知类别的对象相似或不同? (类似于人脸检测:如果图像中没有人脸,我的结果是否定的)。

标签: opencv machine-learning tensorflow


【解决方案1】:

您要查找的内容通常称为异常、异常值或新奇检测。你有很多关于你的数据应该是什么样子的例子,并且你想知道什么时候看起来不像你的数据。

解决此问题的好方法,因为您使用的是图像,所以您可以获得feature vectorized version using a pre-trained CNN on image net。然后,您可以在该功能集上使用异常检测器。 isolation forest 应该更容易上手。

【讨论】:

    【解决方案2】:

    这是一个典型的分类问题。我不明白你为什么需要 CNN 来做这个......

    1. 我的建议是建立/训练一个分类模型 仅包含 GOOD 玻璃图像。在这里你可能会 有各种完好的规则形状的眼镜。
    2. 如果模型遇到 GOOD 图像以外的任何图像,它会 将这些分类为 BAD 图像。这种所谓的BAD图像可能 包括具有不规则形状的破裂/破碎的玻璃。

    【讨论】:

    • 谢谢,这可能是一个很好的解决方案。你能分享一个分类模型的例子吗?
    • @DavideBiraghi 抱歉,目前没有。但谷歌可以在这方面提供帮助:)
    【解决方案3】:

    另一个可行的选择是使用自动编码器。 自动编码器是具有瓶颈架构的无监督神经网络,它试图重建自己的输入。 我们可以用优质眼镜的例子训练一个深度卷积自动编码器,以便它专门用于重建这些类型的图像。你不需要戴着坏眼镜训练自动编码器。

    因此,我希望经过训练的自动编码器对好眼镜产生低错误率,而对坏眼镜产生高错误率。 MSE可以根据重构值与原始值(像素)之间的差异来衡量错误率。

    从经过训练的自动编码器中,您可以绘制好眼镜与坏眼镜的 MSE,以帮助您定义正确的阈值。或者你也可以尝试统计阈值,例如:avg + 2*std、median + 2*MAD 等。

    • 自动编码器详细信息:

    http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/

    • 图像深度自动编码器:

    https://cds.cern.ch/record/2209085/files/Outlier%20detection%20using%20autoencoders.%20Olga%20Lyudchick%20(NMS).pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-01
      • 2020-02-21
      • 2011-01-08
      • 1970-01-01
      • 2014-11-18
      • 2017-02-01
      • 2011-12-21
      • 2012-03-14
      相关资源
      最近更新 更多