顔検出と認識がますます普及しているのはなぜでしょうか?その背後にある技術は何ですか?

顔検出と認識がますます普及しているのはなぜでしょうか?その背後にある技術は何ですか?

過去数年間、顔認識は広く注目を集めており、画像分析の分野で最も有望なアプリケーションの 1 つと考えられています。顔検出は顔認識操作の大部分を占めると考えられます。顔の強さに基づいて、顔が含まれる画像の部分に計算リソースを集中させます。画像内の顔検出は、ポーズ、表情、位置と向き、肌の色、眼鏡やひげの有無、カメラのゲインの違い、照明条件、画像解像度など、顔の多様性のために複雑です。

オブジェクト検出は、画像処理とコンピューター ビジョンに関連するコンピューター サイエンスの分野であり、顔、建物、木、車などのオブジェクトの検出インスタンスと相互作用します。顔検出アルゴリズムの主な目的は、画像内に顔があるかどうかを判断することです。

[[434223]]

近年、顔認識や顔検出の分野では、より高度で正確なものを目指した研究が数多く提案されていますが、Viola-Jones がリアルタイム顔検出器を導入したことで、リアルタイムかつ高精度に顔を検出できる分野に革命が起こりました。

顔検出は、画像内の顔を検出するために使用される顔認識における最初の重要なステップです。これは物体検出の一部であり、セキュリティ、生体認証、法執行、エンターテイメント、個人の安全など、多くの分野で使用できます。

人や物体の監視や追跡のために、リアルタイムで顔を検出するために使用されます。 Ex-Mobile カメラや DSLR フレームの複数の外観を識別するために、カメラで広く使用されています。 Facebook は、画像内の顔を検出して識別するために顔検出アルゴリズムも使用しています。

この記事は、顔検出とは何か、その種類と仕組みを理解したいコンピューター ビジョンや AI 分野の初心者向けです。

顔検出方法

Yan、Kriegman、Ahuja は顔検出方法の分類を提案しました。 これらの方法は 4 つのカテゴリに分類され、顔検出アルゴリズムは 2 つ以上のグループに属することができます。 これらのカテゴリは次のとおりです。

1. 知識ベース

知識ベースの方法は、顔を検出するための人間の知識に基づいたルール セットに依存します。顔には鼻、目、口があり、それらは互いに一定の距離と位置にある必要があります。これらのアプローチの大きな問題は、適切なルールセットを確立することが難しいことです。ルールが一般化されすぎたり詳細すぎると、誤検知が多くなる可能性があります。この方法だけでは、複数の画像から多くの顔を見つけるのに十分ではありません。

2. 特徴ベース

特徴ベースの方法では、構造的な特徴を抽出することによって顔の位置を特定します。まず分類器としてトレーニングされ、次に顔領域と非顔領域を区別するために使用されます。そのアイデアは、顔に関する本能的な知識の限界を克服することです。この方法にはいくつかのステップがあり、顔写真が多数あっても成功率は 94% と報告されています。

3. テンプレートマッチング

テンプレート マッチング方法では、事前定義またはパラメーター化された顔テンプレートを使用して、テンプレートと入力画像間の相関関係を通じて顔を特定または検出します。たとえば、人間の顔は、目、顔の輪郭、鼻、口に分けられます。さらに、エッジ検出方法を使用することで、エッジのみで顔モデルを構築することができます。この方法は実装が簡単ですが、顔検出には不十分です。しかし、これらの問題に対処するために、変形可能なテンプレートが提案されています。

4. 外見に基づく

外観ベースの方法では、委任されたトレーニング顔画像のセットを利用して顔モデルを見つけます。 外観ベースの方法は、パフォーマンスの点で他の方法よりも優れています。 一般的に、外観ベースの方法は、統計分析と機械学習技術を利用して顔画像の関連する特徴を見つけます。 この方法は顔認識における特徴抽出にも使用されます。

外観ベースのモデルは、顔検出のためにさらに次のようにサブメソッドに分けられます。

  • Eigenfaceに基づく

顔認識のための固有顔ベースのアルゴリズム。主成分分析を使用して顔を効率的に表現する方法です。

  • 分布に基づく

PCA やフィッシャー判別などのアルゴリズムを使用して、顔のパターンを表すサブスペースを定義できます。背景画像パターンからターゲット パターン クラスのインスタンスを正しく識別するようにトレーニングされた分類器があります。

  • ニューラルネットワーク

ニューラル ネットワークは、物体検出、顔検出、感情検出、顔認識など、多くの検出問題を解決してきました。

  • サポートベクターマシン

