在机器学习中,一些比较流行方法的包括:支持向量机(SVM)、人工神经网络(ANN)、聚类、k-最近邻、决策树和深度学习。OpenCV支持并实现几乎所有这些方法,并有详细的文档说明(包含在Main modules的ml. Machine Learning模块中)。
OpenCV 4 机器学习算法
OpenCV实现了其中的八种机器学习算法,所有这些算法都继承自StatModel类,这八种算法是:
·人工神经网络
·随机树
·期望最大化
·k-最近邻
·逻辑回归
·朴素贝叶斯分类器
·支持向量机
·随机梯度下降SVM
OpenCV 4 机器学习的类层次结构
StatModel类是所有机器学习算法的基类,它提供预测和所有读写功能,这些功能对于保存和读取机器学习参数和训练数据非常重要。
StatModel是诸如SVM或ANN等所有机器学习类(除了深度学习方法之外)的基类。StatModel基本上是一个虚拟类,它定义了两个最重要的函数:train和predict。train方法是负责使用训练数据集学习模型参数的主要方法。它有以下三种可能的调用方式:
Train函数具有以下参数:
·TrainData:训练数据可以从TrainData类加载或创建。该类是OpenCV 3中的新增功能,可以帮助开发人员从机器学习算法中创建和提取训练数据。这样做是因为不同的算法需要不同类型的阵列结构用于训练和预测,例如ANN算法。
·samples:一系列训练阵列样本,例如采用机器学习算法所需格式的训练数据。
·layout:ROW_SAMPLE(训练样本是矩阵行)或COL_SAMPLE(训练样本是矩阵列)。
·responses:与样本数据相关的响应向量。
·flags:由每个方法定义的可选标志。
最后一个训练方法创建并训练一个_TP类类型的模型。被接受的唯一类是不带参数或带所有默认参数值实现静态创建方法的类。
predict方法更简单,只有一个可能的调用:
该预测函数具有以下参数:
·samples:用于预测模型结果的输入样本可以包含任意数量的数据,无论是单个还是多个。
·results:每个输入行样本的结果(由先前训练的模型的算法计算)。
·flags:这些可选标志与模型有关。某些模型(如Boost)由SVM StatModel::RAW_OUTPUT标志识别,这使得该方法可以返回原始结果(总和),而不是类标签。StatModel类为其他非常有用的方法提供接口:
·isTrained(),如果模型是训练过的,则返回true
·isClassifier(),如果模型是分类器,则返回true,如果是回归,则返回false
·getVarCount()返回训练样本中的变量数
·save(const string&filename)将模型保存在指定的文件中
·Ptr<_Tp>load(const string&filename)从指定的文件中加载
·calcError(const Ptr



