顔検出,顔識別(Dlib,face_recognition のインストールと動作確認)(Python を使用)(Windows 上)
Windows環境においてDlibライブラリをソースコードからビルド・インストールする手順を解説している。前半では,ソースコードのダウンロード,cmakeによるビルド構成(Visual StudioバージョンやNVIDIA CUDA連携の設定を含む),ビルド・インストールの実行,テストを行う。後半では,Pythonのdlibパッケージのインストール,環境変数Pathの設定を行う.
【目次】
- 前準備
- 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) による顔検出の機能がある.
顔検出が行われ,顔を囲むようなバウンディングボックス (bounding box) が表示される.
バウンディングボックスの座標値が数値データとして得られる
顔ランドマークの検出 (face landmark detector)
画像から 68 のランドマーク (68 landmarks) を得る. tree structured part model により,最大 68 のランドマークを得る
顔のランドマーク検知が行われ,顔を囲むようなバウンディングボックス (bounding box) と,顔のランドマークが表示される.
前準備
Python 3.12 のインストール(Windows 上) [クリックして展開]
以下のいずれかの方法で Python 3.12 をインストールする。Python がインストール済みの場合、この手順は不要である。
方法1:winget によるインストール
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install --scope machine --id Python.Python.3.12 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_pip=1 Include_test=0 Include_launcher=1 InstallLauncherAllUsers=1"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで以下を実行する。
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。
Git のインストール(Windows 上) [クリックして展開]
管理者権限のコマンドプロンプトで以下を実行する.管理者権限は,winget の --scope machine オプションでシステム全体にインストールするために必要となる.
REM Git をシステム領域にインストール
winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled"
CMakeのインストール(Windows 上) [クリックして展開]
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
REM CMake をシステム領域にインストール
winget install --scope machine --id Kitware.CMake -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/qn /norestart ADD_CMAKE_TO_PATH=System"
7-Zip のインストール(Windows 上) [クリックして展開]
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent --installer-type msi --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/qn /norestart"
REM 7-Zip のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\7-Zip'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and $c -notlike \"*$p*\"){[Environment]::SetEnvironmentVariable('Path',\"$p;$c\",'Machine')}"
Build Tools for Visual Studio 2026 のインストール(Windows 上) [クリックして展開]
Build Tools for Visual Studio は,Visual Studio の IDE を含まない C/C++ コンパイラ,ライブラリ,ビルドツール等のコマンドライン向け開発ツールセットである。インストール済みの場合、この手順は不要である。
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
REM VC++ ランタイム
winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"
REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
--add で追加されるコンポーネント
上記のコマンドでは,まず Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし,次に setup.exe を用いて以下のコンポーネントを追加している。
VCTools:C++ デスクトップ開発ワークロード(--includeRecommendedにより、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)VC.Llvm.Clang:Windows 向け C++ Clang コンパイラClangCL:clang-cl ツールセットを含むコンポーネントグループ(MSBuild から Clang を使用するために必要)VC.CMake.Project:Windows 向け C++ CMake ツールWindows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)
インストール完了の確認
winget list Microsoft.VisualStudio.BuildTools
上記以外の追加のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。
Visual Studio の機能を必要とする場合は、追加インストールできる。
NVIDIA CUDA Toolkit 12.8のインストール
- 前提条件(NVIDIA CUDA Toolkit インストール前): NVIDIA GPU,NVIDIA ドライバ,および Build Tools for Visual Studio もしくは Visual Studio が必要である.
- インストール中の注意: なるべく他のウインドウはすべて閉じておくこと.
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
REM NVIDIA CUDA Toolkit 12.8 をシステム領域にインストール
winget install --scope machine --id Nvidia.CUDA --version 12.8 -e --silent --disable-interactivity --force --uninstall-previous --accept-source-agreements --accept-package-agreements --override "-s -n"
REM 環境変数TEMP, TMPの設定(一時ファイルの保存先を短いパスに変更)
mkdir C:\TEMP
set "TEMP_PATH=C:\TEMP"
setx TEMP "%TEMP_PATH%" /M >nul
setx TMP "%TEMP_PATH%" /M >nul
Dlib のインストール
- 以下の操作をコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 →「コマンドプロンプト」を選択)。 - 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 の操作
「12.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 .. -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/v12.8" ^ -DCUDA_TOOLKIT_ROOT_DIR="c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.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 source 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キーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。コマンドプロンプトを管理者として実行: 別ページ »で説明 - 次のように操作する.
python -m pip uninstall -y dlib cd C:\dlib python setup.py build python setup.py install - 結果の確認
エラーメッセージが出ていないことを確認する.
- Python のdlib ライブラリがインストールできたことの確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python -c "import dlib; print( dlib.__version__ )"
dlib を用いた顔検出,顔識別などについては, 別ページ »にまとめている. - Windows の システム環境変数 Pathに,c:\dlib\bin を追加することにより,パスを通す.
Windows で,管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー >
cmdと入力 > 右クリック > 「管理者として実行」).次のコマンドを実行する.
powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\dlib\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
- 学習済みデータなどのダウンロードと展開(解凍)
次のコマンドを実行することにより, 顔識別などに利用できるファイルの ダウンロードと展開(解凍)が行われる. 次のコマンドを実行するには,7-Zip が必要である. 7-Zip のインストールは 別ページ »で説明している.