机器学习概念(Opencv笔记!)

来源:互联网 发布:矩阵分析课后答案pdf 编辑:程序博客网 时间:2024/06/18 17:39

机器学习概念

机器学习包含了模式识别人工智能的学习理论,并且和计算统计学相关。

根据机器学习算法如何从数据或样本中学习,我们可以把它们分为三类:
×指导学习:计算机学习一组被标记的数据。目标是学习的模型和规则,让计算机映射数据和输出标签的结果之间的关系的参数。
×无指导学习:没有指定标签,计算机试图发现输入数据的输入结构。
×强化学习:计算机在一个动态的环境进行交互,实现它的目标,并从它的错误中学习。

根据所需的结果,机器学习算法可以分为以下几类:
×分类算法:在分类算法中,输入的空间可以分为N个类别,一个给定样本的预测结果是这些受训类别之一。最常用!例如垃圾邮件的过滤系统。
×回归算法:回归算法的输出是一个连续的值,而不是一个离散的值。
×聚类算法:将输入用无指导学习分为N组。
×密度估算法:这个算法通过输入找出概率分布。

OpenCV实现了8种机器学习算法,它们都继承自StatModel类:
×人工神经网络(ANN
×提升算法
×随机树
×最大期望
×K近邻
×logistic回归分析
×一般贝叶斯分类器
×支持向量机(SVM)
StatModel类提供了对机器学习参数和训练十分重要的read/write函数。
机器学习中,最花时间的部分是training函数。training函数是根据数据的大小机器学习结构的复杂度可能花费数秒到数周甚至数月。这意味着不能每次启动应用的时候训练机器算法,推荐做法是保存算法被训练的模型,因为机器学习所哟的训练/预测的参数都将被保存。这样当下一次启动的时候只需要读取保存的模型,而不需要重复训练算法。
StatModel是需要通过它的每个具体实现来实现的接口,它的两个关键函数是train和predict。
train函数主要用于从训练数据中学习模型的参数,它有四种不同的调用方法:
bool train(const Ptr< TrainData>& trainData, int flags=0);
bool train(InputArray samples, int layout, InputArray responses );
Ptr< _Tp> train(const Ptr< TrainData>& data, const _Tp::Params& p,int flags=0);
Ptr< _Tp> train( InputArray samples, int laout , InputArray responses, const _Tp:: Params& p, int flags=0);

下面给出参数解释:
×trainData:这是可以从TrainData类被读取或者创建的训练数据。这个类最早出现在OpenCV3中,它帮助开发者创建训练数据,因为不同的算法需要不同类型的数据结构来训练和预测。
×samples:这是保存训练数组样本的数组,如通过机器学习算法所要求的格式的训练数据。
×layout:有两种布局:ROW_SAMPLE(训练样本是行矩阵)和COL_SAMPLE(训练样本是列矩阵)。
×responses:这是个与采样数据相关的响应向量。
×p:这是StatModel的参数。
×flags:这些是由每个方法定义的可选标志。

predict函数要简单多,只有一种调用方法:
float StatModel::predict(InputArray samples,OutputArray results=noArray(),int flags=0);
它有如下参数:
×samples:要预测的输入采样。允许有一个或多个要预测的数据。
×result:每个输入行样本(由先前训练的模型计算出的算法)的结果。
×flags:模型依赖的可选标志。一些模型如Boost,SVM识别StatModel::RAW_OUTPUT标志。

StatModel类提供了另外一些有用的方法:
×isTrained():如果模型被训练了,返回true。
×isClassifier():如果这个模型是分类器则返回true,如果是回归则返回false。
×getVarCount:返回在训练样本中变量的个数。
×save(const string& filename):以文件名保存模型。
×Ptr< _Tp>load(const string& filename):以文件名读取类型,例如:Ptr< SVM> svm=StatModel::load< SVM>(“my_svm_model.xml”);。
×calcError(const Ptr< TrainData>& data,bool test,OutputArray resp):返回测试训练模式的错误。如果测试为true,则这个方法计算来自所有训练数据的训练子集中的错误,否则它只计算数据的训练子集的错误。最后resp是可选的输出结果。

计算机视觉和机器学习的工作流程

下图展示了涉及的不同步骤(摘自书上):这里写图片描述
第一步 预处理涉及去除光亮条件和噪声,阀值,模糊等。
第二步 分割:提取我们感兴趣的部分,并将每个部分分割成独一无二的对象。
第三步 图像特征提取:特征是对象的特点向量,可以是物体的一部分,轮廓,图案纹理等。
第四步 机器学习分类 : 现在得到物体的描述符(即对象特征)。为了使用这些描述符来训练模型或预测其中的一个模型,需要通过成千上万次图像预处理,提取特征来建立一个关于特征的大数据集合,并且通过选取的训练模型来提取特征,具体如下图所示:
这里写图片描述
训练一个数据集合时,当给出一个新的特征项链或者未知标签时,模型学习所有需要预测的参数,具体如下图所示:
这里写图片描述
第五步 后期处理 例如合并多个分类以减少预测误差或者合并多个标签。

原创粉丝点击