サポート ベクター マシンは、決定超平面とトレーニング セット内の例の間のマージンを最大化する線形分類器です。まず、この分類器を顔検出に適用します。

  • ウィノウズのスパースネットワーク

彼らは、顔のパターンを表すものと顔以外のパターンを表すものの 2 つの線形ユニット、つまりターゲット ノードで構成されるスパース ネットワークを定義しました。時間がかからず、効率も非常に良いです。

  • ナイーブベイズ分類器

写真に顔が現れる確率は、トレーニング画像上の一連のパターンの出現頻度を数えることによって計算されます。分類器は、局所的な顔の外観と位置の結合統計を取得します。

  • 隠れマルコフモデル (HMM)

モデルの状態は顔の特徴であり、通常はピクセルのストリップとして描画されます。 HMM は、検出アルゴリズムを構築するために他の方法と組み合わせて使用​​されることがよくあります。

  • 情報理論的アプローチ

マルコフランダムフィールド (MRF) は、顔のパターンや関連する特徴に使用できます。 マルコフ過程は、カルバック・ライブラー距離を使用してクラス間の識別を最大化します。 したがって、この方法は顔検出に使用できます。

  • 帰納的学習

この方法は顔を検出するために使用されてきました。この目的には、Quinlan の C4.5 や Mitchell の FIND-S などのアルゴリズムが使用されます。

顔検出の仕組み

顔を検出するための技術は数多くあり、これらの技術の助けを借りて、顔をより正確に認識することができます。 これらのテクノロジーには、OpenCV、ニューラル ネットワーク、Matlab など、ほぼ同じ顔検出手順があります。顔検出は、画像内の複数の顔を検出することによって機能します。 ここでは顔検出に OpenCV を使用します。顔検出操作には次のようないくつかの手順があります。

1) まず、画像の場所を指定してインポートします。 次に、グレースケールでは顔を検出するのが簡単なので、画像を RGB からグレースケールに変換します。

2) その後、必要に応じて画像のサイズ変更、トリミング、ぼかし、シャープ化などの画像処理が行われます。

3) 次のステップは画像セグメンテーションです。これは、輪郭検出や単一画像内の複数のオブジェクトのセグメンテーションに使用され、分類器が画像内のオブジェクトや顔を素早く検出できるようにします。

4) 次のステップは、Voila と Jones が提案した Haar-Like 特徴アルゴリズムを顔検出に使用することです。このアルゴリズムは、フレームまたは画像内の顔の位置を見つけるために使用されます。すべての顔には、目の領域が隣接するピクセルよりも暗く、鼻の領域が目の領域よりも明るいなど、人間の顔に共通する特徴がいくつかあります。

Haar のようなアルゴリズムは、エッジ検出、線検出、中心検出を使用して画像内の目、鼻、口などを検出し、画像内のオブジェクトの特徴選択または特徴抽出を実行するためにも使用されます。 画像内の基本的な特徴を選択し、顔検出のためにこれらの特徴を抽出するために使用されます。

5) 次のステップは、画像内に顔の位置を示す長方形のボックスを形成する x、y、w、h 座標を指定することです。つまり、画像内の関心領域を示すと言えます。その後、顔が検出された関心領域に長方形のボックスを作成できます。 笑顔検出、目の検出、まばたきの検出など、検出には他の多くの検出技術も併用されます。

リアルタイムで顔検出器を実行する方法(ウェブカメラベース)

コードを実行するための要件 - Python、OpenCV、Webcam、Numpy。

  1. #ライブラリをインポートする
  2. cv2をインポート
  3. numpyをnpとしてインポートする
  4. #目の検出のための分類器をインポートする
  5. face_classifier = cv2.CascadeClassifier('Haarcascades/haarcascade_frontalface_default.xml')
  6. #目の検出のための分類器をインポートする
  7. face_classifier = cv2.CascadeClassifier('Haarcascades/haarcascade_frontalface_default.xml')
  8. eye_classifier = cv2.CascadeClassifier('Haarcascades/haarcascade_eye.xml')
  9. def face_detector (画像、サイズ= 0.5):
  10. #画像グレースケール変換する
  11. グレー = cv2.cvtColor(画像、cv2.COLOR_BGR2GRAY)
  12. 顔 = face_classifier.detectMultiScale(グレー、1.3、5)
  13. faces() の場合:
  14. 画像を返す
  15. # ROIから目の位置を検出するための座標を指定します
  16. (x, y, w, h)について
  17. x = x — 100
  18. w = w + 100
  19. y = y — 100
  20. h = h + 100
  21. cv2.rectangle (画像, (x, y), (x+w, y+h), (255, 0, 0), 2)
  22. roi_gray = グレー[y: y+h, x: x+w]
  23. roi_color = img[y: y+h, x: x+w]
  24. 目 = eye_classifier.detectMultiScale(roi_gray)
  25. (例: ey、ew、eh)場合:
  26. cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,0,255),2)
  27. roi_color = cv2.flip(roi_color, 1)
  28. roi_colorを返す
  29. #顔検出のためのウェブカメラの設定
  30. キャップ = cv2.VideoCapture(0)
  31. 真の場合:
  32. ret、フレーム = cap.read ()
  33. cv2.imshow (「私たちの顔抽出器」、face_detector (フレーム))
  34. cv2.waitKey (1) == 13の場合: #13はEnterキーです 
  35. 壊す
  36. # すべてが完了したら、キャプチャを解除します
  37. キャップを解放する()
  38. cv2.すべてのウィンドウを破棄します ()

顔検出は、多くの場合、顔認識システムの一部として生体認証に使用できます。顔検出は、ビデオ監視、人間とコンピュータの相互作用、画像データベースの管理にも使用できます。最新のデジタルカメラの中には、顔検出機能を使って自動的にフォーカスを合わせるものもあります。

顔認識技術は人工知能の分野における重要な技術であり、インテリジェントなビデオ監視のシナリオにおいて非常に幅広い応用の見込みがあります。

公共の場(地下鉄駅、バス停、街路、ホテルなど)でのセキュリティ管理や公安部による容疑者の追跡など、セキュリティ監視においても顔認識は大きな意義を持っています。公共の場に設置された防犯監視カメラは人々の顔を撮影し、その結果を公安部のネットワークにアップロードする。その後、その画像と容疑者の顔を比較し、公安職員の法執行活動に役立てる。 TSINGSEEは、AIインテリジェント検出・認識技術を核として、さまざまなシーンでインテリジェントビジネスシステムとプラットフォームの開発を継続し、AI分野での存在感を深めていきます。たとえば、EasyCVRは、AI顔検出、顔認識、ナンバープレート認識、音声インターホン、パンチルト制御、音と光のアラーム、監視ビデオ分析、データ集約などの機能を備えており、景勝地での歩行者検出、乗客の流れ分析などのシーンなど、複数のプロジェクトに実装されています。

<<:  プログラマーに必要ないくつかの一般的なソートおよび検索アルゴリズムの概要

>>:  512 個の GPU が 10 兆個のパラメータを持つ巨大モデルを作成します。このモデルは今年のダブルイレブンで使用されました

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

...

...

顔スキャンは便利ですが、隠れた危険も伴うので、注意が必要です。

顔をスキャンするだけで支払いができます。顔をスキャンするだけでさまざまなゲートに出入りできます。顔を...

Yandexとロシア郵便が配達ロボットサービスを開始

外国メディアの報道によると、ロシアの検索エンジン会社ヤンデックスとロシア郵便は最近、モスクワのいくつ...

Google、かわいい動物動画生成に優れたAI動画ジェネレータ「Lumiere」をリリース

海外メディアの報道によると、1月26日、GoogleはLumiereと呼ばれる人工知能ビデオジェネレ...

3日でAppleの無料リストのトップに立った「ZAO」、このままでは死んでしまう

8月30日夜、「ZAO」と呼ばれるAI顔変更ソフトウェアがソーシャルメディアを席巻した。ユーザーは正...

それは大したことだ! Google によれば、人類は 2029 年に不死を達成するそうです。病気も老化も痛みも完全に消え去ります! ?

この世で最も公平なものは、誕生、老い、病気、そして死だと思います。人生においてどれほど偉大な業績を成...

クイックソートアルゴリズムの普及チュートリアル

[[121950]]多くは語りません。次に、この記事の主題であるソートアルゴリズムについて説明しまし...

...

オンラインクレジットは消費者保護において「難しい問題」でしょうか? AIアプリケーションは消費者の権利を保護する

何億人ものインターネットユーザーの一人として、クレジット取引を処理するためにオフラインの営業所に行く...

機械学習における分類タスクの共通評価指標とPythonコード実装

データ ポイントを特定の数の定義済みクラスに分類するように ML モデルをトレーニングすることがタス...

人工知能と機械学習がもたらす劇的な変化を示す6つの事例

[[219896]]現在、人工知能 (AI) と機械学習 (ML) ほど注目されているテクノロジーは...

すべてのデータ サイエンティストに必要な 3 つのシンプルな異常検出アルゴリズム

外れ値検出の詳細と、Python で 3 つのシンプルで直感的かつ強力な外れ値検出アルゴリズムを実装...