金子邦彦研究室人工知能Windows でのインストールと動作確認(人工知能関係)InsightFace のインストールと動作確認(顔検出,年齢と性別の推定)(InsightFace,PyTorch,Python を使用)(Windows 上)

InsightFace のインストールと動作確認(顔検出,年齢と性別の推定)(InsightFace,PyTorch,Python を使用)(Windows 上)

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

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

前準備

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

サイト内の関連ページ

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

関連する外部ページ

Git の公式ページ: https://git-scm.com/

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

サイト内の関連ページ

関連する外部ページ

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

Build Tools for Visual Studio 2022,NVIDIA ドライバ,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストール(Windows 上)

Windows での Build Tools for Visual Studio 2022NVIDIA ドライバNVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN v8.6 のインストールと動作確認: 別ページ »で説明

関連する外部ページ

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

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. PyTorch のページを確認

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

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

    次のコマンドは, PyTorch 2.0 (NVIDIA CUDA 11.8 用) をインストールする. 事前に NVIDIA CUDA のバージョンを確認しておくこと(ここでは,NVIDIA CUDA ツールキット 11.8 が前もってインストール済みであるとする).

    PyTorch で,GPU が動作している場合には,「torch.cuda.is_available()」により,True が表示される.

    python -m pip install -U pip
    python -m pip install -U torch torchvision torchaudio numpy --index-url https://download.pytorch.org/whl/cu118
    python -c "import torch; print(torch.__version__, torch.cuda.is_available())" 
    

    [image]

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

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

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

python -m pip install -U insightface onnxruntime-gpu

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

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

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

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

Python プログラムを実行する

Python プログラムの実行: 別ページ »で説明

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 プログラムを実行する

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]