OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
无匹配结果
公共类型 | 公共成员函数 | 静态公共成员函数 | 所有成员列表
cv::ml::EM 类参考抽象

该类实现了期望最大化算法。 更多信息...

#include <opencv2/ml.hpp>

cv::ml::EM 的协作图

公共类型

enum  {
  DEFAULT_NCLUSTERS =5 ,
  DEFAULT_MAX_ITERS =100
}
 默认参数。 更多信息...
 
enum  {
  START_E_STEP =1 ,
  START_M_STEP =2 ,
  START_AUTO_STEP =0
}
 初始步骤。 更多信息...
 
enum  类型 {
  COV_MAT_SPHERICAL =0 ,
  COV_MAT_DIAGONAL =1 ,
  COV_MAT_GENERIC =2 ,
  COV_MAT_DEFAULT =COV_MAT_DIAGONAL
}
 协方差矩阵的类型。 更多信息...
 
- 从 cv::ml::StatModel 继承的公共类型
enum  标志 {
  UPDATE_MODEL = 1 ,
  RAW_OUTPUT =1 ,
  COMPRESSED_INPUT =2 ,
  PREPROCESSED_INPUT =4
}
 

公共成员函数

virtual int getClustersNumber () const =0
 
virtual int getCovarianceMatrixType () const =0
 
virtual void getCovs (std::vector< Mat > &covs) const =0
 返回协方差矩阵。
 
virtual Mat getMeans () const =0
 返回簇中心(高斯混合的均值)
 
virtual TermCriteria getTermCriteria () const =0
 
virtual Mat getWeights () const =0
 返回混合权重。
 
virtual float predict (InputArray samples, OutputArray results=noArray(), int flags=0) const CV_OVERRIDE=0
 返回给定样本的后验概率。
 
virtual Vec2d predict2 (InputArray sample, OutputArray probs) const =0
 返回给定样本的似然对数值和最可能混合组件的索引。
 
virtual void setClustersNumber (int val)=0
 
virtual void setCovarianceMatrixType (int val)=0
 
virtual void setTermCriteria (const TermCriteria &val)=0
 
virtual bool trainE(trainE (InputArray samples, InputArray means0, InputArray covs0=noArray(), InputArray weights0=noArray(), OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()))=0
 从一个样本集中估计高斯混合参数。
 
virtual bool trainEM (InputArray samples, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()))=0
 从一个样本集中估计高斯混合参数。
 
virtual bool trainM (InputArray samples, InputArray probs0, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()))=0
 从一个样本集中估计高斯混合参数。
 
- 从 cv::ml::StatModel 继承的公有成员函数
virtual float calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const
 计算机器在训练或测试数据集上的误差。
 
virtual bool empty () const CV_OVERRIDE
 如果算法为空则返回 true(例如在开始时或读取失败之后)。
 
virtual int getVarCount () const =0
 返回训练样本中的变量数量。
 
virtual bool isClassifier () const =0
 如果模型是分类器则返回 true。
 
virtual bool isTrained () const =0
 如果模型已训练则返回 true。
 
virtual bool train (const Ptr< TrainData > &trainData, int flags=0)
 训练统计模型。
 
virtual bool 训练 (InputArray samples, int layout, InputArray responses)
 训练统计模型。
 
- 从 'cv::Algorithm' 继承的公共成员函数
 算法 ()
 
virtual ~算法 ()
 
virtual void clear ()
 清除算法状态。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 从文件存储中读取算法参数。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 将算法参数存储在文件存储中。
 
void write (FileStorage > &fs, const String &name) const
 

静态公共成员函数

static Ptr< EMcreate ()
 
static Ptr< EMload (const String &filepath, const String &nodeName=String())
 从文件加载并创建序列化的 EM
 
- 从 'cv::ml::StatModel' 继承的静态公共成员函数
template<typename _Tp >
static Ptr< _Tptrain (const Ptr< TrainData > &data, int flags=0)
 使用默认参数创建和训练模型。
 
- 从 'cv::Algorithm' 继承的静态公共成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点读取算法。
 

其他继承成员

- 从 cv::Algorithm 继承的保护成员函数
void writeFormat (FileStorage &fs) const
 

详细描述

该类实现了期望最大化算法。

另请参阅
期望最大化

成员枚举文档

◆ 匿名枚举

匿名枚举

默认参数。

枚举器
DEFAULT_NCLUSTERS 
DEFAULT_MAX_ITERS 

◆ 匿名枚举

匿名枚举

初始步骤。

枚举器
START_E_STEP 
START_M_STEP 
START_AUTO_STEP 

◆ 类型

协方差矩阵的类型。

枚举器
COV_MAT_SPHERICAL 

缩放的单位矩阵 \(\mu_k * I\)。每个矩阵只有一个参数 \(\mu_k\) 需要估计。此选项可适用于特殊情况,当约束相关时,或作为优化的第一步(例如,当数据使用 PCA 预处理时)。这种初步估计的结果可以再次传递给优化过程,这次是 with covMatType=EM::COV_MAT_DIAGONAL

