顔認識におけるMATLABアプリケーション:コード、説明、構文

公開: 2020-06-23

顔で携帯電話のロックを解除したり、ハイテクオフィスの監視システムを通過したりするたびに、精巧な顔認識技術がバックグラウンドで動作しています。 では、顔認識とは何ですか? MATLABを使用して顔認識を実行するにはどうすればよいですか?

顔認識は、テクノロジーを通じて人間の顔を識別するプロセスです。 顔認識システムは、コンピュータービジョンと機械学習技術を使用して、画像やビデオから抽出された顔の特徴をモデル化および分類します。 顔識別のアルゴリズムは、顔の特徴を抽出してマッピングし、それらを既知の顔のデータベースと比較して、最適なものを見つけます。

ソース

目次

顔認識におけるMATLAB

MATLABコードを使用して顔認識を実現することが可能です。 MATLABに組み込まれているクラスと関数を使用して、顔、目、鼻、口を検出できます。 コンピュータビジョンシステムツールボックスのオブジェクトvision.CascadeObjectDetectorシステムは、Viola-Jones顔検出アルゴリズムに基づいてオブジェクトを認識します。

MATLABObjectDetectorの説明

vision.CascadeObjectDetectorは、Viola-Jonesアルゴリズムを使用して、顔、目、口、鼻、または上半身を識別します。 カスタム分類器は、MATLABのImage Labelerを使用してトレーニングし、Systemオブジェクトと一緒に使用できます。 では、画像で顔の特徴や上半身はどのように検出されますか? 手順は次のとおりです。

  1. 最初のステップには、vision.CascadeObjectDetectorオブジェクトの作成とそのプロパティの設定が含まれます。
  2. このステップでは、オブジェクトは引数を使用して呼び出されます(関数のように動作しているかのように)。

読む:初心者のための15の興味深いMATLABプロジェクトのアイデアとトピック

オブジェクト検出器を作成するための構文

オブジェクト検出器の作成に使用される構文は次のとおりです。

  • 検出器=vision.CascadeObjectDetector
  • 検出器=vision.CascadeObjectDetector(mode1)
  • 検出器=vision.CascadeObjectDetector(Name、Value)
  • 検出器=vision.CascadeObjectDetector(XMLFILE)

構文の説明

  • 検出器=vision.CascadeObjectDetector:この構文は、Viola-Jonesアルゴリズムを使用してオブジェクトを検出する検出器の作成に使用されます。
  • 検出器=vision.CascadeObjectDetector(mode1):この構文は、入力ベクトル–mode1で定義されたオブジェクトを検出するように構成された検出器の作成に使用されます。
  • 検出器=vision.CascadeObjectDetector(Name、Value):この構文は、1つまたは複数の名前と値のペアを使用してプロパティを設定するために使用されます。各プロパティ名は引用符で囲まれています。 例:detector =vision.CascadeObjectDetector('ClassificationModel'、'UpperBody')

チェックアウト:機械学習プロジェクトのアイデア

プロパティ

特に指定がない限り、カスケードObject Detectorの機能は調整できません。つまり、オブジェクトを呼び出した後、それらの値を変更することはできません。 オブジェクトは呼び出されるとロックされ、ロック解除は「リリース」関数によって実行されます。

一方、調整可能なプロパティは、その値をいつでも変更できることを意味します。 したがって、 MATLABコードを使用した顔認識を理解する前に、いくつかの機能を見てみましょう

  • ClassificationModel:文字ベクトルとして定義されたこのプロパティは、検出するオブジェクトのタイプを制御する役割を果たします。 検出器のデフォルト構成は面を検出します。
  • MinSize:認識可能な最小のオブジェクトのサイズは、2要素のベクトル[高さ幅]として表されます。 プロパティ値が指定されていない限り、検出器はそれを分類モデルのトレーニングに使用される画像サイズに設定します。
  • MaxSize:認識可能な最小のオブジェクトのサイズは、2要素のベクトル[高さ幅]として表されます プロパティ値が指定されていない限り、検出器はそれをサイズ(I)に設定します。
  • ScaleFactor:1.0001より大きい指定値があります。 このプロパティは、MinSizeとMaxSizeの間で検出解像度を段階的にスケーリングするためのものです。
  • MergeThreshold: 4に等しい指定された整数値があります。ターゲットオブジェクトの周囲に複数の検出がある場合、しきい値は最終的な検出基準を定義します。
  • UseROI: falseとして指定されたこのプロパティは、入力画像の対象となる長方形の領域内のオブジェクトを検出するためにtrueに設定できます。

オブジェクト検出器を使用するための構文

  • bbox =検出器(I)
  • bbox =検出器(I、roi)

