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

確率的勾配降下法によるSVM分類器。 続き...

#include <opencv2/ml.hpp>

Collaboration diagram for cv::ml::SVMSGD:

公開型

enum  MarginType {
  SOFT_MARGIN ,
  HARD_MARGIN
}
 
enum  SvmsgdType {
  SGD ,
  ASGD
}
 
- Public Types inherited from cv::ml::StatModel
enum  Flags {
  UPDATE_MODEL = 1 ,
  RAW_OUTPUT =1 ,
  COMPRESSED_INPUT =2 ,
  PREPROCESSED_INPUT =4
}
 

公開メンバ関数

virtual float getInitialStepSize () const =0
 SVMSGD最適化問題のパラメータ initialStepSize。
 
virtual float getMarginRegularization () const =0
 SVMSGD最適化問題のパラメータ marginRegularization。
 
virtual int getMarginType () const =0
 マージン型。SVMSGD::MarginTypeのいずれか。
 
virtual float getShift ()=0
 
virtual float getStepDecreasingPower () const =0
 SVMSGD最適化問題のパラメータ stepDecreasingPower。
 
virtual int getSvmsgdType () const =0
 アルゴリズム型。SVMSGD::SvmsgdTypeのいずれか。
 
virtual TermCriteria getTermCriteria () const =0
 学習アルゴリズムの終了条件。反復回数の最大値 (maxCount) や、アルゴリズムを継続させるために反復間で誤差がどれだけ変化しうるか (epsilon) を指定できる。
 
virtual Mat getWeights ()=0
 
virtual void setInitialStepSize (float InitialStepSize)=0
 SVMSGD最適化問題のパラメータ initialStepSize。
 
virtual void setMarginRegularization (float marginRegularization)=0
 SVMSGD最適化問題のパラメータ marginRegularization。
 
virtual void setMarginType (int marginType)=0
 マージン型。SVMSGD::MarginTypeのいずれか。
 
virtual void setOptimalParameters (int svmsgdType=SVMSGD::ASGD, int marginType=SVMSGD::SOFT_MARGIN)=0
 選択したSVM SGDモデルに対して最適なパラメータ値を設定する関数。
 
virtual void setStepDecreasingPower (float stepDecreasingPower)=0
 SVMSGD最適化問題のパラメータ stepDecreasingPower。
 
virtual void setSvmsgdType (int svmsgdType)=0
 アルゴリズム型。SVMSGD::SvmsgdTypeのいずれか。
 
virtual void setTermCriteria (const cv::TermCriteria &val)=0
 学習アルゴリズムの終了条件。反復回数の最大値 (maxCount) や、アルゴリズムを継続させるために反復間で誤差がどれだけ変化しうるか (epsilon) を指定できる。
 
- 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 float predict (InputArray samples, OutputArray results=noArray(), int flags=0) const =0
 指定されたサンプルに対するレスポンスを予測する。
 
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
 
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< SVMSGDcreate ()
 空のモデルを作成する。モデルを学習させるにはStatModel::trainを使用する。SVMSGDにはいくつかのパラメータがあるため、問題に対する最適なパラメータを探すか、setOptimalParameters()を使ってデフォルトのパラメータを設定するとよい。
 
static Ptr< SVMSGDload (const String &filepath, const String &nodeName=String())
 シリアライズされたSVMSGDをファイルから読み込んで作成する。
 
- 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
 

詳細説明

確率的勾配降下法によるSVM分類器。

SVMSGDは、[37]で提示された確率的勾配降下法を用いたSVM分類器の、高速で使いやすい実装を提供する。

この分類器は以下のパラメータを持つ:

  • モデル型、
  • マージン型、
  • マージン正則化 ( \(\lambda\))、
  • 初期ステップサイズ ( \(\gamma_0\))、
  • ステップ減衰べき乗 ( \(c\))、
  • および終了条件。

モデル型は次のいずれかの値を取りうる: SGDASGD

  • SGD is the classic version of SVMSGD classifier: every next step is calculated by the formula

    \[w_{t+1} = w_t - \gamma(t) \frac{dQ_i}{dw} |_{w = w_t}\]

    where
    • \(w_t\) はステップ \(t\) における決定関数の重みベクトル、
    • \(\gamma(t)\) は反復 \(t\) におけるモデルパラメータのステップサイズであり、各ステップで次の式によって減衰する \(\gamma(t) = \gamma_0 (1 + \lambda \gamma_0 t) ^ {-c}\)
    • \(Q_i\) はSVMタスクにおける番号 \(i\) のサンプルに対する目的汎関数であり、このサンプルはアルゴリズムの各ステップで確率的に選択される。
  • ASGD は平均化確率的勾配降下法によるSVM分類器である。ASGD分類器は、アルゴリズムの各ステップで次の式により重みベクトルを平均化する \(\widehat{w}_{t+1} = \frac{t}{1+t}\widehat{w}_{t} + \frac{1}{1+t}w_{t+1}\)

