フェイスアプリケーションはコンピュータビジョンシステムの大部分を占めています。ディープラーニングが普及する前は、従来の機械学習に基づくフェイスアプリケーションはすでに非常に成熟しており、多くの商用アプリケーションシナリオがありました。この記事では、実行可能なデモを使用して、「顔検出」、「顔比較」、「顔特徴付け検出(特徴の配置)」、「瞬き検出」、「生体」など、顔アプリケーションの一般的な技術概念を説明します検出「および」疲労検出」。
ソースコード:パブリックアカウント
顔検出
厳密に言えば、顔検出は写真内の顔の位置特定のみを含み、顔検出は写真内の顔の長方形のフレーム(左、上、右、下)のみを取得し、他のコンテンツは取得しません。現在、インターネット上の「顔検出」の概念はほとんど曖昧で多くのものを含んでおり、例えば、上記の位置付けに加えて、後述する顔比較も含まれていますが、これは厳密には間違っています。
顔のコントラスト
顔検出テクノロジを使用して、画像(ビデオフレーム)に顔が含まれていることを検出した場合、その顔を特定する方法を教えてください。これは私たちの一般的な顔認証アプリケーションです。データベース内の他の顔と顔を比較して、データベースに既にある顔に最も似ている顔を確認してください。従来の機械学習では、顔の比較プロセスでは、最初に顔の特徴コードを抽出し、元の顔のRGB画像を置き換える特徴ベクトルを見つけてから、2つの顔の特徴ベクトル間の距離を計算して、顔が似ているかどうかを判断する必要があります(従来の機械学習では機能エンジニアリングは前の記事を参照できます)。距離が特定の値よりも小さい場合は、同じ面と見なされ、その逆も同様です。
上の図は、従来の機械学習手法における顔の比較プロセスを示しています。プロセスは比較的複雑であり、適切な特徴ベクトルを抽出する必要があります。この特徴は、元のRGB顔画像を表しています。ディープラーニングに基づく顔の比較は比較的単純で、直接エンドツーエンドのプロセスにすることができます。
もちろん、いくつかの方法は、ニューラルネットワークを介して顔の特徴を抽出し、従来の機械学習方法を使用して、分類のために同様のSVMモデルをトレーニングします。
顔の表現の検出(顔の位置)
一般的な顔のアプリケーションは、顔のパンチング、顔の自動モザイク、顔のロック解除、その他のアプリケーションなど、上記の「顔の検出」と「顔の比較」の2つのテクノロジーを使用すれば十分です。ただし、より複雑な顔のアプリケーションでは、ライブ検出、疲労検出、および後述するその他のシーンなど、顔の検出と比較だけでは不十分です。このとき、顔の位置(四角形)を特定するだけでなく、眉の形、目の領域、鼻の位置、口の位置などの顔の特徴の位置も検出します。顔の特徴の位置データを使用して、これらのデータは、ビデオ内の人物が瞬きしたり、目を閉じたり、話したり、見下ろしたりするかどうかをリアルタイムで判断するなど、より複雑なアプリケーションに使用されています。次の図は、顔の特徴の検出結果を示しています。
上の図は、顔を表すために機械学習によって抽出された68点を示しています。
(1)左眉毛の5点
(2)右眉毛の5点
(3)左目の6点
(4)右目の6点
(5)ノーズブリッジ4点
(6)鼻先の5点
(7)上唇・下唇の20点
(8)あご17ポイント
下付き文字(Pythonではスライスを使用できます)を介して、対応する座標点をすばやく取得できます。座標点は、元の入力画像での顔の表現の実際の位置(ピクセル単位)を表します。
瞬き検出
ビデオの各フレームで顔の特徴の検出を実行し、ビデオの各フレームでの顔の特徴の位置データを取得した後、人間の目領域の閉じ具合(閉じた楕円を形成する6つのポイント)を分析することにより、瞬きが発生するかどうかを判断できます。では、それぞれの目がどのくらい近いかをどのように測定しますか 以前の調査によると:http://vision.fe.uni-lj.si/cvww2016/proceedings/papers/05.pdf、目の閉鎖の程度は、各目について6点で判断できることがわかります。
目を開いて閉じたとき、次の式の値はすぐにゼロに近づきます。
上記の式EAR(アイアスペクト比)の値は、垂直方向の2つのラインセグメントの長さの合計を水平方向のラインセグメントの長さで割った値に等しい* 2.この値は、目を閉じた瞬間にゼロに近づき、回復します。元の値。EARの変更プロセスを次の図に示します。
EARの値が急速に変動してゼロに近づくかどうかを監視して、目が閉じているかどうかを判断し、目を開いているかどうかを判断するためにすばやく回復する必要があるだけです。目を閉じてから開くまでの時間間隔が非常に短い場合(ほんの数ビデオフレーム、25フレーム/秒)、点滅していると見なされます。
生検
顔のアプリケーションでは、認証を通じて人々が写真やその他の偽の顔を使用できないようにするために、写真などの代替物ではなく、写真の顔にライブフィルタリングを実行する必要があります。つまり、現在のビデオ画像の顔が実在の人物であるかどうかを判断する必要があります。 。先に紹介した瞬き検出技術により、非常にシンプルな「生体検出」アルゴリズムを実装できます。このアルゴリズムでは、ランダムな時間間隔(数秒など、時間は固定されておらず、人々がビデオを録画して偽造しないようにする)が必要です。人物が瞬きしているアルゴリズムの指示に積極的に協力している場合は、本物の人物と見なすことができますが、そうでない場合は偽の顔である可能性があります。
ただし、ライブ検出は上記の方法だけでは安全ではない場合があります。一般的に、カメラの深度検出、顔の光の検出、ディープラーニングテクノロジーを使用した人間の顔の直接分類など、他のライブ検出テクノロジーと組み合わせることができます。 (生活/非生活)。
疲労検知
疲労検出のアプリケーションシナリオは大きすぎます。たとえば、長距離バスの運転手による疲労の監視警告、勤務中の職員の疲労の監視警告などに使用できます。上記で紹介した瞬目検出技術を少し改善することを主な原理としていますが、目を閉じて検出することができます。目を閉じた状態が一定時間(1秒など)以上続くと疲労が発生したと判断し、警報を発します。まばたきの判断は非常に簡単で、目を閉じた判断も簡単です。これらの判断ロジックはすべて、顔の表現によって抽出されたデータに基づいています。
デモのソースコード:パブリックアカウント
このホワイトペーパーのすべてのアルゴリズムの精度は、モデルトレーニングの品質、顔検出が正確かどうか、顔の特徴抽出が適切かどうか、顔の特徴検出結果が正確かどうかに依存することは明らかです。これは機械学習の場合であり、結果の品質はモデルトレーニングの品質(特徴抽出の品質)に完全に依存します。たとえば、この記事のデモでは、顔の表情の検出は眼鏡をかけた顔ではあまり効果的ではなく、この点でさらにトレーニングデータが必要であることがわかります。ご不明な点がございましたら、メッセージを残し、ご興味がありましたら、パブリックアカウントにご注目いただき、CV / DL関連のオリジナル記事を共有してください。