Face-api.jsフレームワークに基づいて、顔認識はフロントエンドで完了します

Face-api.jsフレームワークに基づいて、顔認識はフロントエンドで完了します

[[271667]]

この記事では、ブラウザ上で動作する顔認識フレームワーク、Face-api.js を紹介します。これはTensorFlow.jsに基づいており、顔検出、特徴点抽出、記述子計算、顔マッチングまでの一連のステップを完了します。

識別効果図

このフレームワークは使いやすいため、数行の JavaScript コードでエンドツーエンドの認識を完了できます。顔認識の一般的な手順は次のとおりです。

顔検出

まず、画像またはビデオフレームから顔を特定します。このフレームワークは、顔検出用の 3 つのモデルを提供します。

小さな顔検出装置

Tiny Face Detector は、SSD Mobilenet V1 顔検出器よりも高速で、小型で、リソース消費が少ない、非常に高性能なリアルタイム顔検出器です。ただし、その代わりに、小さな顔を検出するパフォーマンスは若干劣ります。このモデルは、モバイル性とネットワーク性が非常に優れているため、モバイル デバイスやリソースが限られたクライアントでの顔検出に最も適しています。量子化されたモデルのサイズはわずか 190 KB (tiny_face_detector_model) です。

SSD モバイルネット V1

顔検出のために、このプロジェクトでは MobileNetV1 に基づく SSD (Single Shot Multibox Detector) を実装します。ニューラル ネットワークは、画像内の各顔の位置を計算し、各顔の確率とともに境界ボックスを返します。この顔検出器は、推論時間を短縮することよりも、顔の境界ボックスを高精度に検出することを目的としています。量子化モデルのサイズは約 5.4 MB (ssd_mobilenetv1_model) です。

MTCNNN について

MTCNN (マルチタスク カスケード畳み込みニューラル ネットワーク) は、より多くの構成スペースを提供する SSD Mobilenet v1 および Tiny Yolo v2 の代替顔検出器です。入力パラメータを調整することで、MTCNN はさまざまな顔の境界ボックスのサイズを検出できるようになります。 MTCNN は 3 段階のカスケード CNN であり、5 つの顔のランドマークと、各顔の境界ボックスとスコアを同時に返します。さらに、モデルのサイズはわずか 2MB です。

68個の特徴点を抽出

このキットは、非常に軽量で高速かつ正確な 68 ポイントの顔ランドマーク検出器を実装します。デフォルト モデルのサイズはわずか 350kb (face_landmark_68_model) で、小型モデルのサイズはわずか 80kb (face_landmark_68_tiny_model) です。どちらのモデルも、深さ方向に分離可能な畳み込みと密に接続されたブロックという考え方を採用しています。さらに、このモデルは、68 個の顔の特徴がラベル付けされた約 35,000 枚の顔画像のデータセットでトレーニングされています。

顔の特徴点パターン

記述子を計算する

顔認識の場合、ResNet-34 のようなアーキテクチャが実装され、任意の顔画像から顔記述子 (128 個の値を持つ特徴ベクトル) を計算します。顔記述子は、人間の顔の特徴を記述するために使用されます。このモデルは、トレーニングに使用された顔のセットに限定されないため、自分自身のような誰の顔認識にも使用できます。ユークリッド距離を計算したり、任意の他の分類器を使用したりして、顔の記述子を比較することで、任意の 2 つの顔の類似性を判断できます。

完全な顔認識

記述子に基づいて、顔認識マッチャーを構築できます。ビデオフレーム内の顔記述子と比較し、存在する場合は名前と類似度を出力します。

補充する

さらに、このプロジェクトには独自の表情検出機能と年齢検出機能があります。具体的なコードの使用方法は、github オープンソース プロジェクトで確認できます。

https://github.com/justadudewhohacks/face-api.js

以下は追加の機能効果図です。

表現検出チャート

年齢検出チャート

<<:  サーバーが過負荷状態です! GANで生成された肖像油絵は人気があり、一瞬でルネッサンス時代に戻ることができます

>>:  強力な視覚 AI でもこれらの写真を正確に識別できないのはなぜでしょうか?

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

推薦する

...

機械学習: Python による分類

子供にリンゴとオレンジの区別を教えたいとします。これを行うには複数の方法があります。お子様にこの 2...

ファイザーはAIとスーパーコンピューターを活用してコロナウイルスのワクチンと薬を設計している

ファイザーの最高デジタル・技術責任者リディア・フォンセカ氏は、機械学習技術は医薬品の発見、臨床試験、...

機械学習モデルの品質を保証し、その有効性を評価する方法

[[396139]]近年、機械学習モデルアルゴリズムは、ますます多くの産業実践に実装されるようになり...

広州には AI があり、Huawei Ascend Academy は本格的に始動しています。

[[335135]] 2020年7月18日午後、広州ロイヤルパレスホテルでHuawei DevRu...

...

目録:2021年1月の人工知能分野における資金調達活動のリスト

過去2年間、人々の注目は5Gにますます集まっているものの、人工知能の発展と人気は少しも衰えていません...

「AI」の限界:人工知能は未来を変えるが、まだ解決されていない問題がある

[[348196]]画像ソース: unsplash人工知能はこの時代の合言葉であり、技術専門家、学...

求人検索サイトIndeedの統計:AI採用は減速、求職者の関心は低下

6月末、わが国各省市で大学入試結果が次々と発表される中、学生の専攻選択は統計的な傾向に新たな波を起こ...

...

...

AI、自動化、仕事の未来、そして注目と解決が必要な問題

職場で機械が人間の労働力を補うようになるにつれ、私たち全員がその恩恵を受けるために適応する必要があり...

OpenAIが「公式クローラー」をリリース: GPT-5はこれでトレーニングされ、必要に応じてブロックできる

周知のとおり、OpenAI は GPT-4 以降、技術的な詳細を完全に秘密にしてきました。当初は、ベ...

Java プログラミング スキル - データ構造とアルゴリズム「ハフマン ツリー」

[[389315]]基本的な紹介n 個のリーフ ノードとして n 個の重みが与えられ、バイナリ ツ...