このプロジェクトについて

face_recognitionは、顔の認識と操作を行うためのPythonライブラリおよびコマンドラインツールです。dlibの最先端の顔認識モデルをベースに構築されており、READMEによるとLabeled Faces in the Wild(LFW)ベンチマークで99.38%の精度を誇ります。顔の位置特定、顔のランドマークの抽出、顔のエンコーディングの計算、および人物を特定するための顔の比較を行うためのシンプルなAPIを提供します。 ## 主な機能 - `face_locations()`を使用して画像内のすべての顔を検出します。精度を高めるためのオプションのディープラーニングベースのCNNモデルが含まれます(優れたパフォーマンスにはCUDAが必要です)。 - `face_landmarks()`を使用して顔の特徴(目、鼻、口、あご)の位置を特定し輪郭を描画します。これによりデジタルメイクなどのアプリケーションが可能になります。 - `face_encodings()`によって生成され、`compare_faces()`を使用して照合される128次元の顔エンコーディングを比較することで顔を識別します。 - 2つのコマンドラインプログラムが含まれています。画像フォルダ内の既知の人物を識別する`face_recognition`と、顔のバウンディングボックスの座標を出力する`face_detection`です。 ## インストール - macOSまたはLinux上のPython 3.3+またはPython 2.7が必要です。Windowsは公式にはサポートされていませんが、コミュニティが提供する手順で動作する場合があります。 - Pythonバインディングを備えた`dlib`を最初にインストールする必要があります(macOS/Ubuntuではソースからビルドするか、事前設定されたVMを使用します)。 - `cmake`をインストールした後に `pip3 install face_recognition` を介してインストールします(例:macOSでは `brew install cmake`)。 - Nvidia Jetson Nano、Raspberry Pi 2+、FreeBSD(`pkg install graphics/py-face-recognition`)、およびWindows用の追加のプラットフォームガイドが含まれています。 - HerokuやAWSなどのクラウドホストへのデプロイを容易にするためにDockerイメージが提供されています。 ## 使用例(Python) ```python import face_recognition # 画像内の顔を検出する image = face_recognition.load_image_file("your_file.jpg") face_locations = face_recognition.face_locations(image) # 顔のランドマークを取得する face_landmarks_list = face_recognition.face_landmarks(image) # 人物を特定する known_image = face_recognition.load_image_file("biden.jpg") unknown_image = face_recognition.load_image_file("unknown.jpg") biden_encoding = face_recognition.face_encodings(known_image)[0] unknown_encoding = face_recognition.face_encodings(unknown_image)[0] results = face_recognition.compare_faces([biden_encoding], unknown_encoding) ``` ## コマンドラインインターフェース - `face_recognition ./known_people/ ./unknown_pictures/` は、検出された顔ごとに1行ずつ、ファイル名と認識された名前(または `unknown_person`)を出力します。 - `--tolerance 0.54` は照合をより厳密にします。`--show-distance true` は計算された顔の距離を出力します。 - `--cpus 4`(全コアの場合は `-1`)により、マルチコアシステムでの並列処理が有効になります。 - `face_detection ./folder_with_pictures/` は、見つかった各顔の上、右、下、左のピクセル座標を出力します。 ## サンプルスクリプト リポジトリには多くのサンプルが含まれており、以下のようなものがあります: - デフォルトのHOGモデルとCNNディープラーニングモデルを使用した顔検出。 - リアルタイムのウェブカメラ認識(シンプルおよび高速バージョン、OpenCVが必要です)。 - ビデオファイル内およびカメラ付きRaspberry Piでの顔認識。 - Flaskを使用したHTTPウェブサービス。 - 1人あたり複数の画像でトレーニングするためのK近傍法およびSVM分類器。 - ライブウェブカメラビデオでの顔のぼかし処理。 ## 注意点 - 認識モデルは成人のデータでトレーニングされているため、デフォルトの比較しきい値0.6では子供に対してうまく機能しない場合があります。 - 精度は民族グループによって異なる場合があります。wikiには既知の精度の問題についての議論があります。 - デプロイメントのために、Dockerfileと事前構築されたDockerイメージが含まれており、Nvidiaドライバーとnvidia-dockerを使用するLinuxシステム向けのGPUサポートが提供されています。 このプロジェクトは、dlibの顔認識機能のシンプルで高レベルなラッパーとして広く使用されており、顔の検出と識別が必要なプロトタイピングおよび本番アプリケーションに適しています。