構文の説明

  • bbox = Detector(I)は、検出されたオブジェクトを含む「 M 」バウンディングボックスを定義するM行4列の行列であるbboxを返します。
  • bbox = Detector(I、roi)は、roiで指定された長方形の関心領域内のオブジェクトを検出するために使用されます。

入力引数

  • I —入力画像:トゥルーカラーまたはグレースケール(RGB)として指定されます。
  • model —分類モデル:文字ベクトルとして指定され、検出されるオブジェクトタイプを記述します。
  • XMLFILE —カスタム分類モデル: XMLファイルとして指定され、OpenCVトレーニング機能またはtrainCascadeObjectDetector関数を使用して作成できます。
  • roi —長方形の関心領域: 4要素のベクトル[ x y width height ]を使用して、この入力引数を指定します。

出力引数

bbox —検出:検出はM行4列の要素マトリックスとして返され、各行には4要素のベクトル[ x ywidthheight ]が含まれます

すべてのシステムオブジェクトに共通のオブジェクト関数

  • 手順:システムオブジェクトアルゴリズムを実行する場合
  • リリース:システムリソースをリリースするため
  • reset:システムオブジェクトの内部状態をリセットします。

顔認識用のMATLABコード

このセクションでは、MATLABコードを使用した顔認識の例を示します。

顔検出

ソース

ソース

step(Detector、I)は、検出中のオブジェクトの[x、y、Height、Width]を含むバウンディングボックスの値を返します。

ソース

鼻の検出

ソース

ソース

説明:

  • 引数「鼻」の受け渡しは、対象のオブジェクトが鼻であることを示します。
  • デフォルトの鼻検出構文はvision.CascadeObjectDetector('Nose')です。
  • ビジョンに渡されるデフォルトのパラメータ値。CascadeObjectDetectorは、入力画像に基づいて変更できます。
  • 'MergeThreshold'値をオーバーライドして、ターゲットオブジェクトの周囲での複数の検出を回避できます(上の画像のように)。

の検出

ソース

ソース

口の検出

ソース

ソース

また読む: MATLABのwhileループ:知っておくべきことすべて

まとめ

顔認識技術は個人の身元の確認に有益ですが、プライバシーの問題を引き起こします。 このテクノロジーは個人のフェイスプリントを使用するため、プライバシー、安全性、セキュリティの侵害と見なされることがよくあります。 MATLABを使用した面認識は、セキュリティが最大の関心事であるいくつかの場合に使用できます。 空港やオフィスからスマートフォンに至るまで、顔認識は多くのシステムや組織の不可欠な要素になっています。

機械学習について詳しく知りたい場合は、IIIT-BとupGradの機械学習とAIのPGディプロマをご覧ください。これは、働く専門家向けに設計されており、450時間以上の厳格なトレーニング、30以上のケーススタディと課題、IIIT-を提供します。 B卒業生のステータス、5つ以上の実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

顔認識とは何ですか?

顔認識は、個人情報の盗難から保護するため、および名前で個人を識別するために使用できます。 ただし、顔認識は比較的新しく、継続的に開発されているため、顔認識を有効に活用するには、顔認識の基本を理解することが重要です。 顔認識とは、顔画像が既知の人物のものであるかどうかを判断するプロセスのことです。 顔認識の問題は、2つのタスクに分けることができます。1)顔検出–画像内の顔の位置を特定します。2)顔認識–顔を持っている人を識別します。

Matlabとは何ですか?

Matlabは、数値計算用のプログラミング言語です。 基本的には、マトリックスプログラミング言語です。 科学や工学の計算でよく使われます。 他のプログラミング言語とは異なり、MATLABは行列言語として設計されており、行列の計算に適しています。 行列は、特に科学計算や工学計算で、さまざまな方程式で使用されます。 Matlabは、多数の関数を備えた高級プログラミング言語です。 数学の問題を解き、データを分析し、グラフを作成するために使用されます。

MatlabのViolaJonesとは何ですか?

Viola Jonesアルゴリズムは、顔検出と顔の表情の認識に使用されます。 Viola Jonesアルゴリズムは、2001年にPaulViolaとMichaelJonesによって最初に導入されたHistogramsof Oriented Gradients(HOG)に基づいています。これは、コンピュータービジョン、機械学習、および画像処理で使用されます。 Viola Jonesアルゴリズムは、完全なオブジェクト検出システムを提供し、歩行者検出、オブジェクト検出、または人間の検出に使用できます。 Viola Jonesアルゴリズムは、特徴抽出ステップ、クラスタリングステップ、およびオブジェクト分類ステップで構成されています。