如何利用OpenCV自带的级联分类器训练程序训练分类器

如何利用OpenCV自带的级联分类器训练程序训练分类器

首先,需要说明的是,OpenCV自带的haar training提取的特征是haar特征 分类器是AdaBoost级联分类器(如需了解Adaboost算法, 。所谓的级联分类器,就是将若干的简单的分量分类器(可以理解为一般的普通分类器)依次串联起来,最终的检测分类结果,要依次通过所有的分量分类器才能算是一个有效的检测分类结果。否则,就认为当前检测区域内没有我们需要找的目标。

利用OpenCV自带的haar training程序训练一个分类器,需要经过以下几个步骤:

(1)收集训练样本:

训练样本包括正样本和负样本。正样本,通俗点说,就是图片中只有你需要的目标。而负样本的图片只要其中不含有目标就可以了。但需要说明的是,负样本也并非随便选取的。例如,你需要检测的目标是汽车,那么正样本就应该是仅仅含有汽车的图片,而负样本显然不能是一些包含天空的,海洋的,风景的图片。因为你最终训练分类器的目的是检测汽车,而汽车应该出现在马路上。也就是说,分类器最终检测的图片应该是那些包含马路,交通标志,建筑物,广告牌,汽车,摩托车,三轮车,行人,自行车等在内的图片。很明显,这里的负样本应该是包含摩托车、三轮车、自行车、行人、路面、灌木丛、花草、交通标志、广告牌等。

另外,需要提醒的是,adaboost方法也是机器学习中的一个经典算法,而机器学习算法的前提条件是,测试样本和训练样本独立同分布。所谓的独立同分布,可以简单理解为:训练样本要和最终的应用场合非常接近或者一致。否则,基于机器学习的算法并不能保证算法的有效性。此外,足够的训练样本(至少得几千张正样本、几千张负样本)也是保证训练算法有效性的一个前提条件。

【最全的】分类算法的性能度量指标

本文详细阐述了机器学习分类算法的性能度量指标,包括混淆矩阵、准确率、错误率、精准率、召回率、F1 Score、ROC曲线、AUC、KS曲线、Lift值、P-R曲线,以及在多分类问题中的宏平均、微平均和Kappa系数等指标。接下来,我们将逐一解释这些指标,并给出多分类问题的综合评价指标。

混淆矩阵 是用于理解分类错误的重要工具。矩阵非对角元素的值代表预测错误的情况。例如,真正例(TP)是指实际为正例且被正确预测为正例的样本,真反例(TN)是实际为反例且被正确预测为反例的样本,假正例(FP)是实际为反例却被错误预测为正例的样本,假反例(FN)是实际为正例却被错误预测为反例的样本。

准确率 是预测正确的样本比例,但存在类别不平衡数据时,准确率可能不能全面反映模型性能。

错误率 是测试样例中预测错误的比例,虽然直观,但忽视了错误样本的具体类别。

精准率(Precision)和召回率(Recall)分别衡量了预测结果和实际结果的准确性。精准率关注预测为正的样本中实际为正的比例,而召回率关注实际为正的样本中被正确预测的比例。两者通常存在权衡,F1 Score 是精准率和召回率的调和平均值,以兼顾两者的平衡。

ROC曲线 是用来评估分类模型性能的图表,横轴为假阳性率(FPR),纵轴为真阳性率(TPR),曲线越靠近左上角表示模型性能越好。同时,AUC(曲线下面积)提供了模型整体性能的量化指标。

KS曲线(Kolmogorov-Smirnov)值表示模型将正负样本区分开的能力,值越大,模型风险区分能力越强。

Lift值 比较模型预测效果与随机选择的差异,Lift值越大,模型预测效果越好。

P-R曲线 表现了精准率和召回率之间的关系,曲线越靠近右上角表示模型性能越好。

在多分类问题中,使用宏平均和微平均对模型性能进行综合评价。宏平均考虑每个类别的指标,而微平均基于所有样本计算指标。

Kappa系数 是衡量分类精度的指标,用于评估模型分类的一致性,系数范围为[-1,1],值越高表示模型性能越好。

本文通过多分类实例展示了如何计算混淆矩阵、Kappa系数、宏平均、微平均等指标,为理解和评估机器学习分类算法提供了实用的指南。