OpenCV 4.5.3(日本語機械翻訳)
|
Abstract base class for all face recognition models [詳解]
#include <face.hpp>
cv::Algorithmを継承しています。
cv::face::BasicFaceRecognizer, cv::face::LBPHFaceRecognizerに継承されています。
公開メンバ関数 |
|
virtual CV_WRAP void | train (InputArrayOfArrays src, InputArray labels)=0 |
モデルを学習します。FaceRecognizerを、与えられたデータと関連付けられたラベルで訓練します。[【詳解】(英語]
|
|
virtual CV_WRAP void | update (InputArrayOfArrays src, InputArray labels) |
aを更新します。FaceRecognizerを、与えられたデータと関連付けられたラベルで訓練します。[【詳解】(英語]
|
|
CV_WRAP_AS (predict_label) int predict(InputArray src) const | |
CV_WRAP void | predict (InputArray src, CV_OUT int &label, CV_OUT double &confidence) const |
与えられた入力画像に対して、ラベルとそれに関連する信頼度(例:距離)を予測します。[【詳解】(英語]
|
|
CV_WRAP_AS (predict_collect) virtual void predict(InputArray src | |
|
|
virtual CV_WRAP void | write (const String &filename) const |
モデルを保存するFaceRecognizerとそのモデルの状態を読み込みます.[【詳解】(英語]
|
|
virtual CV_WRAP void | read (const String &filename) |
をロードします.FaceRecognizerとそのモデルの状態を読み込みます.[【詳解】(英語]
|
|
virtual void | write (FileStorage &fs) const CV_OVERRIDE=0 |
virtual void | read (const FileNode &fn) CV_OVERRIDE=0 |
virtual bool | empty () const CV_OVERRIDE=0 |
virtual CV_WRAP void | setLabelInfo (int label, const String &strInfo) |
指定されたモデルのラベルの文字列情報を設定します。[【詳解】(英語]
|
|
virtual CV_WRAP String | getLabelInfo (int label) const |
ラベルの文字列情報を取得します。[【詳解】(英語]
|
|
virtual CV_WRAP std::vector< int > | getLabelsByString (const String &str) const |
文字列によるラベルのベクトルを取得します。[【詳解】(英語]
|
|
virtual double | getThreshold () const =0 |
threshold パラメータアクセッサ - デフォルトの BestMinDist コレクターに必要です。[【詳解】(英語]
|
|
virtual void | setThreshold (double val)=0 |
モデルの閾値設定[【詳解】(英語]
|
|
![]() |
|
virtual CV_WRAP void | clear () |
アルゴリズムの状態をクリアする[【詳解】(英語]
|
|
CV_WRAP void | write (const Ptr< FileStorage > &fs, const String &name=String()) const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。 |
|
virtual CV_WRAP void | save (const String &filename) const |
virtual CV_WRAP String | getDefaultName () const |
公開変数類 |
|
Ptr< PredictCollector > collector | const = 0 |
限定公開変数類 |
|
std::map< int, String > | _labelsInfo |
その他の継承メンバ |
|
![]() |
|
template<typename _Tp > | |
static Ptr< _Tp > | read (const FileNode &fn) |
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
|
|
template<typename _Tp > | |
static Ptr< _Tp > | load (const String &filename, const String &objname=String()) |
ファイルからアルゴリズムを読み込む[【詳解】(英語]
|
|
template<typename _Tp > | |
static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String()) |
文字列からアルゴリズムを読み込む[【詳解】(英語]
|
|
![]() |
|
void | writeFormat (FileStorage &fs) const |
すべての顔認識モデルのための抽象ベースクラス
OpenCV のすべての顔認識モデルは,抽象ベースクラスFaceRecognizerから派生します.このクラスは,OpenCV のすべての顔認識アルゴリズムへの統一的なアクセスを提供します.
もう少し詳しく説明しますとFaceRecognizerは,一見すると強力なインタフェースには見えないので,もう少し詳しく説明します.しかし すべてのFaceRecognizerはAlgorithmであるため,(実装で許可されていれば)すべてのモデルの内部を簡単に取得/設定することができます.Algorithmは,比較的新しい OpenCV の概念で,2.4 リリースから利用可能です.その説明を読んでみてください。
Algorithmは,すべての派生クラスに対して,以下の機能を提供します.
さらに、すべてのFaceRecognizerをサポートしています。
予測値にしきい値を適用したい状況に遭遇することがあります。顔認識でよくあるのは、ある顔が学習データセットに含まれているのか、それとも未知の顔なのかを判断することです。予測の閾値を設定するためのパブリックAPIが、なぜFaceRecognizerには、予測に閾値を設定するためのパブリックAPIがないのかと思うかもしれませんが、安心してください。それはサポートされています。これは、抽象クラスの中に、あらゆる可能性の閾値を設定/取得するためのインターフェースを提供する汎用的な方法がないということです。すべての可能な FaceRecognizerアルゴリズム。しきい値を設定する適切な場所は、特定のFaceRecognizerそして、すべてのFaceRecognizerはAlgorithm(であるため(上記参照)、実行時にしきい値を取得・設定することができます。
ここでは、モデル作成時にEigenfacesメソッドに閾値を設定する例を示します。
しきい値を試すために、モデルをトレーニングすることができない場合もあります。のおかげでAlgorithmのおかげで、ランタイム中にモデル内部のしきい値を設定することができます。上記で作成したEigenfaceモデルの予測値をどのように設定/取得するかを見てみましょう。
上記のようにしきい値を0.0に設定した場合、:
とすると、予測されるラベルは-1となり、この顔は未知であるということになります。
では、すべてのFaceRecognizerはAlgorithmの名前を取得するにはAlgorithm::nameを使います。FaceRecognizer:
cv::face::FaceRecognizer::CV_WRAP_AS | ( | predict_collect | ) |
src | 予測値を得るためのサンプル画像。 |
collector | すべての結果を受け入れるユーザー定義のコレクターオブジェクト |
このメソッドを実装するためには, predict(InputArray src, CV_OUT int &label, CV_OUT double &confidence) と同じ内部サイクルを行う必要がありますが,「最良の結果」を得ようとはせず,与えられたコレクターを用いて呼び出し側に再送します.
cv::face::FaceRecognizer::CV_WRAP_AS | ( | predict_label | ) | const |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
|
pure virtual |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::Algorithmを再実装します。
cv::face::BasicFaceRecognizerで実装されています.
|
virtual |
ラベルの文字列情報を取得します。
未知のラベルIDが指定された場合や,指定されたラベルIDに関連するラベル情報がない場合,このメソッドは空の文字列を返します.
|
virtual |
文字列によるラベルのベクトルを取得します。
この関数は、関連付けられた文字列情報の中で、指定されたサブストリングを含むラベルを検索します。
|
pure virtual |
threshold パラメータアクセッサ - デフォルトの BestMinDist コレクターに必要です。
cv::face::BasicFaceRecognizer,cv::face::LBPHFaceRecognizerで実装されています.
CV_WRAP void cv::face::FaceRecognizer::predict | ( | InputArray | src, |
CV_OUT int & | label, | ||
CV_OUT double & | confidence | ||
) | const |
与えられた入力画像に対して、ラベルとそれに関連する信頼度(例:距離)を予測します。
src | 予測値を得るためのサンプル画像。 |
label | 与えられた画像に対する,予測されたラベルです. |
confidence | 予測されたラベルに関連付けられた信頼度(例:距離)。 |
constという接尾辞は、予測がモデルの内部状態に影響を与えないことを意味していますので、このメソッドは異なるスレッド内から安全に呼び出すことができます。
以下の例では、学習済みモデルから予測値を取得する方法を示しています。
または、予測値と関連する信頼度(距離など)を取得する。
|
pure virtual |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::Algorithmを再実装します。
cv::face::BasicFaceRecognizer,cv::face::BasicFaceRecognizerで実装されています.
|
virtual |
をロードします.FaceRecognizerとそのモデルの状態を読み込みます.
与えられたXMLまたはYAMLファイルから,永続化されたモデルとその状態を読み込みます.すべてのFaceRecognizerはモデルの状態を読み込むために FaceRecognizer::load(FileStorage& fs) を上書きする必要があります。FaceRecognizer::load(FileStorage& fs) は、モデルの保存を容易にするために FaceRecognizer::load(const String& filename) によって呼び出されます。
cv::face::BasicFaceRecognizer出再実装されます。
|
virtual |
指定されたモデルのラベルの文字列情報を設定します。
文字列 info は、指定されたラベルに対して以前に設定されていた場合は、指定された値に置き換えられます。
|
pure virtual |
モデルの閾値設定
cv::face::BasicFaceRecognizer,cv::face::LBPHFaceRecognizerで実装されています.
|
pure virtual |
モデルを学習します。FaceRecognizerを、与えられたデータと関連付けられたラベルで訓練します。
src | 学習画像、つまり学習したい顔のデータ。データはvector<br>として与えられなければなりません。Mat>. |
labels | 画像に対応するラベルは,vector<int> またはCV_32SC1型のMatCV_32SC1 型の |
次のソースコードは,与えられた画像の集合に対して,Fisherfaces モデルを学習する方法を示しています.画像は imread によって読み込まれ,std::vector<Mat>. 各画像のラベルは,std::vector<int>(CV_32SC1 型のMatCV_32SC1型の).ラベルとは,その画像が属する被写体(人)のことであり,同じ被写体(人)は同じラベルを持つべきです.利用できるものFaceRecognizerについては,ラベルの順番を気にする必要はなく,同じ人が同じラベルを持つようにすればよい.
さて、いくつかのイメージを読み取ったところで、新しいFaceRecognizer. この例では、Fisherfacesモデルを作成し、すべての可能なFisherfacesを保持することにします。
そして最後に,与えられたデータセット(顔画像とラベル)で訓練します.
|
virtual |
aを更新します。FaceRecognizerを、与えられたデータと関連付けられたラベルで訓練します。
src | 学習画像、つまり学習したい顔のデータ。データはvector<br>として与えられなければなりません。Mat>. |
labels | 画像に対応するラベルは,vector<int> またはCV_32SC1型のMatCV_32SC1 型の |
この方法は,(おそらく訓練された)モデルを更新します.FaceRecognizerを更新するが,アルゴリズムがそれをサポートしている場合に限る.LBPH(Local Binary Patterns Histograms)認識器(createLBPHFaceRecognizer参照)を更新することができます。EigenfacesやFisherfaces法では,アルゴリズム的に不可能で,次の方法でモデルを再推定する必要があります.FaceRecognizer::train. いずれにせよ、train の呼び出しは既存のモデルを空にして新しいモデルを学習しますが、update はモデルデータを削除しません。
updateの呼び出しは、Eigenfacesモデル(参照EigenFaceRecognizer::create)でupdateを呼び出すと、以下のようなエラーが発生します。
|
virtual |
モデルを保存するFaceRecognizerとそのモデルの状態を読み込みます.
このモデルを、XMLまたはYAMLとして、与えられたファイル名に保存します。
filename | このモデルを保存するファイル名はFaceRecognizerを保存するファイル名(XML/YAMLのいずれか)です。 |
すべてのFaceRecognizerは、内部モデルの状態を保存する FaceRecognizer::save(FileStorage& fs) を上書きします。FaceRecognizer::save(const String& filename) は、モデルの状態を与えられたファイル名に保存します。
constという接尾辞は、予測がモデルの内部状態に影響を与えないことを意味していますので、このメソッドは異なるスレッド内から安全に呼び出すことができます。
cv::face::BasicFaceRecognizer出再実装されます。
|
pure virtual |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。 このモデルを、与えられたFileStorage.
fs | のクラスはスレッドセーフではありません。FileStorageにこのモデルを保存します。FaceRecognizerに保存します。 |
cv::Algorithmを再実装します。
cv::face::BasicFaceRecognizer,cv::face::BasicFaceRecognizerで実装されています.