COV_MAT_DIAGONAL 

对角线矩阵,对角线元素为正。每个矩阵的自由参数数量为 d。这是最常见的选项,能产生良好的估计结果。

COV_MAT_GENERIC 

一个对角线矩阵,具有正对角线元素。每个矩阵中的自由参数数量约为 \(d^2/2\)。除非有相当准确的参数初始估计和/或大量的训练样本,否则不推荐使用此选项。

COV_MAT_DEFAULT 

成员函数文档

◆ create()

static Ptr< EM > cv::ml::EM::create ( )
static
Python
cv.ml.EM.create() -> retval
cv.ml.EM_create() -> retval

创建空的 EM 模型。应使用 StatModel::train(traindata, flags) 方法进行训练。或者,您可以使用 EM::train* 方法之一或使用 Algorithm::load<EM>(filename) 从文件中加载。

◆ getClustersNumber()

virtual int cv::ml::EM::getClustersNumber ( ) const
纯虚拟
Python
cv.ml.EM.getClustersNumber() -> retval

高斯混合模型中混合成分的数量。参数的默认值为 EM::DEFAULT_NCLUSTERS=5。某些EM的实现可以在指定的值范围内确定混合物的最佳数量,但在ML中目前尚不是这种情况。

另请参阅
setClustersNumber

◆ getCovarianceMatrixType()

virtual int cv::ml::EM::getCovarianceMatrixType ( ) const
纯虚拟
Python
cv.ml.EM.getCovarianceMatrixType() -> retval

协方差矩阵的约束,定义矩阵的类型。见 EM::Types

另请参阅
setCovarianceMatrixType

◆ getCovs()

virtual void cv::ml::EM::getCovs ( std::vector< Mat > &  covs) const
纯虚拟
Python
cv.ml.EM.getCovs([, covs]) -> covs

返回协方差矩阵。

返回协方差矩阵的向量。矩阵的数量等于高斯混合的数量,每个矩阵是NxN的平方浮点矩阵,其中N是空间维数。

◆ getMeans()

virtual Mat cv::ml::EM::getMeans ( ) const
纯虚拟
Python
cv.ml.EM.getMeans() -> retval

返回簇中心(高斯混合的均值)

返回具有矩阵行数等于混合数和列数等于空间维数的矩阵。

◆ getTermCriteria()

virtual TermCriteria cv::ml::EM::getTermCriteria ( ) const
纯虚拟
Python
cv.ml.EM.getTermCriteria() -> retval

EM算法的终止条件。EM算法可以由termCrit.maxCount(M步次数)或当似然对数的变化小于termCrit.epsilon终止。默认最大迭代次数为EM::DEFAULT_MAX_ITERS=100。

另请参阅
setTermCriteria

◆ getWeights()

virtual Mat cv::ml::EM::getWeights ( ) const
纯虚拟
Python
cv.ml.EM.getWeights() -> retval

返回混合权重。

返回具有与混合数相等元素数的向量。

◆ load()

static Ptr< EM > cv::ml::EM::load ( const String filepath,
const String nodeName = String() 
)
static
Python
cv.ml.EM.load(filepath[, nodeName]) -> retval
cv.ml.EM_load(filepath[, nodeName]) -> retval

从文件加载并创建序列化的 EM

使用 EM::save 序列化和存储一个EM到磁盘。再次从这个文件中加载EM,通过调用此函数并指定文件路径。可选地指定包含分类器的节点

参数
filepath序列化的EM的路径
nodeName包含分类器的节点的名称

◆ predict()

virtual float cv::ml::EM::predict ( InputArray  samples,
OutputArray  results = noArray(),
int  flags = 0 
) const
纯虚拟
Python
cv.ml.EM.predict(samples[, results[, flags]]) -> retval, results

返回给定样本的后验概率。

参数
samples输入样本,浮点矩阵
结果可选输出结果矩阵 \( nSamples \times nClusters \)。它包含从输入样本的每个样本的后验概率。
标志该参数将被忽略

实现了 cv::ml::StatModel

以下是此函数的调用图

◆ predict2()

virtual Vec2d cv::ml::EM::predict2 ( InputArray  样本,
OutputArray  probs 
) const
纯虚拟
Python
cv.ml.EM.predict2(sample[, probs]) -> retval, probs

返回给定样本的似然对数值和最可能混合组件的索引。

参数
样本用于分类的样本。它应为一维矩阵,大小为 \(1 \times dims\) 或 \(dims \times 1\)。
probs可选输出矩阵,包含给定样本的每个组件的后验概率。它的大小为 \(1 \times nclusters\),类型为 CV_64FC1。

该方法返回一个双元素双精度向量。零元素是样本的似然对数值。第一个元素是给定样本最可能的混合成分的索引。

◆ setClustersNumber()

virtual void cv::ml::EM::setClustersNumber ( int  val)
纯虚拟
Python
cv.ml.EM.setClustersNumber(val) -> None

