トップページ情報工学を学ぶ人工知能の実行,Python プログラム (Windows 上)InsightFace による顔検出,年齢と性別の推定(InsightFace, Python, PyTorch を使用)(Windows 上)

InsightFace による顔検出,年齢と性別の推定(InsightFace, Python, PyTorch を使用)(Windows 上)

InsightFace は,顔検出 (face detection),顔のアラインメント, 顔検証 (face verification)顔識別 (face identification)の機能を持つ.

InsightFace の GitHub のページ: https://github.com/deepinsight/insightface

前準備

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)のインストール(Windows 上)

Build Tools for Visual Studio は,Windows で動くMicrosoft の C++ コンパイラーである.

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)のダウンロードページ

https://visualstudio.microsoft.com/ja/downloads/

インストール手順の詳細(別ページ)

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)のインストール: 別ページで説明している.

インストール手順の概要

  1. ダウンロード URL を開く

    https://visualstudio.microsoft.com/ja/downloads/

  2. このページの下の方の「Visual Studio 2022用のツール」を展開

    [image]
  3. Build Tools for Visual Studio 2022」の右の「ダウンロード」をクリック.

    [image]
  4. ダウンロードが始まる

    [image]
  5. ダウンロードした .exe ファイルを実行する
  6. 表示を確認し,「続行」をクリック

    [image]
  7. C++ によるデスクトップ開発」をクリック.「インストール」をクリック.

    [image]
  8. ダウンロードとインストールが始まる
  9. インストール終了の確認

Git のインストール

NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7.0, NVIDIA cuDNN 8.4.1 のインストール

GPU は,グラフィックス・プロセッシング・ユニットの略で、コンピュータグラフィックス関連の機能,乗算や加算の並列処理の機能などがある. NVIDIA CUDA ツールキット は,NVIDIA社が提供している GPU 用のプラットフォームである.

【インストール手順の詳細説明】

