OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::ml::EM クラスabstract

このクラスはExpectation Maximization(EM)アルゴリズムを実装する。続きを読む...

#include <opencv2/ml.hpp>

Collaboration diagram for 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  Types {
  COV_MAT_SPHERICAL =0 ,
  COV_MAT_DIAGONAL =1 ,
  COV_MAT_GENERIC =2 ,
  COV_MAT_DEFAULT =COV_MAT_DIAGONAL
}
 共分散行列の型。続きを読む...
 
- Public Types inherited from cv::ml::StatModel
enum  Flags {
  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 (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
 サンプル集合からガウス混合のパラメータを推定する。
 
- Public Member Functions inherited from cv::ml::StatModel
virtual float calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const
 学習用またはテスト用データセットに対する誤差を計算する。
 
virtual bool empty () const CV_OVERRIDE
 Algorithm が空の場合(たとえば開始直後や読み込みに失敗した後)に 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 train (InputArray samples, int layout, InputArray responses)
 統計モデルを学習する。
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 アルゴリズムの状態をクリアする。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 ファイルストレージからアルゴリズムの引数を読み込む。
 
virtual void save (const String &filename) 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 をファイルから読み込んで作成する。
 
- Static Public Member Functions inherited from cv::ml::StatModel
template<typename _Tp >
static Ptr< _Tptrain (const Ptr< TrainData > &data, int flags=0)
 デフォルト引数でモデルを生成して学習する。
 
- Static Public Member Functions inherited from 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)
 ファイルノードからアルゴリズムを読み込む。
 

Additional Inherited Members

- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細説明

このクラスはExpectation Maximization(EM)アルゴリズムを実装する。

参照
Expectation Maximization

列挙型メンバ詳解

◆ anonymous enum

anonymous enum

デフォルトの引数。

列挙値
DEFAULT_NCLUSTERS 
DEFAULT_MAX_ITERS 

◆ anonymous enum

anonymous enum

初期ステップ。

列挙値
START_E_STEP 
START_M_STEP 
START_AUTO_STEP 

◆ Types

共分散行列の型。

列挙値
COV_MAT_SPHERICAL 

スケールされた単位行列 \(\mu_k * I\)。各行列について推定すべきパラメータは \(\mu_k\) のみである。このオプションは、制約が妥当な特殊なケースで使うか、最適化の最初のステップ(たとえばデータを PCA で前処理した場合)として使うとよい。こうした予備推定の結果を、今度は 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
pure virtual
Python:
cv.ml.EM.getClustersNumber() -> retval

ガウス混合モデルにおける混合成分の数。引数のデフォルト値は EM::DEFAULT_NCLUSTERS=5 である。一部のEM実装では、指定した値の範囲内で最適な混合数を決定できるが、MLではまだそうなっていない。

参照
setClustersNumber

◆ getCovarianceMatrixType()

virtual int cv::ml::EM::getCovarianceMatrixType ( ) const
pure virtual
Python:
cv.ml.EM.getCovarianceMatrixType() -> retval

行列の型を定める共分散行列に対する制約。EM::Types を参照。

参照
setCovarianceMatrixType

◆ getCovs()

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

共分散行列を返す。

共分散行列のベクトルを返す。行列の数はガウス混合の数であり、各行列は NxN の正方浮動小数点行列である。ここで N は空間の次元数である。

◆ getMeans()

virtual Mat cv::ml::EM::getMeans ( ) const
pure virtual
Python:
cv.ml.EM.getMeans() -> retval

クラスタ中心(ガウス混合の平均)を返す

行数が混合数に等しく、列数が空間の次元数に等しい行列を返す。

◆ getTermCriteria()

virtual TermCriteria cv::ml::EM::getTermCriteria ( ) const
pure virtual
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
pure virtual
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
pure virtual
Python:
cv.ml.EM.predict(samples[, results[, flags]]) -> retval, results

指定したサンプルに対する事後確率を返す。

引数
samples入力サンプル。浮動小数点の行列
results結果を格納する省略可能な出力行列 \( nSamples \times nClusters\)。入力された各サンプルの事後確率を含む
flagsこの引数は無視される

cv::ml::StatModel を実装する。

この関数の呼び出しグラフ:

◆ predict2()

virtual Vec2d cv::ml::EM::predict2 ( InputArray sample,
OutputArray probs ) const
pure virtual
Python:
cv.ml.EM.predict2(sample[, probs]) -> retval, probs

指定したサンプルに対する尤度の対数値と、最も確からしい混合成分のインデックスを返す。

引数
sample分類対象のサンプル。\(1 \times dims\) または \(dims \times 1\) サイズのシングルチャンネル行列であること。
probsサンプルが与えられたときの各成分の事後確率を含む省略可能な出力行列。\(1 \times nclusters\) サイズで CV_64FC1 型である。

このメソッドは2要素のdoubleベクトルを返す。0番目の要素はサンプルに対する尤度の対数値である。1番目の要素は指定したサンプルに対して最も確からしい混合成分のインデックスである。

◆ setClustersNumber()

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

◆ setCovarianceMatrixType()

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

◆ setTermCriteria()

virtual void cv::ml::EM::setTermCriteria ( const TermCriteria & val)
pure virtual
Python:
cv.ml.EM.setTermCriteria(val) -> None

◆ 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() )
pure virtual
Python:
cv.ml.EM.trainE(samples, means0[, covs0[, weights0[, logLikelihoods[, labels[, probs]]]]]) -> retval, logLikelihoods, labels, probs

サンプル集合からガウス混合モデルの引数を推定する。

この亜種はExpectationステップから開始する。混合成分の初期平均 \(a_k\) を与える必要がある。必要に応じて、混合成分の初期重み \(\pi_k\) と初期共分散行列 \(S_k\) を渡すこともできる。

引数
samplesガウス混合モデルを推定するためのサンプル。シングルチャンネル行列であり、各行が1つのサンプルである。行列が CV_64F 型でない場合、以降の計算のために内部でその型の行列に変換される。
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() )
pure virtual
Python:
cv.ml.EM.trainEM(samples[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs

サンプル集合からガウス混合モデルの引数を推定する。

この亜種はExpectationステップから開始する。モデル引数の初期値はk-meansアルゴリズムによって推定される。

多くのMLモデルとは異なり、EMは教師なし学習アルゴリズムであり、応答(クラスラベルや関数値)を入力として受け取らない。代わりに、入力サンプル集合からガウス混合モデルの引数の最尤推定 (Maximum Likelihood Estimate) を計算し、すべての引数を構造体の内部に格納する。すなわち、\(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 に似ている。

引数
samplesガウス混合モデルを推定するためのサンプル。シングルチャンネル行列であり、各行が1つのサンプルである。行列が CV_64F 型でない場合、以降の計算のために内部でその型の行列に変換される。
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() )
pure virtual
Python:
cv.ml.EM.trainM(samples, probs0[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs

サンプル集合からガウス混合モデルの引数を推定する。

この亜種はMaximizationステップから開始する。このオプションを使うには、初期確率 \(p_{i,k}\) を与える必要がある。

引数
samplesガウス混合モデルを推定するためのサンプル。シングルチャンネル行列であり、各行が1つのサンプルである。行列が CV_64F 型でない場合、以降の計算のために内部でその型の行列に変換される。
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 型である。

このクラス詳解は次のファイルから抽出されました: