2 つのポイントを要約すると、まず、同じ人を認識すると、どのような身分であっても、自分がその人であることがわかります。ステータスが変化します。 2 番目に、異なる人物を区別します。2 人は非常によく似ている、または両方とも化粧をしているかもしれませんが、ステータスがどのように変化しても、顔認識はこの 2 人が別人であることを認識できます。
顔認証自体は生体認証技術の一種であり、主に本人認証の手段を提供するものであり、精度という点では顔認証が最も優れているわけではありません。顔認識は、照明などの他の多くの条件の影響を受けます。顔認証は、一般にユーザーの協力をほとんど必要としないという利点があり、現在、コンピュータカメラ、携帯電話のビデオ入力装置、写真機器など、さまざまな場所の監視カメラが非常に普及しています。顔認証ができる。そのため、顔認証を導入する場合、新たな投資が非常に少なくて済むのがメリットです。
顔認識のコアプロセスいわゆるコアプロセスとは、どのような種類の顔認識システムであっても、基本的にこのプロセスが存在することを意味します。まず、顔検出、第 2 ステップ、顔位置合わせ、第 3 ステップ、特徴抽出。これら 3 つのステップは、すべての写真に対して実行する必要があります。比較する場合は、抽出された特徴を比較し、2 つの顔が同じ顔に属するかどうかを判断します。同じ人。
顔検出とは、大きなシーンの中に顔があるかどうかを判断し、顔の位置を見つけて切り出すことです。 。これは物体検出技術の一種であり、顔認識タスク全体の基礎となります。顔検出の基本的な方法は、画像ピラミッド上でウィンドウをスライドさせ、分類子を使用して候補ウィンドウを選択し、回帰モデルを使用して位置を修正することです。
上図の 3 つのウィンドウは、0.3 倍、0.6 倍、1.0 倍であり、顔の位置が不確かで、サイズが特定できない場合に使用できる技術です。グラフ自体は異なるサイズになりますが、スライディング ウィンドウは同じサイズになります。ディープネットワークに入力される画像のサイズは一般的に固定されているため、前面のスライディングウィンドウは基本的に固定です。固定スライディング ウィンドウがさまざまな範囲をカバーできるようにするために、画像全体のサイズがさまざまな比率に拡大縮小されます。ここで示した 0.3、0.6、1.0 は単なる例であり、実際には他にもさまざまな倍数が使用されます。
分類子は、スライディング ウィンドウの各位置を調べて、それが顔であるかどうかを判断することを指します。これは、スライディング ウィンドウがスライドする位置に顔全体が含まれていない場合や、顔全体よりも大きい場合があるためです。 . .より正確な顔を見つけるために、回帰モデルにスライディング ウィンドウを挿入すると、顔検出の精度を修正するのに役立ちます。
入力はスライディングウィンドウで、出力時に顔が入っていた場合、どの方向をどれだけ補正する必要があるのか、つまりΔx、Δy、Δw、Δhはその座標とその座標です。幅と高さ、およそどのくらいの補正量か。補正量を求め、識別器を用いて人物の顔の窓であると判断した後、これらを組み合わせることで、より正確な人物の顔の位置を取得することができる。
以上は顔検出の処理ですが、他の物体検出にも応用できます。
機種を問わず、速度と精度に基づいています
(1) 速度は指定された解像度での検出速度です
スライディングウィンドウがスライドするため解像度は指定されています毎回各位置に到達するまでに分類と回帰判定を行う必要があるため、画像が大きくなると検出と判定に必要なウィンドウの数が多くなり、顔検出全体に時間がかかる場合があります。
したがって、アルゴリズムまたはモデルの品質を評価するには、固定解像度での検出速度を調べる必要があります。一般的に、検出速度はどれくらいですか? 100 ミリ秒、200 ミリ秒、50 ミリ秒、30 ミリ秒など、写真の顔を検出するのにかかる時間です。
速度を表すもう一つの方法にfpsというものがありますが、現在一般的なWebカメラは25fpsや30fpsのものが多く、これは1秒間に何枚の画像を処理できるかということを意味しており、fpsの利点を活かして顔検出が可能かどうかを判断することができます。リアルタイム検出を実現するには、顔検出の fps 数がカメラの fps 数より大きければリアルタイム検出が可能ですが、それ以外の場合はリアルタイム検出ができません。
(2) 同じ写真内の顔の数が速度に影響するかどうか
実際に操作してみると、主にスライドの数に影響されるため、ほとんどの面は影響を受けません。ウィンドウの数はヒット数に影響します。ヒット数はそれほど大きくありませんが、若干の影響があります。
精度は基本的に再現率、誤検出率、ROC 曲線によって決まります。再現率は写真のうち人間の顔であり、実際のモデルが人間の顔であると判断する割合を指します、誤検出率とネガティブサンプルエラー率は人間ではない写真の割合を指します顔だが人間の顔と誤認される。
ACC 精度
ACC の計算方法は、正しいサンプル数をサンプルの総数で割ることです。たとえば、顔検出のために 10,000 枚の写真を撮影した場合、 、これらの 10,000 写真には顔があるものもあれば、顔がないものもあります。次に、正しい比率を決定します。
しかし、この精度には問題があります。判定に使用する場合、陽性サンプルと陰性サンプルの比率は関係ありません。つまり、陽性サンプルの正答率は気にしません。そして、陰性サンプルの正解率ですが、それが何かというと、私が気にするのは合計だけです。このモデルの精度が 90% である場合、他の人は陽性サンプルと陰性サンプルの違いを知りません。分類を含め、回帰も含めて、一般的に言えば、分類モデルはまず回帰を使用して、いわゆる信頼水準を取得します。信頼水準が特定の値より大きい場合は、その信頼水準であるとみなされ、次に信頼水準が高くなった場合に、信頼水準が得られます。同じ値より小さい場合は、そうでないとみなします。
ACC 統計モデルは調整可能です。つまり、信頼水準を調整すると精度が変わります。
したがって、ACC 値自体はサンプルの割合に大きく影響されるため、モデルの品質を特徴付けるためにそれを使用するのは少し問題があります。テスト インジケーターが 99.9% に達したと表示した場合、単にこの値を見ると、だまされやすいか、この統計に偏りがあることがわかります。この問題を解決するために、一般に ROC と呼ばれる曲線がこのモデルの精度を特徴付けるために使用されます。
ROC 受信機動作特性曲線
##横軸: FPR (偽陽性率)、陰性サンプルの誤り率 縦軸: TPR (真陽性率)、陽性サンプルの正解率 正のサンプルでのアルゴリズムと負のサンプルでのパフォーマンスを区別でき、曲線の形状は正と負のサンプルの比率とは関係ありません。 ROC (受信者動作特性) 曲線は、横軸と縦軸に負のサンプル誤り率と正のサンプル正解率をマークするものです。この場合、同じモデルはこのグラフ上の点として表示されません。 . 、または単一のデータではなく、行です。この線は信頼性のしきい値であり、調整値が高くなるほど厳しくなり、低くすると厳しくなくなります。これを超えると、信頼度のしきい値の変更の影響が反映される可能性があります。 今後は、精度がどの程度かを直接尋ねるのではなく、ROC 曲線を確認することをお勧めします。これにより、モデルの機能を判断しやすくなります。 顔の位置合わせ 顔の位置合わせの目的は、顔のテクスチャを可能な限り標準の位置に調整し、顔認識の難易度を下げることです。 。 その難易度を人為的に軽減するには、まず位置を調整する、つまり検出された人物の目、鼻、口をすべて同じ位置に置くと、モデルは次のようになります。比較する 検索する場合、同じ場所の近くにある物体を探すだけで済みますが、同じか似ているかは、やはり大きく異なります。これで位置合わせのこのステップを実行できるようになりました このステップで現在使用している一般的な方法は 2 次元の方法であり、この画像内の主要な特徴点を見つけることです。通常、それらは 5 点、19 点、 60箇所以上、80箇所以上の様々なスポットがあります。ただし、顔認識の場合は基本的に 5 つで十分です。 この5点以外の画像は、補間と同様の操作を行ってその位置に貼り付けると考えられ、完成したら後段の顔認証に送ることができます。顔認識機で行われます。これは一般的なアプローチですが、より最先端のアプローチもあります。一部の研究機関では、いわゆる 3D フェイス アライメントを使用しています。これは、正面の顔がどのように見えるか、たとえば 45 度回転するとどのようになるかを伝えることを意味します。そして、この種の写真で彼を訓練した後、彼は、私が左右に 45 度回転した写真を見ると、それが右に回転したときにどのように見えるかが高い確率であり、このモデルがわかるようになります。それは推測できます。 顔特徴抽出アルゴリズム以前の従来の手法は、いわゆるローカル テクスチャ モデル、グローバル テクスチャ モデル、形状回帰モデルなどでした。現在、より一般的なのは、ディープ畳み込みニューラル ネットワーク、リカレント ニューラル ネットワーク、または 3DMM パラメーターを備えた畳み込みニューラル ネットワークの使用です。いわゆる 3DMM パラメータには 3 次元情報が含まれており、カスケードされたディープ ニューラル ネットワークがあります。 カスケード ディープ ニューラル ネットワーク、つまり、顔を取得するには、まず 5 つの点の位置を推測する必要があります。単一のモデルを使用する場合は、これを次の時点で行う必要があります。その場合、モデルは非常に複雑になる必要があります。 しかし、このモデルの複雑さを軽減するにはどうすればよいでしょうか?つまり、複数の入力が行われます。このネットワークへの最初の入力の後、推測が行われます。この推測は許容範囲内ですが、精度はそれほど高くありません。顔の 5 つの点がどこにあるかがおおよそわかります。次に、これら 5 つの点と元の画像を 2 番目のネットワークに入力して、おおよその補正量を取得します。基本的な 5 点を取得してから補正量を求めると、元の画像から直接正確な 5 点を見つけるよりも優れています。この点は少し簡単です。したがって、段階的に改良し、複数のネットワークをカスケード接続するこの方法を使用すると、速度と精度のより良いバランスを実現できます。実際、現在これを行うときは、基本的に 2 つのレイヤーを使用しており、ほぼ同じです。
NRMSE(Normalized Root Mean Square Error)とは、正規化された二乗平均平方根誤差のことです
##各特徴点の座標とラベル付けされた座標の差を測定します。 精度異なるサイズの顔をまとめて相互に比較できるようにするために、統計的に正規化二乗平均平方根誤差と呼ばれるものが使用されます。たとえば、紙に 5 つの点を描き、これら 5 つの点の間の距離を機械に知らせます。指定された値が実際の距離に近いほど、予測の精度が高くなります。一般に、予測値には多少の誤差が生じますが、この精度の値をどのように表現するのでしょうか。通常、距離の平均値または二乗平均平方根値で表します。ただし、同じマシンが異なるサイズの画像を予測すると、画像が大きくなるほど誤差の絶対値が大きくなるため、精度の値が異なって見えるという問題が発生します。同じ原理が異なるサイズの面にも当てはまります。したがって、私たちの解決策は、人間の顔の元のサイズを考慮することです. 一般に、人間の目の間の距離または人間の顔の対角線の距離を分母として、距離の差を目の間の距離で割ります。または顔の対角線で割ると、この場合は基本的に顔の大きさによって変わらない値が得られ、評価に用いることができます。 顔の比較(1) 目的: 並んだ 2 つの顔が同じ人物のものかどうかを判断する(2) 難易度: 同一人物 顔の見え方が異なります。特に光、煙、化粧などの影響を受けるなど、さまざまな条件下での状態。 2 つ目は、2 次元の写真にマッピングされたさまざまなパラメータによって引き起こされます。いわゆる 2 次元のパラメータへのマッピングは、元の顔はこのように見えることを意味します。撮影装置が写真を撮るとき、写真が彼に提示する角度、彼との距離、ピントの正確さ、撮影角度、光の蓄積などが影響し、同じ顔でも違った状態に見えます。 3つ目は年齢や整形の影響です。 顔比較方法(1) 従来の方法
1. HOG、SIFT、ウェーブレット変換などのいくつかの特徴を手動で抽出します。つまり、抽出された特徴には固定パラメータが必要になる場合があり、トレーニングや学習は必要なく、特徴を比較するために一連の固定アルゴリズムが使用されます。(2) 深さ法
主流の方法は深さ法、つまりディープ畳み込みニューラル ネットワークであり、このネットワークは通常、以前のネットワークに代わって DCNN を使用します。それらの特徴抽出手法は、写真や顔からいくつかの異なる特徴を抽出するものです DCNN には多くのパラメータがあります これらのパラメータは人から教えられるのではなく学習されます 学習されれば、できるようになるのと同じになります人々が要約したものよりも優れています。 次に、取得された特徴セットは、一般的に 128 次元、256 次元、または 512 次元または 1024 次元を持ち、それらを比較して、特徴ベクトル間の距離を判断するには、ユークリッド距離またはコサイン類似度が一般的に使用されます。 。 顔比較の評価指標も速度と精度に分かれており、速度には単一の顔特徴ベクトルの計算時間と比較速度が含まれます。精度には ACC と ROC が含まれます。以前にも紹介しましたので、ここでは比較速度に焦点を当てます。 通常の比較は、2 点間の距離を計算する単純な操作です。内積 (2 つのベクトルの内積) を実行する必要があるのは 1 回だけですが、顔認識で 1 が検出された場合は次のようになります。 N 比較する場合、N データベースが非常に大きい場合、写真を取得して N データベースで検索すると、検索数が非常に多くなります。たとえば、N データベースが 100 万件の場合、検索が必要になる場合があります。 100万回ということは100万回の比較に相当しますが、現時点ではまだ合計時間の要件があるため、この比較を高速化するためのさまざまな技術が存在します。 その他の顔認識関連アルゴリズム主に顔追跡、品質評価、生体認識などがあります。 #●顔追跡監視やその他のビデオ顔認識シナリオでは、顔認識プロセス全体が、通り過ぎる同じ人物のフレームごとに実行されると、コンピューティング リソースを浪費するだけでなく、また、低品質のフレームによっては誤認識を引き起こす可能性があるため、どの顔が同一人物であるかを判断する必要があります。また、認識用に適切な写真を選択することで、モデルの全体的なパフォーマンスが大幅に向上します。現在では、顔追跡だけでなく、さまざまな物体追跡や車両追跡などでも追跡アルゴリズムが使用されていますが、そのようなアルゴリズムは検出に依存していないか、常に依存しているわけではありません。たとえば、最初にオブジェクトを検出した後は、それをまったく検出せず、追跡アルゴリズムのみを使用してオブジェクトを検出します。同時に、非常に高い精度を達成し、損失を回避するために、各追跡には多くの時間がかかります。
追跡された顔が顔認識器の範囲と一致しないことを防ぐために、一般的には顔検出器を使用して検出が行われますが、この検出方法は顔検出に依存しており、比較的軽量です。特定のシナリオでは速度と品質のバランスを実現できます。
この検出方法は、Tracking by Detection (検出による追跡) と呼ばれ、フレームごとに顔検出が実行されます。顔が検出された後、4 つの値に基づいて、各顔の座標位置、その幅と高さ、前後の 2 つのフレームにおける顔の位置とサイズを比較することで、2 つの顔が同じ移動物体に属しているかどうかを大まかに推測できます。 。
# オプションの間隔全画面検出
は、検出による追跡を実行するときに参照します。1 つの方法は、前後 2 つのフレームで全画面検出を行う、いわゆるフルスクリーン検出です。画面検出 画面全体をスキャンすることですが、この方法は非常に時間がかかるため、数フレームごとに画面全体をスキャンする別の方法が使用されることもあります。一般的には、次のフレームを予測し、位置を検出しません。前のフレームであれば、フレームの位置を上下左右に少し拡大して再検出すると、高確率で検出できることが多く、ほとんどのフレームは検出できるスキップしました。
なぜ数フレームごとに全画面検出を行う必要があるのでしょうか?
は、新しいオブジェクトが入ってくるのを防ぐためです。前のオブジェクトの位置に基づいて検索するだけでは、新しいオブジェクトが入ってきたときに検出されない可能性があります。この状況を防ぐには、待機することができます。 5 フレーム、10 フレーム後にもう一度全画面検出を実行します。
# 顔品質評価
#顔認識トレーニング データなどの制限により、すべての状態の顔に対して良好な結果を得ることが不可能であるため、品質評価によって検出された人物を判断します。顔の特徴と認識装置との一致度に応じて、一致度の高い顔だけが選択されて認識に送信され、システムの全体的なパフォーマンスが向上します。
① 顔の大きさ 小さすぎる顔が認識に選択されると、認識効果が大幅に低下します。
② 顔の姿勢とは 3 軸の回転角度を指し、一般に認識器の学習に使用されるデータに関係します。トレーニング中に姿勢の小さな顔をほとんど使用する場合、実際に認識を行う際には、たわみの大きい顔を選択しないことが最善です。そうしないと、適用できなくなります。
③ ぼかしの度合いは非常に重要で、写真の情報が失われていると認識に問題が生じます。
④ オクルージョンは、目や鼻などが覆われている場合、その部分の特徴が得られないか、得られたものが間違っている、オクルーダーの特徴であり、その後の影響に影響します。認識。 。遮蔽されていると判断できる場合は、破棄するか、認識モデルに含めないなどの特別な処理を実行します。
# 生体認識
#これは、すべての顔認識システムが遭遇する問題であり、顔だけが認識される場合、写真も騙される可能性があります。システムへの攻撃を防ぐために、これが本物の顔であるか偽の顔であるかを判断するためのいくつかの判断が行われます。
基本的に、現在 3 つの方法があります:
① 従来の動的認識 多くの銀行の現金引き出し機では、ユーザーにまばたきしたり、頭を向けたりするなど、ユーザーに何らかの協力を求める必要があります。これは、ユーザーがまばたきや首を回すことによって同じコーディネートをしたかどうかを判断するために使用されます。したがって、動的認識にはユーザーの多大な協力が必要になるため、ユーザーエクスペリエンスが少し悪くなるという問題があります。
② 静的認識とは、動作に基づいて判断するのではなく、写真自体に基づいて本物の顔か偽の顔かを判断することを意味します。これは、携帯電話やディスプレイ画面を使用して攻撃するなど、一般的に使用されている比較的便利な攻撃方法に基づいています。
この種のスクリーンの発光能力は、実際の照明条件下での人間の顔の発光能力とは異なります。たとえば、1,600万色の発光色を持つモニターでは、可視光の発光能力、つまり、すべて連続しており、すべての帯域を放射できます。したがって、このような画面を撮影すると、実際の自然環境での一次撮影と比較して、人間の目には多少の変化や不自然さがあるように見えます。この不自然さをトレーニング用のモデルに落とし込んだ後でも、この微妙な違いに基づいてそれが本当の顔であるかどうかを判断できます。
③ ステレオ認識。2台のカメラまたは深度情報付きカメラを使用すると、1つの画面で人物の3D画像化に相当する、カメラからの各撮影点の距離を知ることができます。撮影するには画面は平面でなければなりませんが、私はそれが平面であることを認識していますが、その平面は決して本物の人間ではありません。これは、3次元の認識手法を用いて平面を除外するというものです。
まずは分類を行う 比較の観点からは1:1認識方式と1:N認識方式があり、比較対象の観点からは写真比較があるシステムとビデオ比較システム; 導入形態に応じて、プライベート導入、クラウド導入、またはモバイルデバイス導入があります。
写真 1:1 認識システム
1:1 認識システムは最も単純です。2 枚の写真を撮り、各写真の特徴を生成します。ベクトル、次に、2 つの特徴ベクトルを比較して、それらが同一人物であるかどうかを確認し、識別できます。
写真 1: N の識別システム
1: 写真素材がサンプル ライブラリにあるかどうかを判断する N の識別システム。このサンプル ライブラリはあらかじめ用意されており、ホワイトリストまたはブラックリストが含まれており、各人物の写真が含まれており、この写真から一連の特徴ベクトルが生成されます。これはサンプル ライブラリとして使用され、アップロードされた写真がサンプル ライブラリ内のすべての特徴と比較され、どれが人物に最も似ているかを確認する 1:N 認識システムです。
ビデオ 1:1 認識システム
ビデオ 1:1 認識システムは写真の 1:1 システムと似ていますが、比較対象は異なります。写真だけでなく、ビデオ ストリームも。ビデオ ストリームを取得した後、検出、追跡、品質評価を行い、適切な写真を取得した後に比較します。
ビデオ 1: N 認識システム
ビデオ 1: N アダプテーション システムは、認識に使用される点を除けば、1:N 写真システムと似ています。重要なのはビデオ ストリーミングであり、これには検出、追跡、品質評価も必要です。
# 一般に、いわゆるシステム構成は必ずしも顔認証システムである必要はなく、さまざまな AI システムにも同様のことが考えられます。 1 つ目はコンピューティング リソース層で、CPU または GPU 上で実行されます。GPU 上で実行すると、CUDA、CUDN などもサポートされる場合があります。
2 つ目は、ディープ ラーニング フォワード ネットワーク コンピューティング ライブラリ、マトリックス コンピューティング ライブラリ、画像処理ツール ライブラリなどのコンピューティング ツール層です。アルゴリズムを作成する人全員が独自のデータ操作を記述することは不可能であるため、TensorFlow、MXNET、Caffe などの既存のデータ操作ライブラリを使用することも、独自のセットを記述することもできます。
以上が顔認識アルゴリズムとシステムに関する一般科学に関する 10,000 ワードの長文記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。