Dlib Python,face_recognition のインストールと動作確認(顔検出,顔ランドマーク,顔識別)(Python を使用)(Windows 上)
【目次】
- 前準備
- Dlib Python のインストール,Dlib のソースコード等と,Dlib の学習済みモデルのダウンロード
- Dlib に付属のサンプルプログラム(example 下)のビルド
- 画像分類,物体検出,トラッキング・ビジョン,犬の顔画像について眼鏡をあてはめる(Dlib に付属のサンプルプログラムを使用)
- Dlib による顔検出(Python を使用)
- Dlib による顔ランドマークの検出(Python を使用)
- Dlib による顔のアラインメント,顔データのデータ拡張,5ランドマーク,68 ランドマーク,顔のコード化(5ランドマークを使用),顔のコード化(68 ランドマークを使用)(Python を使用)
- ageitgey/ageitgey の face_recognition のインストール
- ageitgey の face_recognition で顔識別を行ってみる(Python を使用)
【サイト内の関連ページ】
- 説明資料: Dlib の機能概要 [PDF], [パワーポイント]
- 顔情報処理の Python プログラム(Dlib,face_recognition を使用) について: 別ページ »にまとめ
- Windows で動く人工知能関係 Pythonアプリケーション,オープンソースソフトウエア): 別ページ »にまとめている.
【用語説明】
- Dlib
Dlibは,数多くの機能を持つ C++ ライブラリ.機能には,機械学習,数値計算,グラフィカルモデル推論,画像処理,スレッド,通信,GUI,データ圧縮・一貫性,テスト,さまざまなユーティリティなどがある.Python API もある.
- 顔検出 (face detection):
Dlib には,Convolutional Neural Network (CNN) による顔検出の機能がある.
Dlib による顔検出の例
顔検出が行われ,顔を囲むようなバウンディングボックス (bounding box) が表示される.
バウンディングボックスの座標値が数値データとして得られる
顔のランドマーク検知が行われ,顔を囲むようなバウンディングボックス (bounding box) と,顔のランドマークが表示される.
1. 前準備
Python 3.10,Git,CMake,7-Zip のインストール(Windows 上)
Pythonは,プログラミング言語の1つ. Gitは,分散型のバージョン管理システム. CMakeは,クロスプラットフォームのビルドシステム生成ツール. 7-Zipは,ファイル圧縮・展開(解凍)ツール.
【手順】
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
次のコマンドは,Python ランチャーとPython 3.10とGitとCMakeと7-Zipをインストールし,Gitと7-Zipにパスを通すものである.
次のコマンドでインストールされるGitは 「git for Windows」と呼ばれるものであり, Git,MinGW などから構成されている.
winget install --scope machine Python.Launcher winget install --scope machine Python.Python.3.10 winget install --scope machine Git.Git powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" winget install --scope machine Kitware.CMake powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\CMake\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")" winget install --scope machine 7zip.7zip powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\7-Zip\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
【関連する外部ページ】
- Python の公式ページ: https://www.python.org/
- Git の公式ページ: https://git-scm.com/
- CMake の公式ダウンロードページ: https://cmake.org/download/
- 7-Zip の公式ページ: https://7-zip.opensource.jp/
【サイト内の関連ページ】
【関連項目】 Python, Git バージョン管理システム, Git の利用, CMake ビルドシステム生成ツール, CMake の使用方法, 7-Zip
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)
【インストールの判断】 Build Tools for Visual Studio は,開発ツールセットである. Visual Studio は統合開発環境であり,いくつかの種類があり,Build Tools for Visual Studioの機能を含むか連携して使用するものである.インストールは以下の基準で判断してください:
- Build Tools for Visual Studio の機能のみが必要な場合
- Visual Studio の機能が必要である,あるいは,よく分からない場合
Visual Studio 2022 をインストールする際に,「C++ によるデスクトップ開発」を選択することで, Build Tools for Visual Studio 2022 の機能も一緒にインストールされる.
不明な点がある場合は,Visual Studio 全体をインストール を行う方が良い.
Build Tools for Visual Studio 2022 のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
次のコマンドは,Build Tools for Visual Studio 2022と VC2015 再配布可能パッケージをインストールするものである.
- Build Tools for Visual Studio 2022 での C++ によるデスクトップ開発,CLI,ATL,MFC のインストール(Windows 上)
- Visual Studio Installer の起動
起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.
- Visual Studio Build Tools 2022 で「変更」を選ぶ.
- 「C++ によるデスクトップ開発」をクリック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」,「ATL」,「MFC」をチェックする.その後,「変更」をクリック.
- Visual Studio Installer の起動
Visual Studio のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
次のコマンドは,Visual Studio Community 2022と VC2015 再配布可能パッケージをインストールするものである.
- Visual Studio での C++ によるデスクトップ開発,CLI のインストール(Windows 上)
- Visual Studio Installer の起動
起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.
- Visual Studio Community 2022 で「変更」を選ぶ.
- 「C++ によるデスクトップ開発」をチェック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」をチェックする.その後,「インストール」をクリック.
- Visual Studio Installer の起動
2. Dlib Python のインストール,Dlib のソースコード等と,Dlib の学習済みモデルのダウンロード
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- Dlib Python のインストール
次のコマンドを実行.
「python -m pip install -U dlib」はエラーが出やすい可能性があるため, よりエラーが出にくいと思われる,次の手順でインストールする.
python -m pip uninstall -y dlib cd C:\ rmdir /s /q dlib git clone https://github.com/davisking/dlib cd C:\dlib python setup.py build --no DLIB_GIF_SUPPORT python setup.py install --no DLIB_GIF_SUPPORT
(以下省略) - Python の dlib パッケージがインストールできたことの確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python -c "import dlib; print( dlib.__version__ )"
- Dlib の学習済みモデルのダウンロード
次のコマンドを実行.
cd C:\dlib cd python_examples curl -O http://dlib.net/files/mmod_human_face_detector.dat.bz2 curl -O http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2 curl -O http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2 curl -O http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x mmod_human_face_detector.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x dlib_face_recognition_resnet_model_v1.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x shape_predictor_5_face_landmarks.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x shape_predictor_68_face_landmarks.dat.bz2 del mmod_human_face_detector.dat.bz2 del dlib_face_recognition_resnet_model_v1.dat.bz2 del shape_predictor_5_face_landmarks.dat.bz2 del shape_predictor_68_face_landmarks.dat.bz2
- Dlib の動作確認のため,次を実行.エラーメッセージが出ずに,顔検出の結果が表示されれば OK とする.
cd C:\dlib cd python_examples python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2007_007763.jpg
3. Dlib に付属のサンプルプログラム(example 下)のビルド
Dlib に付属のサンプルプログラムは,examplesの下にある.次の手順でビルドする.
http://dlib.net/compile.html の記述に従う
- Windows で,コマンドプロンプトを管理者として実行.
コマンドプロンプトを管理者として実行: 別ページ »で説明
cd C:\dlib cd examples rmdir /s /q build mkdir build cd build cmake .. -G "Visual Studio 17 2022" -A x64 -T host=x64 ^ -DCUDA_SDK_ROOT_DIR="c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8" ^ -DCUDA_TOOLKIT_ROOT_DIR="c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8" ^ -DCUDA_NVCC_FLAGS="-allow-unsupported-compiler" ^ -DCUDA_NVCC_FLAGS_DEBUG="-allow-unsupported-compiler" ^ -DCMAKE_INSTALL_PREFIX=c:/dlib ^ -DDLIB_GIF_SUPPORT=OFF
- 結果の確認
エラーメッセージが出ていないこと
- ビルド操作
cmake --build . --config RELEASE
- 結果を確認.エラーメッセージが出ていないこと
4. 画像分類,物体検出,トラッキング・ビジョン,犬の顔画像について眼鏡をあてはめる(Dlib に付属のサンプルプログラムを使用)
画像分類
画像分類:画像(1つ)から、所定のラベル(複数)のうち1つを推定すること。あるいは、複数を推定すること。推定するとき、その確率とともに得ることもある
Dlib は C:\dlib にインストールされているとする
- 学習済みモデルのダウンロード
curl でなく wget を使いたいときは, 「wget http://dlib.net/files/resnet34_1000_imagenet_classifier.dnn.bz2」のように操作する.
cd C:\dlib cd examples\build curl -O http://dlib.net/files/resnet34_1000_imagenet_classifier.dnn.bz2 "c:\Program Files\7-Zip\7z.exe" x resnet34_1000_imagenet_classifier.dnn.bz2
- 画像分類の実行
画像分類される画像は,「faces\*.jpg」で指定している.
cd C:\dlib cd examples\build for %i in (..\faces\*.jpg) do .\release\dnn_imagenet_ex %i
画像分類される画像
物体検出(Max-Margin Object Detection by Davis E. King を使用)
物体検出:画像から、ある種類の物体を検出し、その位置と大きさを得る。1つの画像の中に、物体が複数あることもある。
Max-Margin 物体検出法が利用されている(文献は次の通り) それにより,Dlib による文体検出が行われる.
Davis E. King, Max-Margin Object Detection, CoRR, abs/1502.00046, 2015.
学習済みモデルのダウンロード
curl でなく wget を使いたいときは, 「wget http://dlib.net/files/mmod_rear_end_vehicle_detector.dat.bz2」のように操作する.
cd C:\dlib cd examples\build curl -O http://dlib.net/files/mmod_rear_end_vehicle_detector.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x mmod_rear_end_vehicle_detector.dat.bz2
物体検出の実行(車の正面)
cd C:\dlib cd examples\build .\release\dnn_mmod_find_cars_ex
学習済みモデルのダウンロード
curl でなく wget を使いたいときは, 「wget http://dlib.net/files/mmod_front_and_rear_end_vehicle_detector.dat.bz2」のように操作する.
cd C:\dlib cd examples\build curl -O http://dlib.net/files/mmod_front_and_rear_end_vehicle_detector.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x mmod_front_and_rear_end_vehicle_detector.dat.bz2
物体検出の実行(車の正面と背面)
cd C:\dlib cd examples\build .\release\dnn_mmod_find_cars2_ex
トラッキング・ビジョン(correlation_tracker を使用)
cd C:\dlib cd examples\build .\release\video_tracking_ex ..\video_frames
犬の顔画像について眼鏡をあてはめる(顔のランドマーク検出による)
学習済みモデルのダウンロード
cd C:\dlib cd examples\build curl -O http://dlib.net/files/mmod_dog_hipsterizer.dat.bz2 "c:\Program Files\7-Zip\7z.exe" x mmod_dog_hipsterizer.dat.bz2
実行してみる
cd C:\dlib cd examples\build .\release\dnn_mmod_dog_hipsterizer mmod_dog_hipsterizer.dat ..\faces\dogs.jpg
5. Dlib による顔検出(Python を使用)
Dlib による顔検出 を行う.
- まずは、DLib に同封の顔画像ファイルに何があるかを、簡単にみておく
%HOMEPATH%\dlib\examples\faces の下の顔画像のファイルを確認する
- Windows のコマンドプロンプトを開く
- Python プログラムの実行
Python プログラムの実行(Windows 上)
- python: python
- pip: python -m pip または pip
- Jupyter Qt Console: jupyter qtconsole
- Jupyter ノートブック (Jupyter Notebook): jupyter notebook
- Jupyter Lab: jupyter lab あるいは python -m jupyter lab
- Nteract: jupyter nteract あるいは python -m jupyter nteract
- Spyder: spyder
cd C:\dlib cd python_examples python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2007_007763.jpg
結果が表示されるまで少し待つ
- 別の画像で試してみる
cd C:\dlib cd python_examples python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2008_001009.jpg
- さらに別の画像で試してみる
cd C:\dlib cd python_examples python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2008_001322.jpg
6. Dlib による顔ランドマークの検出(Python を使用)
顔ランドマークの検出 (face landmark detector) のサンプルプログラムを実行してみる
顔ごとに,最大で 68 のランドマーク (68 landmarks) が得られる.
cd C:\dlib cd python_examples python face_landmark_detection.py shape_predictor_68_face_landmarks.dat ..\examples\faces\
7. Dlib による顔のアラインメント,顔データのデータ拡張,5ランドマーク,68 ランドマーク,顔のコード化(5ランドマークを使用),顔のコード化(68 ランドマークを使用)(Python を使用)
顔のアラインメント
利用条件などは各自で確認のこと
- Windows のコマンドプロンプトを開く
- Python プログラムの実行
Python プログラムの実行
- Windows では python (Python ランチャーは py)
- Ubuntu では python3
【サイト内の関連ページ】 Python のまとめ: 別ページ »
cd C:\dlib cd python_examples python face_alignment.py shape_predictor_68_face_landmarks.dat ..\examples\faces\2007_007763.jpg
- Enter キーを複数回押して、結果を確認
顔データのデータ拡張
増量は、学習で重要となる
- 実行してみる
cd C:\dlib cd python_examples python face_jitter.py shape_predictor_68_face_landmarks.dat
元画像として何を使うかは、プログラム中で設定されている
- Enter キーを複数回押して、結果を確認
5ランドマーク
- 実行してみる
cd C:\dlib cd python_examples python face_landmark_detection.py shape_predictor_5_face_landmarks.dat ..\examples\faces
- Enter キーを複数回押して、結果を確認
68 ランドマーク
- 実行してみる
cd C:\dlib cd python_examples python face_landmark_detection.py shape_predictor_68_face_landmarks.dat ..\examples\faces
- Enter キーを複数回押して、結果を確認
顔のコード化(5ランドマークを使用)
- 実行してみる
cd C:\dlib cd python_examples python face_recognition.py shape_predictor_5_face_landmarks.dat dlib_face_recognition_resnet_model_v1.dat ..\examples\faces
顔ごとに 128個の数値(特徴量ベクトル)が得られることを確認
- Enter キーを複数回押して、結果を確認
顔のコード化(68 ランドマークを使用)
- 実行してみる
cd C:\dlib cd python_examples python face_recognition.py shape_predictor_68_face_landmarks.dat dlib_face_recognition_resnet_model_v1.dat ..\examples\faces
顔ごとに 128個の数値(特徴量ベクトル)が得られることを確認
- Enter キーを複数回押して、結果を確認
8. ageitgey/ageitgey の face_recognition のインストール
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- numpy, scikit-image, scikit-learn のインストール
次のコマンドを実行する.
python -m pip install -U numpy scikit-image scikit-learn
- face_recognition のインストール
cd /d c:%HOMEPATH% rmdir /s /q face_recognition git clone https://github.com/ageitgey/face_recognition cd face_recognition copy C:\dlib\python_examples\shape_predictor_68_face_landmarks.dat . python setup.py build python setup.py install
9. ageitgey の face_recognition で顔識別を行ってみる(Python を使用)
ファイルとディレクトリの準備
- Windows のコマンドプロンプトを開く
- 2つのディレクトリ known_people, unknown_pictures を作る
コマンドプロンプトで次のコマンドを実行
mkdir %HOMEPATH%\face_recognition\known_people mkdir %HOMEPATH%\face_recognition\unknown_pictures
- 顔画像の準備
%HOMEPATH%\face_recognition\examples にある顔画像のファイル 「biden.jpg」と「obama.jpg」を,先ほど作成した ディレクトリ known_people の下にコピー
copy %HOMEPATH%\face_recognition\examples\biden.jpg %HOMEPATH%\face_recognition\known_people copy %HOMEPATH%\face_recognition\examples\obama.jpg %HOMEPATH%\face_recognition\known_people
- Windows で、ディレクトリ known_people の下に 2つの画像ファイルがあることを確認
-
%HOMEPATH%\face_recognition\examples
にある顔画像のファイル
「two_people.jpg」を,先ほど作成した
ディレクトリ unknown_pictures の下にコピー
copy %HOMEPATH%\face_recognition\examples\two_people.jpg %HOMEPATH%\face_recognition\unknown_pictures
- Windows で、ディレクトリ unknown_pictures の下に画像ファイルがあることを確認
顔検出を行ってみる
cd /d c:%HOMEPATH%\face_recognition face_detection --model cnn unknown_pictures
表示される4つの数字は、顔領域の座標値
顔識別を行ってみる
unknown_pictures の下にある画像ファイルを、 known_people 下の画像ファイルを照合して顔識別を行うコマンド
cd /d c:%HOMEPATH%\face_recognition face_recognition --show-distance true known_people unknown_pictures
* その他,Dlib を用いた顔検出、顔識別などについては, 別ページ »にまとめ