✨ FACE01
は日本人の顔に最適化された顔学習モデルJAPANESE FACEと、
Pythonで書かれたオープンソースのリファレンス実装です。
⚡️ Apache License 2.0と商用ライセンスのデュアルライセンス!
⚡️ 日本人の顔に最適化された顔学習モデル⭐️''
⚡️ 豊富なクラスとメソッド!
⚡️ 包括的なドキュメント付属!
FACE01 -- さあ、始めましょう!
Project Info | Realtime Processing | Document |
|
## result
Audrey Hepburn
Anti spoof real
Anti spoof score 100.0 %
similarity 99.1%
coordinate (123, 390, 334, 179)
time 2022,08,09,04,19,35,552949
output output/Audrey Hepburn_2022,08,09,04,19,35,556237_0.39.png
-------
✨ FACE01
は日本人の顔に最適化された顔学習モデルJAPANESE FACEと、Pythonで書かれたオープンソースのリファレンス実装です。
FACE01
を使うと入力映像の1フレームごとに、「いつ・誰が・どの座標で」映っているかの情報を1行で取得できます!
Core().common_process(CONFIG).__next__()
取得されるデータは以下のとおりです。
- 映像のNDArrayデータ
- 顔の座標(複数人可)
- 名前(複数人可)
- 日付時刻
- 確度(%)
また顔画像を各フレームごとにディスクへ保存します。
日本人専用の顔学習モデル「JAPANESE FACE V1」が使えます!(後述)
- 🎉 LICENSEが「もっと使いやすく」なりました!実稼動以外はアパッチライセンスV2です!
- 🎉
v3.0.0
よりオープンソースとして公開いたしました。(LICENSEに従ってください) - 🎉 エグザンプルコード集とドキュメントが更に充実しました!(後述)
- 🎉 JAPANESE FACE V1 が利用可能になりました!
JAPANESE FACE V1
は日本人の顔認証に特化したモデルです。
- 10,000人以上の顔データからリアルタイムで顔認証が可能です
- 超高速の顔座標出力機能
- 日付と時刻情報付きの顔画像保存機能
- 出力フレーム画像を修正する設定が可能(モザイク・ロゴ挿入など)
- 設定ファイルによる機能の集中管理
- RTSP、HTTP、USBなどの入力プロトコルを選択可能
顔認識
や画像処理
のための多くの機能が利用可能です(詳細はUseful FACE01 libraryをご覧ください)- ...and many others!
Zennにて新しいサンプルコードとその解説を紹介しています。
- フリーの事前顔学習済みモデル11種の精度評価
- 防犯カメラの動体検知を実装する③: なりすまし防止機能の実装
- コサイン類似度データの中の外れ値をもつファイルを見つける方法
- インタビュー形式の動画から顔画像データを抽出する方法
- [Docker] MongoDBとFaissを使って類似画像を検索する
- 頭部姿勢推定を簡易実装する
- スマホの画面注視認識機能を簡易実装する
- 【faiss】なにこれすごい。顔データセットの間違い探し 成功編③
- まばたきを検知するPythonコードの解説
顔認証システムはあらゆるシーンで使用されるのにも関わらず、AIのコアである学習モデルはほとんどがアメリカか中国で開発されています。
AIコアが外国産である場合、肝心なところで「偽陽性」、つまり誤判定が発生することがあります。この問題は発生頻度が少ないこともあり、再現性が取りづらく、その反面、発生した場合は重大なアクシデントとなり得ます。
このため日本人だけの大規模顔顔データセットから学習した「JAPANESE FACE V1」を開発し、顔認証アプリケーションに必要なクラスを揃えました。
日本人の顔認証に特化した学習モデルは、一般的な顔認証システムが抱える問題(若年日本人女性に対する偽陽性)を解決しました。
たとえば、一般的な学習モデルの場合、以下に示すような若年日本人女性の判別が難しい場合があります。
dlib学習モデルで偽陽性を出す例
これに対し、新しく学習されたモデル「JAPANESE FACE
」(下のグラフではJAPANESE_FACE_V1.onnx
))では、精度を落とすことなく判別できていることが示されました。
若年日本人女性の顔画像に対して、DlibのAUCが0.94に対し、JAPANESE FACEは0.98を達成しています⭐️''。
既存の顔認証モデルと比べて性能が向上してるのが分かりますね⭐️''。
くわしくは、「Dlib顔学習モデルの、若年日本人女性データセットにおける性能評価 」からご覧いただけます。
FACE01開発環境のセッティングは本当に簡単です!
🐳 一番簡単で環境を汚さない方法は、Docker
を使用することです。
こちらで丁寧な導入手順を解説をしていますのでぜひご覧ください。
実働環境を想定してまっさらなマシンに直接FACE01
をインストールするには、INSTALL_FACE01.sh
スクリプトを実行します。
wget https://raw.githubusercontent.com/yKesamaru/FACE01_DEV/master/INSTALL_FACE01.sh
chmod +x INSTALL_FACE01.sh
bash -c ./INSTALL_FACE01.sh
詳しくはこちらをご覧ください。
- リポジトリをクローンします。
git clone https://github.com/yKesamaru/FACE01_DEV.git
cd FACE01_DEV
- 仮想環境を作成し、パッケージをインストールします
$ python3 -m venv ./venv # python3-venvがインストールされている前提
$ source venv/bin/activate
$ pip install -U pip setuptools wheel
# GPUを使用する場合
$ pip install -r requirements_GPU.txt
# CPUを使用する場合
$ pip install -r requirements_CPU.txt
- GPUを使用する場合
dlib
を手動インストールする
# GPU用の設定 (dlibをソースからインストール)
tar -jxvf dlib-19.24.tar.bz2
cd dlib-19.24
python3 setup.py install --clean
もしビルド中に以下のような記述が出力されていたらGPUを利用できません。この場合はドキュメントを参考にしてGPUが使えるビルドができるようにしてください。
*****************************************************************************
*** No BLAS library found so using dlib's built in BLAS. However, if you ***
*** install an optimized BLAS such as OpenBLAS or the Intel MKL your code ***
*** will run faster. On Ubuntu you can install OpenBLAS by executing: ***
*** sudo apt-get install libopenblas-dev liblapack-dev ***
*** Or you can easily install OpenBLAS from source by downloading the ***
*** source tar file from http://www.openblas.net, extracting it, and ***
*** running: ***
*** make; sudo make install ***
*****************************************************************************
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR) (found suitable version "11.5", minimum required is "7.5")
-- DID NOT FIND CUDA
-- Disabling CUDA support for dlib. DLIB WILL NOT USE CUDA
-- C++11 activated.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/ドキュメント/test_face01/FACE01_DEV/dlib-19.24/build/temp.linux-x86_64-3.10
Invoking CMake build: 'cmake --build . --config Release -- -j8'
本来はビルド中に以下のように出力されます。
-- Found CUDA: /usr/local/cuda (found suitable version "12.3", minimum required is "7.5")
-- Looking for cuDNN install...
-- Found cuDNN: /usr/lib/x86_64-linux-gnu/libcudnn.so
-- Building a CUDA test project to see if your compiler is compatible with CUDA...
-- Building a cuDNN test project to check if you have the right version of cuDNN installed...
-- Enabling CUDA support for dlib. DLIB WILL USE CUDA, compute capabilities: 50
ビルドが終わったら次のようにして確認をしてください。
$ python
Python 3.10.12 (main, Nov 6 2024, 20:22:13) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dlib
>>> dlib.DLIB_USE_CUDA
True
>>>
True
と表示されていれば成功です。
c045.png | c006.png |
$ python example/verify.py assets/data/c/c045.png assets/data/c/c006.png
2枚の画像は同一人物と判定しました。cos_sim=0.318
結果: True
ヘルプを参照する
$ python example/verify.py -h
usage: verify [-h] [--threshold THRESHOLD] image1 image2
2枚の画像から同一人物かを判定します。
positional arguments:
image1 1枚目の画像パス (png, jpg, jpeg)
image2 2枚目の画像パス (png, jpg, jpeg)
options:
-h, --help show this help message and exit
--threshold THRESHOLD
同一人物判定のコサイン類似度のしきい値 (0~1, default=0.25)
example
フォルダには、様々なスクリプト例が収録されています。
(全てのスクリプトが現在のバージョンに対応しているわけではないことに注意してください)
ステップ・バイ・ステップでEXAMPLEを試してみましょう!
包括的なドキュメントはこちらをご参照ください。
Note
ドキュメントなどで使用される顔画像などは、ドキュメント用に用意したものです。
🧑💻 丁寧で包括的なドキュメントが付属します⭐️''
初心者にとっても優しい!!💗
全てのクラスとメソッドをまとめたリファレンスも!!
開発者にもとっても優しい💗
- 🔖 v3.04.2
- 設定なしですぐ試せるverifyコマンドを追加しました。
- 🔖 v3.0
- オープンソースとして公開しました。
LICENSE
を必ずご確認ください。
- 使用期限が廃止されました。(コメントアウトを外すことで機能は使えます)
- オープンソースとして公開しました。
- 🔖 v2.2.02
pyproject.toml
を追加。./example/*.py
について修正の追加。
- 🔖 v2.2.01
EfficientNetV2 Arcface Model
を正式名称のJAPANESE_FACE_V1
へ修正しました。Python 3.10.12
対応としました。他バージョンには対応していません。使用するシステムのPython
バージョンが異なる場合はDocker版
をお使いください。README
ほか、ドキュメントを日本語へ変更します。- 使用期限を延長しました。
YouTube
で使用する際のライセンスを追加しました。
- 🔖 v2.1.05
- Add
EfficientNetV2 Arcface Model
- Add
今後の開発はFACE01_DEV
リポジトリ(このリポジトリ)で行われます。
FACE01_SAMPLE
リポジトリは旧バージョンのため閉鎖されました。
FACE01_DEV
リポジトリをご使用ください。
- このリポジトリが提供するファイルは、無料でお使いいただけます。
教育機関でご利用の場合、ソースコードを研究・教育にご利用できます。
詳しくは日本のAI教育を支援する、顔認識ライブラリ
FACE01
の提供についてをご覧ください。 - 商用利用では実稼動のみライセンスが必要です。(LICENSEファイルをご参照ください。)
- YouTubeにおけるJAPANESE FACE V1の使用ライセンスを追加しました。
- VTuverにおける顔追従用のONNXモデルとして無料で使用できます。詳しくはYouTube用ライセンスをご参照ください。
- このリポジトリには
UBUNTU 22.04
用のFACE01
モジュール、および顔学習モデル
が含まれています。Windows
ユーザーの方は、提供しているDocker
上でご利用ください。 - JAPANESE FACE(日本人に最適化された顔学習モデル)だけを使用したい場合は、FACE01_trained_modelsリポジトリをご使用ください。
📄 I would like to acknowledgments those who have published such wonderful libraries and models.
- dlib / davisking
- face_recognition / ageitgey
- mediapipe / google
- open_model_zoo / openvinotoolkit
- light-weight-face-anti-spoofing / kprokofi
- openvino2tensorflow / Katsuya Hyodo (PINTO0309)
- PINTO_model_zoo / Katsuya Hyodo (PINTO0309)
- FaceDetection-Anti-Spoof-Demo / KazuhitoTakahashi (Kazuhito00)
- Some images from Pakutaso, pixabay
- Deep Face Recognition A Survey
- EfficientNetV2: Smaller Models and Faster Training
- ArcFace: Additive Angular Margin Loss for Deep
- MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices
- Dlib Python API
- Pytorch documentation and Python API
- ONNX documentation
- 教育と著作権: 水谷正大 著, 大東文化大学 (2021)
- 日本人顔認識のための新たな学習モデル JAPANESE FACE v1