另请参阅
getClustersNumber

◆ setCovarianceMatrixType()

virtual void cv::ml::EM::setCovarianceMatrixType ( int  val)
纯虚拟
Python
cv.ml.EM.setCovarianceMatrixType(val) -> None

◆ setTermCriteria()

virtual void cv::ml::EM::setTermCriteria ( const TermCriteria val)
纯虚拟
Python
cv.ml.EM.setTermCriteria(val) -> None

另请参阅
getTermCriteria

◆ trainE()

virtual bool cv::ml::EM::trainE ( InputArray  samples,
InputArray  means0,
InputArray  covs0 = noArray(),
InputArray  weights0 = noArray(),
OutputArray  logLikelihoods = noArray(),
OutputArray  labels = noArray(),
OutputArray  probs = noArray() 
)
纯虚拟
Python
cv.ml.EM.trainE(samples, means0[, covs0[, weights0[, logLikelihoods[, labels[, probs]]]]]) -> retval, logLikelihoods, labels, probs

从一个样本集中估计高斯混合参数。

这种变体从期望步骤开始。您需要提供混合成分的初始均值 \(a_k\)。可选地,您可以传递混合成分的初始权重 \(\pi_k\) 和协方差矩阵 \(S_k\)。

参数
samplesSamples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type it will be converted to the inner matrix of such type for the further computing.
means0混合成分的初始均值 \(a_k\)。它是一个大小为 \(nclusters \times dims\) 的一维矩阵。如果矩阵类型不是 CV_64F,它将被转换为后续计算的内矩阵类型。
covs0混合成分的初始协方差矩阵 \(S_k\) 的向量。每个协方差矩阵是一个大小为 \(dims \times dims\) 的一维矩阵。如果矩阵类型不是 CV_64F,它将被转换为后续计算的内矩阵类型。
weights0混合成分的初始权重 \(\pi_k\)。它应该是一个大小为 \(1 \times nclusters\) 或 \(nclusters \times 1\) 的一维浮点矩阵。
logLikelihoods包含每个样本似然对数值的可选输出矩阵。它的大小为 \(nsamples \times 1\),类型为 CV_64FC1。
labels每个样本的可选输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。它的大小为 \(nsamples \times 1\),类型为 CV_32SC1。
probs包含每个高斯混合成分在给定每个样本时的后验概率的可选输出矩阵。它的大小为 \(nsamples \times nclusters\),类型为 CV_64FC1。

◆ trainEM()

virtual bool cv::ml::EM::trainEM ( InputArray  samples,
OutputArray  logLikelihoods = noArray(),
OutputArray  labels = noArray(),
OutputArray  probs = noArray() 
)
纯虚拟
Python
cv.ml.EM.trainEM(samples[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs

从一个样本集中估计高斯混合参数。

这个变体从期望步骤开始。将与 k-means 算法估计模型参数的初始值。

与许多机器学习模型不同,EM 是一种无监督学习算法,它不将响应(类别标签或函数值)作为输入。相反,它从输入样本集中计算高斯混合参数的 最大似然估计,将所有参数存储在结构中:\(p_{i,k}\) 在 probs 中,\(a_k\) 在 means 中,\(S_k\) 在 covs[k] 中,\(\pi_k\) 在 weights 中,并且可选地计算每个样本的输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。

训练好的模型可以像任何其他分类器一样用于预测。训练好的模型类似于 NormalBayesClassifier

参数
samplesSamples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type it will be converted to the inner matrix of such type for the further computing.
logLikelihoods包含每个样本似然对数值的可选输出矩阵。它的大小为 \(nsamples \times 1\),类型为 CV_64FC1。
labels每个样本的可选输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。它的大小为 \(nsamples \times 1\),类型为 CV_32SC1。
probs包含每个高斯混合成分在给定每个样本时的后验概率的可选输出矩阵。它的大小为 \(nsamples \times nclusters\),类型为 CV_64FC1。

◆ trainM()

virtual bool cv::ml::EM::trainM ( InputArray  samples,
InputArray  probs0,
OutputArray  logLikelihoods = noArray(),
OutputArray  labels = noArray(),
OutputArray  probs = noArray() 
)
纯虚拟
Python
cv.ml.EM.trainM(samples, probs0[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs

从一个样本集中估计高斯混合参数。

这个变体从最大化步骤开始。您需要提供初始概率 \(p_{i,k}\) 以使用此选项。

参数
samplesSamples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type it will be converted to the inner matrix of such type for the further computing.
probs0概率
logLikelihoods包含每个样本似然对数值的可选输出矩阵。它的大小为 \(nsamples \times 1\),类型为 CV_64FC1。
labels每个样本的可选输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。它的大小为 \(nsamples \times 1\),类型为 CV_32SC1。
probs包含每个高斯混合成分在给定每个样本时的后验概率的可选输出矩阵。它的大小为 \(nsamples \times nclusters\),类型为 CV_64FC1。

此类的文档是从以下文件生成的