我是机器学习的初学者,我有一种情况,图像需要首先分类为超类,然后是子类。例如,我有一组水果图像,包含芒果、香蕉、桃子、苹果等的图像。然后每个水果要么是新鲜的,要么是腐烂的。我有训练集,其中包含每种水果类型的腐烂和新鲜水果的图像。因此,对于测试图像,我需要分类它是哪种水果(芒果、香蕉等),然后是新鲜的还是腐烂的。我想知道如何解决这类问题
如何在类和子类中对图像进行分类?
数据挖掘
机器学习
图像分类
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,所以对拱门的修改会产生结果根据需要,只要在网络两端正确计算和使用损失)
此论文链接可能地址相同