多类+负类图像分类策略

数据挖掘 分类 图像分类 美国有线电视新闻网 异常检测
2021-09-24 03:59:42

我在处理过的实际问题中看到了一个反复出现的主题,问题看起来像“构建一个识别 A、B 和 C 类的图像分类器,但如果输入不是这些类,则不识别它”。这不时出现在其他问题中,特别是这里这里这里但是,我很难找到一个通用的解决方案来解决这个似乎很常见的问题。

到目前为止,我看到的方法似乎大致分为两类:

  1. 将其视为不平衡的类别问题。数据集平衡、欠采样/过采样和类权重的常用技巧都适用于此。然而,“其他”类往往是广泛而多样的,本质上使 CNN 尝试对网络中“其他”的所有信息进行编码。虽然这对于某些问题“足够好”,但我看到它表现不佳,通常它看起来像是圆孔中的方形钉。
  2. 基于一类分类/异常值检测的方法。特别是,siamese 和triplet 网络的使用与尝试更清晰地分离图像特征向量的思路相似。我看到的大多数研究都倾向于关注图像相似性搜索或验证,而不是直接应用于多类+负类问题。然而,对比或三元组损失的概念将更严格定义的类与其他所有类分开似乎是一种更合理的方法。也许像训练特征向量然后使用一类SVM或类似的东西?

是否有针对这种情况的一般策略,例如微调 CNN 以进行正常分类?似乎存在一些与微调非常相似的通用解决方案以及特征向量层的某种对比损失,但我只是不知道。

1个回答

机器学习中没有通用的策略。此外,研究分散在多个领域,因此很难理解“案例的最佳策略”。您可以通过多种方式解决单个问题。回到多类加上负类分类问题,这是您可以遵循的“多种方法”之一:

层次分类:这仍然是一个悬而未决的问题。顾名思义,您可以在从根到内部节点到叶节点的多个级别上执行分类(类似于树或 DAG 结构)。例如。给定一个混合了一些字母 (a,b,c....z) 的数字数据集 (0,1,2,3...9)。在较高级别上,您需要首先对其是否为数字进行分类,即元类,如果是数字,则执行较低级别的分类任务以识别正确的数字。

根据您对不同层次结构级别的标签/组的了解,有不同的变体。例如。如果您没有预定义的元类,那么您可能必须在最终分类之前在更高级别执行相似类的聚类。

此外,您可能希望调整损失函数中的权重,以便在任何分类级别有效地识别特定类。

PS 我的知识在神经网络环境中是有限的。肯定会有更多针对他们的策略。