如何在matlab中结合两个分类模型?

Posted

技术标签:

【中文标题】如何在matlab中结合两个分类模型?【英文标题】:How to Combine two classification model in matlab? 【发布时间】:2016-06-10 21:03:27 【问题描述】:

我正在尝试使用 Matlab 内置的 viola jones 人脸检测来检测人脸。无论如何,我可以将“FrontalFaceCART”和“ProfileFace”等两种分类模型合二为一以获得更好的结果吗?

谢谢。

【问题讨论】:

通常分类模型会输出某种概率度量,以确定输入属于他们试图区分的类别的可能性。只需在两个模型中使用不属于训练一部分的不可见输入,然后将输入的类别分配给给您最高后验概率的类别。 【参考方案1】:

您不能组合模型。这在任何分类任务中都是无意义的,因为每个分类器都是不同的(工作方式不同,即其背后的算法不同,也可能训练方式也不同)。

根据分类模型帮助(可在here 找到),您的两个分类器的工作方式如下:

FrontalFaceCART 是一个由弱分类器组成的模型,基于分类和回归树分析 ProfileFace 由基于决策树桩的弱分类器组成

可以在提供的链接中找到更多信息,但您可以很容易地看到它们的内在行为是相当不同的,因此您不能将它们混合或组合它们。 这就像(在机器学习中)将支持向量机与 K 最近邻混合:第一个使用分离超平面,而后者仅基于距离。

但是,您可以并行训练多个模型(例如独立地)并选择更适合您的模型(例如更小的错误率/更高的准确度):因此您基本上可以创建任意数量的不同分类器,给它们相同的训练集,评估每个准确度(和/或其他参数)并选择最佳模型。

【讨论】:

但是如果我使用 FrontalFaceCART 和 ProfileFace 运行两个单独的 vision.CascadeObjectDetector 对象,然后在我的图像上运行每个对象,可以吗?其实我也做过类似的事情。我已经通过这两个模型运行了图像,并为每个模型得到了两组边界框。然后将它们连接在一起形成一个矩阵,以便从中得到一个结果。但是只有一个问题是边界框重叠?知道如何摆脱它们吗? 所以你基本上是按照我的建议去做(并行运行模型),但不是选择最好的结果,而是试图在它们之间进行某种权衡。因此,您正在组合 results 而不是 models。这更有意义。 重叠框问题与您使用两个模型的输出有关。你无法避免它,但当然你可以丢弃一个盒子或将盒子连接在一起。这实际上是您结果的组合阶段,我认为您必须手动完成。尝试谷歌搜索“重叠矩形 matlab”或类似的东西,这是一个非常研究的问题。【参考方案2】:

一种选择是制作分层分类器。因此,在第一步中,您使用正面分类器(假设大多数图片都是正面)。如果分类器失败,您尝试使用配置文件分类器。

我使用人脸数据集做到了这一点,它提高了我的整体分类准确性。此外,如果你有一些先验信息,你可以使用它。在我的例子中,人脸通常位于图片的中间部分。

为了进一步提高您的性能,在不使用您正在使用的 MATLAB 中的两个分类器的情况下,您需要更改您的技术(可能还有您的编程语言)。这是迄今为止最好的方法:Facenet。

【讨论】:

以上是关于如何在matlab中结合两个分类模型?的主要内容,如果未能解决你的问题,请参考以下文章

优化分类基于matlab遗传算法结合爬山算法优化极限学习机分类含Matlab源码 1660期

SVM分类基于布谷鸟算法优化实现SVM数据分类matlab源码

使用 GMM 和 MATLAB 进行分类

在 MATLAB 分类学习器中,导出模型后是不是可以提取该模型的参数?

使用在 Matlab 中训练的 SVM 模型在 python 中进行分类

在 MATLAB 中测试模型准确性的 K 折交叉验证