>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

UniFaceライブラリで1つのPythonパッケージに完全な顔分析パイプラインを構築する方法

顔認識プロジェクトを構築しようとしたことがある方なら、依存関係地獄を覚えているのではないでしょうか。

検出にはPyTorchリポジトリを、3D顔メッシュには面倒そうなMediaPipeを、セグメンテーションには5年前のモデルが眠るアーカイブを掘り起こし、視線方向の推定にはGoogle Driveからダウンロードした生重みの上で独自のワークアラウンドを書く。結果として、仮想環境が数十GBに膨れ上がり、ライブラリのバージョンが衝突し、Dockerイメージのビルドが賭けのようなものになってしまいます。

最近、UniFaceという新しいライブラリを見つけました。作者はまさにこの混沌に秩序をもたらそうとしました。このプロジェクトは、人間の顔に関連するほぼすべてのコアなコンピュータビジョンタスクを、1つのミニマリストなインターフェースに統合しています。

箱の中身

UniFaceはビルディングキットのように動作します。すべての推論ロジックはONNX Runtime上で実行されるため、カスタムC++拡張機能のコンパイルや複雑な依存関係の構築に苦労する必要がありません。

インストールは2つのバリエーション用意されています:

最初の起動時に、ライブラリは必要な事前学習済み重みを自動的にダウンロードし、SHA-256でチェックサムを検証します。破損したファイルやフォルダへのチェックポイントの手動配置はありません。

ライブラリのエントリーポイントは、Predictorクラスです。デフォルトでは、検出、アライメント、エンベディング生成などの基本的な操作を実行します。追加の属性が必要な場合は、predictorsリストに所需的モジュールを渡すだけです。

モジュールを明示的に接続しない限り、対応するフィールド(head_pose、gaze、attributesなど)はNoneのままです。これにより、計算リソースが節約され、不要なモデルでメモリが占有されることがなくなります。

主要機能の解説

UniFaceは15の応用タスクに対応しています。実際の動作を見てみましょう。

1. 検出、ランドマーク、品質評価

このライブラリには6つの検出アーキテクチャが含まれています:RetinaFace、SCRFD、CenterFace、BlazeFace、そしてYOLOv5-FaceとYOLOv8-Faceのadaptationです。モバイルチップ向けの軽量モデルと複雑な角度に対応するヘビーネットワークを簡単に切り替えることができます。

ランドマーク配置には、クラシックな68点と106点の注釈(PIPNetと2d106det経由)と、468点と478点の密な3D Face Meshグリッドの両方が利用可能です。

実際の認識パイプラインでは、ブレたり暗すぎたりするフレームをフィルタリングする必要があることが多いです。これに対応するため、UniFaceは4つのサイズ(T、S、M、L)でeDifFIQA品質メトリクスを追加しました。

2. ポートレートセグメンテーションとマット抽出

人物を背景から分離したり、特定の顔領域(唇、目、毛髪、肌)を分離する必要がある場合、parsingモデルが活躍します:

  • BiSeNetは顔を19クラスにセグメント化します。
  • XSegは顔を物体で部分的に遮蔽場合でもマスクを作成します。
  • MODNetはトリマップなしでシームレスなポートレートマット抽出を実行します。

マット抽出の結果は、緩んだ毛髪のような複雑な輪郭沿いでもクリーンな状態が維持されます:

3. 頭部ポーズと視線方向

頭部回転角度の推定(Head Pose)では、6次元の回転ベクトル表現を使用し、pitch、yaw、roll角度を返します。

ユーザーの注視追跡には、ResNetとMobileNetV2ベースのMobileGazeが組み込まれています。これは空間内の視線ベクトルを予測し、ドライバーの注意監視インターフェースや画面インタラクション分析に便利です。

4. 属性、感情、生きているかの検出

属性モジュールは、FairFace経由で性別、年齢層、人種を特定し、AffectNet-7およびAffectNet-8スケールで感情認識を行い、眼鏡、サングラス、医療用マスクの有無を検出します。

生体認証システムでは、スプーフィング対策が重要です。UniFaceにはMiniFASNetが含まれており、生きているかの判定を行い、印刷された写真やすスマートフォンの画面からのビデオリプレイによるなりすまし試行をブロックします。

5. 比較、検索、匿名化

顔照合には、ArcFace、AdaFace、EdgeFace、MobileFace、SphereFaceなどの最新のfeature抽出器がライブラリで利用可能です。大規模なデータベースで顔を検索するには、背後でFAISSベースのベクトルインデックスが統合されています。

タスクが逆の場合—公開用に動画や写真の個人データを隠す—5つのブラーアルゴリズムを備えた匿名化モジュールがあります。

本番化前に注意すべきこと

UniFaceリポジトリのソースコード自体はクリーンなMITライセンスで配布されていますが、一部のモデル(FairFaceやAffectNetなど)の事前学習済み重みには、元の著作者による非商用制限があります。商用リリースを計画している場合は、プロジェクトのライセンスに関するドキュメントセクションを確認し、選択したチェックポイントを必ず検証してください。

このプロジェクト誰が役立つのか

UniFaceは、異なるCVライブラリを1つのパイプラインに接着することに厌倦している人に最適です。生体認証システム、ビデオ分析、インタラクティブアプリケーション、コンテンツモデレーションサービスの迅速なプロトタイピングのための готовый万能ツールです。

始める 가장簡単な方法は、公式ドキュメントとKaggle上のインタラクティブノートブックで、数分で自分の画像で各モデルをテストできます。

関連プロジェクト