推奨されるモデル型はASGDである([37]に従う)。

マージン型は次のいずれかの値を取りうる: SOFT_MARGIN または HARD_MARGIN

  • 線形分離可能な集合を持つ場合はHARD_MARGIN型を使用すべきである。
  • 非線形分離可能な集合や外れ値を含む集合を持つ場合はSOFT_MARGIN型を使用すべきである。
  • 一般的なケース(集合の線形分離可能性について何も分からない場合)では、SOFT_MARGINを使用する。

その他のパラメータは次のように説明できる:

  • マージン正則化パラメータは、各ステップでの重みの減衰と、外れ値に対する制約の強さを担う(パラメータが小さいほど、外れ値が無視される確率は低くなる)。推奨値はSGDモデルで0.0001、ASGDモデルで0.00001である。
  • 初期ステップサイズパラメータは、ステップサイズ \(\gamma(t)\) の初期値である。問題に対する最適な初期ステップを見つける必要がある。
  • ステップ減衰べき乗は、上述の式による \(\gamma(t)\) の減衰に対するべき乗パラメータである。推奨値はSGDモデルで1、ASGDモデルで0.75である。
  • 終了条件はTermCriteria::COUNTTermCriteria::EPS、またはTermCriteria::COUNT + TermCriteria::EPS にできる。問題に対する最適な終了条件を見つける必要がある。

マージン正則化、初期ステップサイズ、ステップ減衰べき乗のパラメータは正でなければならないことに注意する。

SVMSGDアルゴリズムを使用するには、次のようにする:

// Create empty object
// Train the Stochastic Gradient Descent SVM
svmsgd->train(trainData);
// Predict labels for the new samples
svmsgd->predict(samples, responses);
static Ptr< SVMSGD > create()
Creates empty model. Use StatModel::train to train the model. Since SVMSGD has several parameters,...
std::shared_ptr< _Tp > Ptr
Definition cvstd_wrapper.hpp:23

列挙型メンバ詳解

◆ MarginType

マージン型。

列挙値
SOFT_MARGIN 

一般的なケース。非線形分離可能な集合に適しており、外れ値を許容する。

HARD_MARGIN 

線形分離可能な集合のケースに対してより正確である。

◆ SvmsgdType

SVMSGD型。多くの場合ASGDが望ましい選択である。

列挙値
SGD 

確率的勾配降下法 (Stochastic Gradient Descent)。

ASGD 

平均化確率的勾配降下法 (Average Stochastic Gradient Descent)。

メンバ関数詳解

◆ create()

static Ptr< SVMSGD > cv::ml::SVMSGD::create ( )
static
Python:
cv.ml.SVMSGD.create() -> retval
cv.ml.SVMSGD_create() -> retval

空のモデルを作成する。モデルを学習させるにはStatModel::trainを使用する。SVMSGDにはいくつかのパラメータがあるため、問題に対する最適なパラメータを探すか、setOptimalParameters()を使ってデフォルトのパラメータを設定するとよい。

◆ getInitialStepSize()

virtual float cv::ml::SVMSGD::getInitialStepSize ( ) const
pure virtual
Python:
cv.ml.SVMSGD.getInitialStepSize() -> retval

SVMSGD最適化問題のパラメータ initialStepSize。

参照
setInitialStepSize

◆ getMarginRegularization()

virtual float cv::ml::SVMSGD::getMarginRegularization ( ) const
pure virtual
Python:
cv.ml.SVMSGD.getMarginRegularization() -> retval

SVMSGD最適化問題のパラメータ marginRegularization。

参照
setMarginRegularization

◆ getMarginType()

virtual int cv::ml::SVMSGD::getMarginType ( ) const
pure virtual
Python:
cv.ml.SVMSGD.getMarginType() -> retval

マージン型。SVMSGD::MarginTypeのいずれか。

参照
setMarginType

◆ getShift()

