如何在类和子类中对图像进行分类?

数据挖掘 机器学习 图像分类
2022-02-05 15:12:37

我是机器学习的初学者,我有一种情况,图像需要首先分类为超类,然后是子类。例如,我有一组水果图像,包含芒果、香蕉、桃子、苹果等的图像。然后每​​个水果要么是新鲜的,要么是腐烂的。我有训练集,其中包含每种水果类型的腐烂和新鲜水果的图像。因此,对于测试图像,我需要分类它是哪种水果(芒果、香蕉等),然后是新鲜的还是腐烂的。我想知道如何解决这类问题

2个回答

简单的解决方案

有一个分类器可以对所有组合进行分类:

  • 新鲜香蕉
  • 烂香蕉
  • 新鲜芒果
  • 烂芒果
  • ...

好的解决方案

或者拥有一个具有多个输出的网络。例如,参见 Marvin Teichmann 的硕士论文。 https://arxiv.org/abs/1612.07695

所以网络的一条路径是:

  • 新鲜与烂

网络的另一条路径是

  • 香蕉 vs 芒果 vs ...

与简单解决方案的不同之处在于您可以为案例提供概率,例如,对于基本事实“新鲜香蕉”,您可能会说 99% 香蕉但只有 42% 新鲜。

显而易见的解决方案

这个不应该做:有多个分类器

我想知道如何解决这类问题

是的,这绝对是可能的......(可能被称为Classification + Localization

在最后将conv-nets分成2个平行拱形,之前我们通常在特征提取之后添加一个单密集层,这里你将分成两部分......(附上的图片会很清楚)

  • 一个检测类别,即它是哪种水果......
  • 其次它们归类为烂/新鲜

看看这张图片(来自 CS-231N 一些学分适用)(在你的情况下,用水果类和状态替换动物类和物种)(你不需要 bbox,所以对拱门的修改会产生结果根据需要,只要在网络两端正确计算和使用损失)

此论文链接可能地址相同 在此处输入图像描述