顔検出,顔識別(Dlib,face_recognition のインストールと動作確認)(Python を使用)(Windows 上)
【要約】
この記事では、Windows環境でDlibとface_recognitionをインストールし、顔検出と顔識別を行う方法を説明しています。前提として必要なソフトウェアのインストール手順、Dlibのソースコードのダウンロードとビルド、Pythonパッケージのインストール、サンプル画像を用いた動作確認を網羅しています。また、インストールがうまくいかない場合のトラブルシューティングや、Dlib付属のツール類のインストール方法なども触れています。全体を通して、コマンドラインでの操作手順をステップごとに示しており、確認しながら進めることができます。
【目次】
- 前準備
- Dlib のインストール
- 上の手順でうまく dlib をインストールできないとき
- ageitgey の face_recognition のインストール
- ageitgey の face_recognition で顔識別を行ってみる
- Dlib 付属のツール類 htmlify, Dlib の imglab のインストール
- Dlib のサンプルプログラムのビルド
【サイト内の関連ページ】
- 説明資料: Dlib の機能概要 [PDF], [パワーポイント]
- 顔情報処理の Python プログラム(Dlib,face_recognition を使用) について: 別ページ »にまとめ
- Windows で動く人工知能関係 Pythonアプリケーション,オープンソースソフトウエア): 別ページ »にまとめている.
- 顔検出,年齢と性別の推定,顔識別,人体検出(InsightFace のインストールと動作確認)(PyTorch,Python を使用)(Windows 上)
Dlib
Dlibは,数多くの機能を持つ C++ ライブラリ.機能には,機械学習,数値計算,グラフィカルモデル推論,画像処理,スレッド,通信,GUI,データ圧縮・一貫性,テスト,さまざまなユーティリティなどがある.Python API もある.
顔検出 (face detection)
Dlib には,Convolutional Neural Network (CNN) による顔検出の機能がある.
Dlib による顔検出の例
顔検出が行われ,顔を囲むようなバウンディングボックス (bounding box) が表示される.
バウンディングボックスの座標値が数値データとして得られる
顔ランドマークの検出 (face landmark detector)
画像から 68 のランドマーク (68 landmarks) を得る. tree structured part model により,最大 68 のランドマークを得る
顔のランドマーク検知が行われ,顔を囲むようなバウンディングボックス (bounding box) と,顔のランドマークが表示される.
前準備
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 の起動
NVIDIA ドライバのインストール(Windows 上)
NVIDIA ドライバ
NVIDIA ドライバは,NVIDIA製GPUを動作させるための重要なソフトウェアである.このドライバをインストールすることにより,GPUの性能を引き出すことができ,グラフィックス関連のアプリ,AI関連のアプリの高速化が期待できる.
ドライバはNVIDIA公式サイトである https://www.nvidia.co.jp/Download/index.aspx?lang=jp からダウンロードできる.このサイトからダウンロードするときには,グラフィックスカードとオペレーティングシステムを選択する. なお,NVIDIA GeForce Experiance を用いてインストールすることも可能である.
【サイト内の関連ページ】
- NVIDIA グラフィックス・ボードの確認
Windows で,NVIDIA グラフィックス・ボードの種類を調べたいときは, 次のコマンドを実行することにより調べることができる.
wmic path win32_VideoController get name
- NVIDIA ドライバのダウンロード
NVIDIA ドライバは,以下の NVIDIA 公式サイトからダウンロードできる.
- ダウンロードの際には,使用しているグラフィックス・ボードの型番とオペレーティングシステムを選択する.
NVIDIA CUDA ツールキット 11.8 のインストール(Windows 上)
NVIDIA CUDA ツールキットのインストール時の注意点
NVIDIAのGPUを使用して並列計算を行うためのツールセット
主な機能: GPU を利用した並列処理,GPU のメモリ管理,C++をベースとした拡張言語とAPIとライブラリ
【NVIDIA CUDA ツールキットの動作に必要なもの】
- CUDA対応のNVIDIA GPUが必要.
そのために,NVIDIA グラフィックス・ボードを確認する. Windows で,NVIDIA グラフィックス・ボードの種類を調べたいときは, 次のコマンドを実行することにより調べることができる.
wmic path win32_VideoController get name
- NVIDIA ドライバのダウンロードとインストール
NVIDIA ドライバは,以下の NVIDIA 公式サイトからダウンロードできる. ダウンロードの際には,使用しているグラフィックス・ボードの型番とオペレーティングシステムを選択する.
- Windows では,インストール前に,Build Tools for Visual Studio もしくは Visual Studio をインストールしておくことが必要である.
【Windows でインストールするときの注意点】
- Windows では, NVIDIA CUDA ツールキットのインストール中は,なるべく他のウインドウはすべて閉じておくこと.
- NVIDIA CUDA ツールキットのインストールが終わったら,ユーザ環境変数 TEMP の設定を行う.
Windows のユーザ名が日本語のとき,nvcc がうまく動作しないエラーを回避するためである.
ユーザ環境変数 TEMP に「C:\TEMP」を設定するために, コマンドプロンプトで,次のコマンドを実行する.
mkdir C:\TEMP powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
【関連する外部ページ】
- NVIDIA CUDA ツールキットのアーカイブの公式ページ: https://developer.nvidia.com/cuda-toolkit-archive
- NVIDIA CUDA ツールキット の公式のドキュメント: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
- NVIDIA CUDA ツールキットのインストールに関する,NVIDIA CUDA クイックスタートガイドの公式ページ: https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html
【関連項目】 NVIDIA CUDA ツールキット, NVIDIA CUDA ツールキット 12.5 のインストール(Windows 上), NVIDIA CUDA ツールキット 11.8 のインストール(Windows 上)
- Windows では,NVIDIA CUDA ツールキットのインストール中は,なるべく他のウインドウはすべて閉じておくこと.
- Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- 次のコマンドを実行
次のコマンドは,NVIDIA GeForce Experience,NVIDIA CUDA ツールキット 11.8 をインストールするものである.
wmic path win32_VideoController get name winget install --scope machine Nvidia.GeForceExperience winget install --scope machine Nvidia.CUDA --version 11.8 powershell -command "[System.Environment]::SetEnvironmentVariable(\"CUDA_HOME\", \"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\", \"Machine\")"
- NVIDIA CUDA ツールキットのインストールが終わったら,ユーザ環境変数 TEMP の設定を行う.
Windows のユーザ名が日本語のとき,nvcc がうまく動作しないエラーを回避するためである.
ユーザ環境変数 TEMP に「C:\TEMP」を設定するために, コマンドプロンプトで,次のコマンドを実行する.
mkdir C:\TEMP powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
Dlib のインストール
前準備として, Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)もしくはVisual Studio 2022 のインストールを終えておくこと.
- Windows で,コマンドプロンプトを実行.
- cmake の確認
次のコマンドを実行.エラーメッセージが出なければ OK.
where cmake
- Dlib のソースコードのダウンロード
cd C:\ rmdir /s /q dlib git clone https://github.com/davisking/dlib
古いバージョンの Dlib を使いたい場合には,次のように行う
cd C:\ curl -O http://dlib.net/files/dlib-19.19.zip "c:\Program Files\7-Zip\7z.exe" x dlib-19.19.zip move dlib-19.19 dlib
- cmake の操作
cmake のオプションの 「Visual Studio 17 2022」のところは, 使用する Visual Studio のバージョンにあわせること. Visual Studio 2022 のときは,「Visual Studio 17 2022」. Visual Studio 2019 のときは,「Visual Studio 16 2019」.
「11.8」のところは,実際にインストールしている NVIDIA CUDA ツールキットのバージョンにあわせること.
NVIDIA CUDA ツールキットを使わないときは「-DDLIB_USE_CUDA=NO」を付けて,そのことを指定する.
cd C:\dlib rmdir /s /q build mkdir build cd build del CMakeCache.txt rmdir /s /q CMakeFiles\ cmake .. -G "Visual Studio 17 2022" -A x64 -T host=x64 ^ -DCMAKE_CXX_FLAGS="/utf-8 /DWIN32 /D_WINDOWS /W3 /GR /EHsc" ^ -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 の結果の確認
エラーメッセージが出ていないことを確認
このとき「CMake Error: The soruce directory ... does not appear to contain CMakeLists.txt」と表示されるかもしれない. .
このときは,続行せず,次の手順で対処する.
- 「dir ..」でファイル表示.このとき CMakeLists.txt があるか?
→無い場合,原因は,Dlib のソースコードのダウンロードを間違ったか,cd の操作を間違ったようである.このページを参考に,Dlib のソースコードのダウンロードのところからやり直す.
→ある場合,原因は cmake のオプションに「..」を入れ忘れていたかもしれない.もう一度 cmake の実行をやり直してみる.
CUDA との連携ができている場合には、 「DLIB WILL USE CUDA」と表示される
CUDAと連携する Dlib を動かすには,NVIDIA CUDA ツールキットのインストール,NVIDIA cuDNN のインストールが必要.
NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストールは終わっているのに,「DLIB WILL USE CUDA」と表示されない場合がある.
Windows のユーザ名が日本語のとき, ユーザ環境変数 TEMP に日本語が含まれることになり,nvcc がうまく動作しない可能性がある.
この問題を回避するため. ユーザ環境変数 TEMP の設定を行う.
ユーザ環境変数 TEMP に「C:\TEMP」を設定するために, コマンドプロンプトで,次のコマンドを実行する.
mkdir C:\TEMP powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
- 「dir ..」でファイル表示.このとき CMakeLists.txt があるか?
- ビルド操作,インストール操作
cmake --build . --config RELEASE --target INSTALL -- /m:4
- 終了の確認
エラーメッセージが出ていないことを確認
- テスト(テストが不要なら,この操作は行わない)
かなり時間がかかる.
次を実行する.エラーメッセージが出ないことを確認.警告メッセージ(黄色)は無視してよい.
「cd C:\dlib」の次に「cd dlib」があるのは書き間違いではない.
このとき,赤字のエラーメッセージが出る場合があるが,無視しても問題なさそうである.
cd C:\dlib cd dlib cd test rmdir /s /q build mkdir build cd build cmake .. cmake --build . --config Release
引き続き,次を実行する. 時間がかかる.
.\release\dtest --runall
「All tests completed successfully」のように表示されたら問題ない.
Python の dlib パッケージのインストール
- Windows で,コマンドプロンプトを管理者として実行.
コマンドプロンプトを管理者として実行: 別ページ »で説明
- 次のように操作する.
python -m pip uninstall -y 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 を用いた顔検出、顔識別などについては, 別ページ »にまとめ
- Windows の システム環境変数 Pathに,c:\dlib\bin を追加することにより,パスを通す.
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\dlib\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
- 学習済みデータなどのダウンロードと展開(解凍)
次のコマンドを実行.することにより, 顔識別などに利用できるファイルの ダウンロードと展開(解凍)が行われる. 次のコマンドを実行するには,7-Zip が必要である. 7-Zip のインストールは 別ページ »で説明
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
【サイト内の関連ページ】
サイト内の別ページに Dlib の利用についてまとめているので,活用してください.
https://www.kkaneko.jp/ai/dlib/
上の手順でうまく dlib をインストールできないとき
上の手順でうまく dlib をインストールできないとき.
このページでは, CUDA と連携させたい,最新版を使いたいという理由で, pip を用いずに,コマンド(手動)で,ソースコードをダウンロードし,ビルドしてインストールしている.
上の手順でうまくいかないときは,次の(1),(2),(3),(4)で解決する可能性がある.
(1)cmakeにパスが通っているかを確認する
(2)Python のインストール: 別ページ »で説明のときに, 「Install for all users」をチェックしなかった場合にトラブルが起きることがある. Python をインストールし直す(このとき, 「Install for all users」をチェック)と簡単に解決できる場合がある.
(3)最新版のDlib でなく,古いバージョンの Dlib を使うと解決できる場合はある.その手順については,このWebページの上に説明がある.
(4)pip を用いて,インストール操作するとうまく動くようになる場合がある.その手順は次の通り.
-
Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
- 使用する Python のバージョンの確認
python --version
- パッケージのインストール
「dlib==19.19」とあるのはバージョン指定. 上の手順でうまく dlib をインストールできない場合は,別のバージョン(古いバージョンなど)を指定してインストールすることで,問題を回避できる可能性がある
python -m pip install -U dlib==19.19
- Python の dlib パッケージがインストールできたことの確認
python -c "import dlib; print( dlib.__version__ )"
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
ageitgey の face_recognition で顔識別を行ってみる
ファイルとディレクトリの準備
- 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 の下に画像ファイルがあることを確認
顔識別を行ってみる
unknown_pictures の下にある画像ファイルを、 known_people 下の画像ファイルを照合して顔識別を行うコマンド
cd /d c:%HOMEPATH%\face_recognition face_recognition --show-distance true known_people unknown_pictures
顔検出を行ってみる
cd /d c:%HOMEPATH%\face_recognition face_detection --model cnn unknown_pictures
表示される4つの数字は、顔領域の座標値
* その他,Dlib を用いた顔検出、顔識別などについては, 別ページ »にまとめ
Dlib 付属のツール類 htmlify, Dlib の imglab のインストール
今度は,Dlib 付属のツール類をインストールしたい
http://dlib.net/compile.html の記述に従う
- Windows で,コマンドプロンプトを管理者として実行.
コマンドプロンプトを管理者として実行: 別ページ »で説明
- htmlify のビルドとインストール
cd C:\dlib cd tools\htmlify rmdir /s /q build mkdir build cd build cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 ^ -DCMAKE_INSTALL_PREFIX="c:\dlib" .. cmake --build . --config RELEASE cmake --build . --config RELEASE --target INSTALL -- /m:4
結果を確認.エラーメッセージが出ていないこと
- imglab のビルドとインストール
cd C:\dlib cd tools\imglab rmdir /s /q build mkdir build cd build cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 ^ -DCMAKE_INSTALL_PREFIX="c:\dlib" .. cmake --build . --config RELEASE cmake --build . --config RELEASE --target INSTALL -- /m:4
結果を確認.エラーメッセージが出ていないこと
imglab の使用法については 別ページ »で説明
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 ^ -DCMAKE_INSTALL_PREFIX="c:\dlib" ..
- 結果の確認
エラーメッセージが出ていないこと
- ビルド操作,インストール操作
cmake --build . --config RELEASE
結果を確認.エラーメッセージが出ていないこと