NVIDIA ドライバについて

  1. 古いNVIDIA ドライバ,NVIDIA CUDA ツールキットがインストール済みのとき,不要なものがあればアンインストール

    Windows のスタートメニューで「設定」,「アプリ」と操作して,「NVIDIA ・・・」を削除

  2. NVIDIA グラフィックス・カードの種類を調べる

    hwinfo (URL: https://www.hwinfo.com) を使って調べることができる.

  3. あとで,NVIDIA CUDA ツールキットをインストールするときに,NVIDIA ドライバを同時にインストールすることができる.

    但し, NVIDIA CUDA ツールキットの古いバージョンを使うという場合は,NVIDIA CUDA ツールキットのインストールのときに NVIDIA ドライバをインストールするのでなく,次のページから最新のNVIDIA ドライバをダウンロードして,インストールする.

    NVIDIA ドライバのダウンロードページ】

    https://www.nvidia.co.jp/Download/index.aspx?lang=jp

NVIDIA CUDA ツールキット 11.7.0,NVIDIA cuDNN 8.4.1 のインストール

インストール手順の詳細(別ページ)

Windows での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7.1NVIDIA cuDNN v8.5 のインストールと動作確認: 別ページで説明している.

インストール手順の概要

NVIDIA CUDA ツールキット 11.7.1 のダウンロードとインストール

NVIDIA cuDNN v8.5 のインストール(Windows 上)

要点

インストール手順

  1. ZLIB DLL のダウンロードとインストール

    Windows では,コマンドプロン プトを管理者として実行し, 次のコマンドを実行.

    Windows のコマンドプロンプト管理者として実行するには, 検索窓で「cmd」と入れたあと, 右クリックメニューで「管理者として実行」を選ぶのが簡単.

    [image]

    v11.7」のところは,実際にインストールされているバージョンを確認し,読み替えてください.

    cd "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin"
    curl -O http://www.winimage.com/zLibDll/zlib123dllx64.zip
    call powershell -command "Expand-Archive zlib123dllx64.zip"
    copy zlib123dllx64\dll_x64\zlibwapi.dll .
    

    [image]

    Windows で 「Could not locate zlibwapi.dll. Please make sure it is in your library path!」と表示されるときの対処:

    ここの説明を参考に ZLIB DLL をインストールする.

  2. NVidia の cuDNN のウェブページを開く

    https://developer.nvidia.com/cuDNN

  3. ダウンロードしたいので,cuDNNのところにある「Download cuDNN」をクリック.

    [image]
  4. NVIDIA Developer Program メンバーシップに入る

    cuDNN のダウンロードのため.

    Join now」をクリック.その後,画面の指示に従う. 利用者本人が,電子メールアドレス,表示名,パスワード,生年月日を登録.利用条件等に合意.

    [image]
  5. ログインする

    [image]
  6. 調査の画面が出たときは,調査に応じる
  7. ライセンス条項の確認

    [image]
  8. ダウンロードしたいバージョンを選ぶ

    ここでは「NVIDIA cuDNN v8.5.0 for CUDA 11.x」を選んでいる.

    このとき,画面の「for CUDA ...」のところを確認し,使用するNVIDIA CUDA のバージョンに合うものを選ぶこと.

    [image]
  9. Windows にインストールするので Windows 版を選ぶ

    [image]
  10. ダウンロードが始まる.

    [image]
  11. ダウンロードした .zip ファイルを展開(解凍)する. その中のサブディレクトリを確認しておく.

    Windows での展開(解凍)のためのソフトには,「7-Zip」などがある.

    [image]
  12. CUDA ツールキットをインストールしたディレクトリ」は,「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7」 のようになっている.確認する.

    [image]
  13. 確認したら, さきほど展開してできたすべてのファイルとディレクトリを,「CUDA ツールキットをインストールしたディレクトリ」にコピーする

    [image]
  14. パスが通っていることを確認.

    次の操作により,cudnn64_8.dllパスが通っていることを確認する.

    Windowsのコマンドプロンプトを開き,次のコマンドを実行.エラーメッセージが出ないことを確認.

    where cudnn64_8.dll
    

    [image]
  15. システム環境変数 CUDNN_PATH の設定を行う.

    システム環境変数 CUDNN_PATH の設定のため, 管理者として実行した コマンドプロンプトで,次のコマンドを実行.

    call powershell -command "[System.Environment]::SetEnvironmentVariable(\"CUDNN_PATH\", \"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\", \"Machine\")"
    

    [image]

Python 64 ビット版のインストール,pip と setuptools の更新(Windows 上)

Windows での Python 3.10 のインストール,pip と setuptools の更新: 別ページで説明している.

Python の公式ページ: http://www.python.org/

torch, torchvision, torchaudio のインストール

PyTorch のページで確認ののち,次のようなコマンドを実行(実行するコマンドは,PyTorch のページの表示されるコマンドをそのまま使う).

PyTorch のページ: https://pytorch.org/index.html

python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

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

コマンドプロンプト管理者として実行し,次のコマンドを実行.

GPU を使わない場合には「onnxruntime-gpu」でなく,「onnxruntime」をインストールすること.

python -m pip install -U insightface onnxruntime-gpu

InsightFace による顔検出,年齢と性別の推定(Ubuntu 上)

前準備

コマンドプロンプト管理者として実行し,次のコマンドを実行.

python -m pip install -U matplotlib opencv-python numpy

顔検出及び年齢と性別の予測の実行

公式ページ (https://github.com/deepinsight/insightface/tree/master/python-package) に記載の,顔検出及び年齢と性別の予測のプログラムを実行する.

このプログラムは buffalo_l という名前の事前学習済みモデルを使用している.

Python プログラムの実行

Python プログラムの実行

Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

Python のまとめ: 別ページにまとめている.

このプログラムの実行により,result.jpg ファイルができる.

import cv2
import numpy as np
import matplotlib.pyplot as plt
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image

app = FaceAnalysis(providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))

img = ins_get_image('t1')
faces = app.get(img)
rimg = app.draw_on(img, faces)
plt.style.use('default')
plt.imshow(cv2.cvtColor(rimg, cv2.COLOR_BGR2RGB))
plt.show()
cv2.imwrite("./result.jpg", rimg)

[image]

[image]

パソコンに接続されたカメラを使用

Python プログラムの実行

Python プログラムの実行

Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.

Python のまとめ: 別ページにまとめている.

import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image

app = FaceAnalysis()
app.prepare(ctx_id=0, det_size=(640, 640))

v = cv2.VideoCapture(0)
while(v.isOpened()):
    r, f = v.read()
    if ( r == False ):
        break
    faces = app.get(f)
    rimg = app.draw_on(f, faces)
    cv2.imshow("", rimg)
    # Press Q to exit
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

[image]

[image]

[image]