顔認識実習(2) - 顔認識システムのデモンストレーション

前に書いてある

  コードについて直接話すのは少し退屈なので、個人的なやり方に従って、まず全体的な効果を見て、次にそれを詳細に理解することは、見た目から始めて性格に忠実であることに似ています。この章で機能を紹介した後、興味のある学生は次の章のコード分析を通じて理解を深めることができます。筆者にとっては、顔認証の基本機能のデモ開発が完了したといえる。

1.顔登録

  インターネットで有名な芸能人を見つけて、クリアなアバター付きの写真を保存しました 顔登録はアバターの写真をアップロードし、ユーザーIDとユーザー情報を同時に入力し、2つのフィールドを記述する必要があります。実際の状況では、名前が重複する場合は、ユーザー ID を唯一のものとして使用し、ユーザー情報を名前として使用することもできます。もちろん、ニーズに応じて調整することも可能です。 . これは単なる紹介です。

ここに画像の説明を挿入

  デザインロジックを簡単に説明すると、ユーザーが写真をアップロードすると、写真データ、ユーザーID、ユーザー情報がオブジェクトとしてバックエンドサービスに送信され、バックエンドでアバターの特徴点が取得されます。取得に成功すると保存されます。

2.顔のアップデート

  入力する必要のある顔を完了した後、ライブラリ内の人物の写真を更新する必要がある場合は、顔を更新する必要があります。現在の顔更新のロジックでは、更新する唯一のチェック値としてユーザー ID が使用されます。ユーザーを含むその他の情報情報およびユーザーの顔写真。

ここに画像の説明を挿入

3. 顔の削除

  ライブラリ内のユーザーIDに基づいて、ユーザーが顔に登録したデータ(背景に保存されているユーザーのアバターの写真データも含む)を削除し、削除された無駄なデータがサーバーに残らないようにします。

ここに画像の説明を挿入

4. 顔データベースのクエリ

  顔データベース クエリでは、比較的大まかな方法​​を使用してデータベース内の上位 n 個のデータを確認します。上記の他のモジュールは操作の完了後にデータベース クエリを実行しているため、図例はここには表示されません。

5. 顔認識

  次に最も重要な顔認識モジュールです. 人物の写真を入力し、その写真と顔データベース内のユーザー情報を比較し、顔データベース内の最も類似性の高いユーザー情報を返します。図書館にある人物の写真なので、該当する人物を見つける精度は比較的高くなります。一般に、92% 以上の類似性は、同一人物であることを意味します。もちろん、双子を区別する必要がある場合、しきい値は、より高くなります。ここでは簡単に説明しますが、実際のエンジニアリング プロジェクトでは、さらに多くのことを考慮する必要があります。

ここに画像の説明を挿入

  以下に、テスト用に顔データベースの外にある人物の顔写真をアップロードします。結果がわかります。ハーマイオニーとディ リーバの類似性は 87% です。人間と区別するのは簡単ですが、計算された類似度は低くはありません。本当に同じ人ではありません。

ここに画像の説明を挿入

6. 拡張された思考

  システムのように見えますが、実際のエンジニアリングでは考慮すべきことがたくさんありますので、簡単にポイントをいくつか紹介しますので、時間と必要があれば後ほど紹介します。

  • 顔データベースを拡張可能

  例ではライブラリを 1 つだけ使用しており、登録、更新、削除、比較はすべて同じライブラリ内で行われますが、実際のシナリオでは異なるライブラリを追加して、複数のライブラリの管理に使用することもできます。たとえば、コミュニティには 8 つの建物があり、それぞれの建物の所有者が異なるため、8 つの建物の所有者が 1 人になることがないよう、各所有者の顔情報を 8 つの異なるグループに記録し、個別に検証する必要があります。建物は顔認識を使用して所有者のアクセス制御を開くことができます。

  • 顔認識精度

  これは顔認識において最も重要なことです。私たちが使用するモデルはshape_predictor_68_face_landmarks.dat実際に外国の顔データを使用してトレーニングされています。デモを行うのは問題ありません。本当に実用的にしたい場合は、データ処理とモデルを担当する専任の画像エンジニアが必要です。パラメータの調整/トレーニング、異なる光条件下での堅牢性も考慮する必要があり、特徴点はこれよりも多くなる可能性があります。国内の顔認識は Megvii、Yitu、BAT などによってより適切に行われ、それらはすべて特殊な画像を持っています。アルゴリズムチームがこれを行っています。

  • 顔データベースの検索効率

  この例では、写真が渡された後、ライブラリ内の各ユーザーのアバター情報と比較され、コサイン類似度が計算されますが、所要時間は線形です。各計算に 100 ミリ秒かかる場合、ユーザーが 100 人の場合ライブラリでは 10 秒かかりますが、これは明らかに非現実的です。実際の環境では 1000 ユーザー以上がいるのが普通であり、この線形手法を常に使用することは不可能です。Milvus などの同様のベクトル データベースを使用して、上位 n をクエリし、計算のために上位 n を取り出し、顔検索の効率の問題を解決することを検討できます。

おすすめ

転載: blog.csdn.net/initiallht/article/details/122527657