face_recognition による顔識別.訓練データによる訓練と,検証データによる検証(Dlib,ageitgey/face_recognition,Python を使用)(Windows 上)

サイト内の関連ページ

用語説明

前準備

Python のインストール(Windows上)

注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.

winget(Windowsパッケージマネージャー)を使用してインストールを行う

  1. Windowsで,管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. winget(Windowsパッケージマネージャー)が利用可能か確認する:
    winget --version
    
  3. Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
    REM Python をシステム領域にインストール
    winget install --scope machine --id Python.Python.3.12 -e --silent
    REM Python のパス
    set "INSTALL_PATH=C:\Program Files\Python312"
    echo "%PATH%" | find /i "%INSTALL_PATH%" >nul
    if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%" /M >nul
    echo "%PATH%" | find /i "%INSTALL_PATH%\Scripts" >nul
    if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%\Scripts" /M >nul
    
  4. 【関連する外部サイト】

    【サイト内の関連ページ】

Visual Studio 2022 Build Toolsとランタイムのインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要である。


REM Visual Studio 2022 Build Toolsとランタイムのインストール
winget install --scope machine Microsoft.VisualStudio.2022.BuildTools Microsoft.VCRedist.2015+.x64
set VS_INSTALLER="C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe"
set VS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
REM C++開発ワークロードのインストール
%VS_INSTALLER% modify --installPath %VS_PATH% ^
--add Microsoft.VisualStudio.Workload.VCTools ^
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
--includeRecommended --quiet --norestart

Git のインストール(Windows 上)

Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.

サイト内の関連ページWindows での Git のインストール: 別ページ »で説明

関連する外部ページGit の公式ページ: https://git-scm.com/

Gitのインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。


REM Git をシステム領域にインストール

7-Zip のインストール

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。


REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent
REM 7-Zip のパス設定
set "SEVENZIP_PATH=C:\Program Files\7-Zip"
if exist "%SEVENZIP_PATH%" (
    echo "%PATH%" | find /i "%SEVENZIP_PATH%" >nul
    if errorlevel 1 setx PATH "%PATH%;%SEVENZIP_PATH%" /M >nul
)

Dlib Python のインストール,Dlib のソースコード等と,Dlib の学習済みモデルのダウンロード

  1. Windows で,管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. Dlib のパッケージのインストール

    Windowspip を実行するときは,コマンドプロンプト管理者として開き,それを使って pip を実行することにする.

    次のコマンドを実行.

    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
    
  3. Python の dlib パッケージがインストールできたことの確認

    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.

    python -c "import dlib; print( dlib.__version__ )"
    
  4. Dlib のソースコード等のダウンロード

    次のコマンドを実行.

    cd C:\
    rmdir /s /q dlib
    git clone https://github.com/davisking/dlib
    
  5. 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
    
  6. Dlib の動作確認のため,次を実行.エラーメッセージが出ずに,顔検出の結果が表示されれば OK とする.
    cd C:\dlib
    cd python_examples
    python cnn_face_detector.py mmod_human_face_detector.dat ..\examples\faces\2007_007763.jpg
    

ageitgey/ageitgey の face_recognition のインストール

  1. Windows で,管理者権限コマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. numpy, scikit-image, scikit-learn のインストール

    次のコマンドを実行する.

    python -m pip install -U numpy scikit-image scikit-learn
    
  3. 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
    

face_recognition による顔識別.訓練データによる訓練と,検証データによる検証(Dlib,ageitgey/face_recognition,Python を使用)

ここで行うこと

  • すでに、誰であるかが分かっている顔写真(顔識別の正解画像)を複数準備。

    顔写真の枚数は多いほうが精度が高い

  • 新しい画像を使い、Dlib と knn アルゴリズムにより顔認識を行う
  • 公開のプログラムを使用

knn アルゴリズム。

  • 事前に、データを複数準備(事前データ)。
  • それぞれのデータに、ラベルがついている。
  • 新しいデータが1つある。それを、事前データそれぞれすべてと類似度を計算する。
  • 類似度が高いもの数個を選ぶ。そして、選ばれた数個のラベルについて多数決を取る
  • その結果得られたラベルを識別結果とする
  1. ファイル %HOMEPATH%\face_recognition\examples\face_recognition_knn.py を分かりやすいディレクトリ(フォルダ)にコピー

    ここでは,c:\w にコピーしている.

  2. そこに、「knn_examples」という名前のディレクトリを作る.
  3. 「knn_examples」の下に、「train」という名前のディレクトリを作る.
  4. 「knn_examples」の下に、「test」という名前のディレクトリを作る.
  5. 「train」の下に、さらに、複数のディレクトリを作る.

    ディレクトリ名は何でも良いが、英語または数字のみを使い、分かりやすい名前がよい.

    次の例では2つ作っているが、3つ以上作ってもよい。

  6. いま作ったディレクトリの下に画像ファイルを置く。

    画像ファイルの拡張子は .png もしくは .jpg もしくは .jpeg であること。

  7. 今度は「test」の下に、顔認識させたい画像を置く
  8. Windows でコマンドプロンプトを開く。cd コマンドを使い、 ダウンロードしたディレクトリ(フォルダ)に、カレントディレクトリを移す
  9. python face_recognition_knn.py を実行

    このプログラムでは,モデルとして hog を使う. ディープラーニングの CNN を使うように変更する場合には, face_locaions のところを,「face_locations(..., model="cnn")」のように書き換える

  10. 結果を確認。

    画像サイズを変える(解像度を変える)など、少しの工夫で検出漏れがなくなったり、顔認識の精度が向上する可能性がある。

  11. 結果をファイルに保存したい場合

    python face_recognition_knn.py を次のように書き換え.

    「pil_image.save('result' + os.path.basename(img_path))」を追加

    python face_recognition_knn.py を実行すると、次のように、結果がファイルに保存される.