virtual float cv::ml::SVMSGD::getShift ( )
pure virtual
Python:
cv.ml.SVMSGD.getShift() -> retval
戻り値
学習済みモデルのシフト(決定関数 f(x) = weights * x + shift)。

◆ getStepDecreasingPower()

virtual float cv::ml::SVMSGD::getStepDecreasingPower ( ) const
pure virtual
Python:
cv.ml.SVMSGD.getStepDecreasingPower() -> retval

SVMSGD最適化問題のパラメータ stepDecreasingPower。

参照
setStepDecreasingPower

◆ getSvmsgdType()

virtual int cv::ml::SVMSGD::getSvmsgdType ( ) const
pure virtual
Python:
cv.ml.SVMSGD.getSvmsgdType() -> retval

アルゴリズムの種類。SVMSGD::SvmsgdType のいずれか。

参照
setSvmsgdType

◆ getTermCriteria()

virtual TermCriteria cv::ml::SVMSGD::getTermCriteria ( ) const
pure virtual
Python:
cv.ml.SVMSGD.getTermCriteria() -> retval

学習アルゴリズムの終了条件。反復回数の最大値 (maxCount) や、アルゴリズムを継続させるための反復間で許容される誤差の変化量 (epsilon) を指定できる。

参照
setTermCriteria

◆ getWeights()

virtual Mat cv::ml::SVMSGD::getWeights ( )
pure virtual
Python:
cv.ml.SVMSGD.getWeights() -> retval
戻り値
学習済みモデルの重み(決定関数 f(x) = weights * x + shift)。

◆ load()

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

シリアライズされた SVMSGD をファイルから読み込んで生成する。

SVMSGD をディスクにシリアライズして保存するには SVMSGD::save を使用する。このファイルへのパスを引数にしてこの関数を呼び出すことで、ファイルから SVMSGD を再度読み込む。分類器を含むファイル内のノードを省略可能で指定できる

引数
filepathシリアライズされたSVMSGDへのパス
nodeName分類器を含むノードの名前

◆ setInitialStepSize()

virtual void cv::ml::SVMSGD::setInitialStepSize ( float InitialStepSize)
pure virtual
Python:
cv.ml.SVMSGD.setInitialStepSize(InitialStepSize) -> None

SVMSGD最適化問題のパラメータ initialStepSize。

参照
getInitialStepSize

◆ setMarginRegularization()

virtual void cv::ml::SVMSGD::setMarginRegularization ( float marginRegularization)
pure virtual
Python:
cv.ml.SVMSGD.setMarginRegularization(marginRegularization) -> None

SVMSGD最適化問題のパラメータ marginRegularization。

参照
getMarginRegularization

◆ setMarginType()

virtual void cv::ml::SVMSGD::setMarginType ( int marginType)
pure virtual
Python:
cv.ml.SVMSGD.setMarginType(marginType) -> None

マージン型。SVMSGD::MarginTypeのいずれか。

参照
getMarginType

◆ setOptimalParameters()

virtual void cv::ml::SVMSGD::setOptimalParameters ( int svmsgdType = SVMSGD::ASGD,
int marginType = SVMSGD::SOFT_MARGIN )
pure virtual
Python:
cv.ml.SVMSGD.setOptimalParameters([, svmsgdType[, marginType]]) -> None

選択した SVM SGDモデルに対して最適な引数値を設定する関数。

引数
svmsgdTypeSVMSGD分類器の型。
marginTypeマージン制約の型。

◆ setStepDecreasingPower()

virtual void cv::ml::SVMSGD::setStepDecreasingPower ( float stepDecreasingPower)
pure virtual
Python:
cv.ml.SVMSGD.setStepDecreasingPower(stepDecreasingPower) -> None

SVMSGD最適化問題のパラメータ stepDecreasingPower。

参照
getStepDecreasingPower

◆ setSvmsgdType()

virtual void cv::ml::SVMSGD::setSvmsgdType ( int svmsgdType)
pure virtual
Python:
cv.ml.SVMSGD.setSvmsgdType(svmsgdType) -> None

アルゴリズムの種類。SVMSGD::SvmsgdType のいずれか。

参照
getSvmsgdType

◆ setTermCriteria()

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

学習アルゴリズムの終了条件。反復回数の最大値 (maxCount) や、アルゴリズムを継続させるための反復間で許容される誤差の変化量 (epsilon) を指定できる。

参照
getTermCriteria

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