見出し画像

How to build insightface for Python3.13.x on Windows

shiba*2さんは、既にPython3.14.x環境における様々なPythonライブラリーのビルドに挑戦されていますが、特に私の環境において必要とするライブラリーの貴重なビルド情報を次々に公開されておられます。

クラウドのLinuxベースで主に開発をされている為に、Windowsベースの私とは環境が当然異なりますので、私としては、Windowsベースに置き換えた形での情報を記録する必要があります。

今回は、先月参考にさせて頂いた、InsightFace for Python3.13.xのビルド方法を公開します。

それにしても、Python3.12.x時代にはほとんど露呈しなかった問題ですが、3.13.移行後は、必要とするライブラリーが悉く存在せず、自力でビルドする必要が増えた気がします 。

更に今は、丁度CUDAの12.x→13.xへのメジャーバージョンアップと時期が重なっているので、余計ですね。昨日も、onnxruntime-gpuをcu130対応でビルドする為に、散々苦労しましたけどね。

現在、グローバル環境側がCUDA13.xに移行済みであれば、今回の記事においても以下が必要になります。

私が作成した各種ライブラリーは順次、以下で公開しています。

私はA1111系WebUIの環境開発の為に、まだPython3.12.xでやるべき仕事が残っていますが、これらを悉くGitHubに公開し、かつ自身の3.12.x環境を全てEmbedded Python環境に移行させた後、3.12.xを削除し、3.14.x環境も導入していく予定です。

Windows版Python 3.13対応InsightFaceビルド・インストール完全解説書

概要

この解説書では、Windows環境でPython 3.13対応のInsightFaceをビルド・インストールする手順を詳細に説明します。

前提条件

  • Windows 10/11 x64

  • Python 3.13がインストール済み

  • Visual Studio 2022 (C++ビルドツール)

  • CUDA Toolkit 13.0

  • cuDNN 9.13

手順

1. 環境構築

1.1 CUDA13.x対応onnxruntime-gpuのインストール

# 既存のonnxruntimeをアンインストール
pip uninstall -y onnxruntime-gpu

# CUDA 13.0対応のonnxruntime-gpuをインストール
pip install https://huggingface.co/ussoewwin/onnxruntime-gpu-1.24.0/resolve/main/onnxruntime_gpu-1.24.0-cp313-cp313-win_amd64.whl

1.2 依存関係のインストール

# 必要なPythonパッケージをインストール
pip install numpy tqdm requests matplotlib Pillow scipy scikit-learn scikit-image easydict albumentations prettytable opencv-python-headless

# 最新のCythonをインストール(重要)
pip install --upgrade cython

1.3 CUDA環境の確認

# CUDA Toolkitの確認
where nvcc

# cuDNNの確認
Get-ChildItem "C:\Program Files\NVIDIA\" -Recurse -Name "*cudnn*" -ErrorAction SilentlyContinue

2. InsightFaceリポジトリのクローンとセットアップ

2.1 作業ディレクトリの作成

# ビルド用ディレクトリを作成
mkdir insightface_build
cd insightface_build

2.2 リポジトリのクローン

# InsightFaceリポジトリをクローン
git clone https://github.com/deepinsight/insightface.git
cd insightface

# サブモジュールを初期化・更新
git submodule update --init --recursive

3. ビルドの実行

3.1 ビルドディレクトリに移動

cd python-package

3.2 古いビルド成果物の削除

# 古いビルド成果物を削除
Remove-Item -Recurse -Force build -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force dist -ErrorAction SilentlyContinue

# 古いCython生成ファイルを削除(重要)
Remove-Item -Force insightface\thirdparty\face3d\mesh\cython\mesh_core_cython.cpp -ErrorAction SilentlyContinue

3.3 ビルドの実行

# 最新CythonでPython 3.13対応のC++コードを生成・コンパイル
python setup.py build_ext --inplace

# wheelパッケージを作成
python setup.py bdist_wheel

4. インストールとテスト

4.1 生成されたwheelファイルの確認

dir dist

4.2 パッケージのインストール

# ビルドしたパッケージをインストール
pip install dist\insightface-0.7.3-cp313-cp313-win_amd64.whl

4.3 動作テスト

# 基本動作テスト
python -c "import insightface; print('Insightface version:', insightface.__version__)"

# CUDAプロバイダーテスト
python -c "import onnxruntime as ort; print('Available providers:', ort.get_available_providers())"

5. 完全動作テスト

5.1 基本機能テスト

import numpy as np
import cv2
import insightface
from insightface.app import FaceAnalysis

print("Test 1: Library basic operation check starting...")
try:
    print(f"Insightface version: {insightface.__version__}")
    app = FaceAnalysis(providers=['CUDAExecutionProvider'])
    app.prepare(ctx_id=0, det_size=(640, 640))
    print("FaceAnalysis initialization successful. ONNX models loaded normally.")
except Exception as e:
    print(f"Test 1 error: {e}")

5.2 3Dメッシュ機能テスト

print("Test 2: 3D mesh module check starting...")
try:
    from insightface.thirdparty.face3d.mesh import render
    print("Compiled Cython module import successful.")
    
    # ダミーデータでレンダリング関数をテスト
    dummy_vertices = np.random.rand(10, 3).astype(np.float32) * 256
    dummy_triangles = np.array([[0, 1, 2], [3, 4, 5]], dtype=np.int32)
    dummy_colors = np.random.rand(10, 3).astype(np.float32)
    
    rendered_image = render.render_colors(dummy_vertices, dummy_triangles, dummy_colors, 256, 256)
    print(f"Rendering function executed successfully!")
    print(f"Generated image shape: {rendered_image.shape} (height, width, channels)")
    print("All tests completed successfully! Build is successful.")
except Exception as e:
    print(f"Test 2 error: {e}")

トラブルシューティング

よくある問題と解決方法

1. CUDA関連の警告

問題: `cudnn64_9.dll` が見つからない
解決方法:

  • cuDNNのbinディレクトリをPATHに追加

  • 環境変数 `CUDNN_PATH` を設定

2. ビルドエラー

問題: Cythonコンパイルエラー
解決方法:

  • 最新のCythonをインストール

  • 古い `mesh_core_cython.cpp` を削除

  • Visual Studio 2022のC++ビルドツールを確認

3. インポートエラー

問題: モジュールが見つからない
解決方法:

  • 仮想環境を確認

  • パッケージの再インストール

成功の確認

すべてのテストが正常に完了すれば、以下が確認できます:

InsightFace 0.7.3 が正常にインストール
CUDA GPUアクセラレーション が動作
3Dメッシュ機能 が正常に動作
Python 3.13対応 のCythonモジュールが動作

注意事項

  • この手順はWindows環境専用です

  • CUDA Toolkit 13.0とcuDNN 9.13が必要です

  • Visual Studio 2022のC++ビルドツールが必要です

  • 環境変数の設定は再起動後に有効になります

参考資料

いいなと思ったら応援しよう!