Japanese Stable CLIP を試してみた

OpenCV with CUDA (未遂)

K2200M に載せ替えて、Tensorflow や PyTorch をインストールしましたが、その流れで OpenCV もインストールしていました。が、どうやら GPU が有効になっていません。

調べたところ、OpenCV は GPU を有効にするには自前でビルドする必要があるようです。

1.ビルドツールの準備

以下コマンドでビルドツールをインストールします。
winget install --id Microsoft.VisualStudio.2022.BuildTools
そのうえで、スタートメニューから「Visual Studio Installer」を実行します。
インストーラーが起動したら、「変更」をクリックします。

「C++ によるデスクトップ開発」にチェックを付けます。自動で右ペインの「MSVC v143~」、「Windows 11 SDK」、「Windows 用 C++ CMake ツール」にチェックが入るので、そのままでインストールを実施します。

このままでもいいのですが、ビルド速度が高速な「Ninja」を使用するため、以下のコマンドでインストールをしました。
winget install --id Ninja-build.Ninja

2.Python 環境の準備

今回は OpenCV 用に新たに仮想環境を用意します。
conda create -n cv python=3.8
これで
C:¥Users¥[xxx]¥anaconda3¥envs¥cv
に仮想環境が作られます。

3.ソースコードの取得

git コマンドで以下 2 つのリポジトリのソースコードをクローンします。
(ZIP ファイルをダウンロードして展開するでも可能です)
https://github.com/opencv/opencv.git
https://github.com/opencv/opencv_contrib.git

4.cmake で configure

ビルド手順はいろいろなサイトで紹介されていますが、今回は
こちらのサイトを参考に、バッチファイルを作成しました。
まず環境変数などをセットするバッチがこちら。

ECHO -- Set these variables below --
set "openCvSource=D:/code/opencv"
set "openCVExtraModules=D:/code/opencv_contrib/modules"
set "openCvBuild=D:/code/build"
set "toolkitRoot=C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7"

ECHO -- Set this to the location of your Conda Env
set "pathToAnaconda=C:/Users/[xxx]/anaconda3/envs/cv"

ECHO -- Leave these variables alone --
set "buildType=Release"
set "generator=Ninja"
set "pyVer=38"

set CUDNN_LIBRARY=C:/Users/[xxx]/Documents/Tools/cudnn/cuda/lib/cudnn.lib
set CUDNN_INCLUDE_DIR=C:/Users/[xxx]/Documents/Tools/cudnn/cuda/include

cudnn が有効にならなかったため、環境変数を追加しました。Windows のパス区切り (\) だと認識しないので、スラッシュで記載してみたら認識しました。

cmake を実行するバッチはこちら。

ECHO -- Starting OpenCV Configuration --

ECHO ---- Opening Visual Studio builder ----
call "D:/Program Files (x86)/Microsoft Visual Studio/2022/VC/Auxiliary/Build/vcvars64.bat"

ECHO ---- Setting up environment variables ----
call set_env_paths.bat

ECHO ---- Running CMake Commands ----
call "C:/Program Files/CMake/bin/cmake.exe" ^
-B"%openCvBuild%/" ^
-H"%openCvSource%/" ^
-G"%generator%" ^
-DCMAKE_BUILD_TYPE=%buildType% ^
-DOPENCV_EXTRA_MODULES_PATH="%openCVExtraModules%/" ^
-DINSTALL_TESTS=ON ^
-DINSTALL_C_EXAMPLES=OFF ^
-DINSTALL_BIN_EXAMPLES=OFF ^
-DBUILD_EXAMPLES=OFF ^
-DBUILD_opencv_world=ON ^
-DWITH_CUDA=ON ^
-DCUDA_TOOLKIT_ROOT_DIR="%toolkitRoot%" ^
-DCUDA_FAST_MATH=ON ^
-DWITH_CUBLAS=ON ^
-DCUDA_ARCH_BIN=5.0 ^
-DWITH_NVCUVID=ON ^
-DWITH_CUDNN=ON ^
-DOPENCV_DNN_CUDA=ON ^
-DWITH_OPENGL=ON ^
-DENABLE_FAST_MATH=ON ^
-DWITH_MFX=ON ^
-DBUILD_SHARED_LIBS=OFF ^
-DBUILD_opencv_python2=OFF ^
-DBUILD_opencv_python3=ON ^
-DPYTHON3_INCLUDE_DIR=%pathToAnaconda%/include ^
-DPYTHON3_LIBRARY=%pathToAnaconda%/libs/python%pyVer%.lib ^
-DPYTHON3_EXECUTABLE=%pathToAnaconda%/python.exe ^
-DPYTHON3_NUMPY_INCLUDE_DIRS=%pathToAnaconda%/lib/site-packages/numpy/core/include ^
-DPYTHON3_PACKAGES_PATH=%pathToAnaconda%/Lib/site-packages/ ^
-DOPENCV_SKIP_PYTHON_LOADER=ON ^
-DOPENCV_FORCE_PYTHON_LIBS=ON ^
-DOPENCV_PYTHON3_VERSION=3.8 ^
-DWITH_GSTREAMER=OFF

ECHO -- OpenCV Configuration has finished, proceeding to build phase --
call "C:\Program Files\CMake\bin\cmake.exe" --build %openCvBuild% --config Release --target install

:End
PAUSE

「vcvars64.bat」は Visual Studio のビルド用環境変数をセットするバッチです。Ninja ツールを使用する場合は必須。あるいは、スタートメニューから「x64 Native Tools command prompto」を起動しても同じ状況ですが、このバッチを直接実行できるのでこのように記述したほうが便利だと思いました。

5.ビルド
作成したバッチを実行します。8560w では 3時間近く時間がかかりますが、ビルドは正常に終了しました。

6.動作確認
「2.」のところで作成した python の環境に入り、
import cv2
としたところ、エラーが発生します。
ImportError: DLL load failed while importing cv2: 指定されたモジュールが見つかりません。

環境変数のパスを変更したり、ビルドディレクトリを削除してやり直したり、ビルドオプションを変更してみたりしましたが、結局解決しませんでした。
解決できなかったので、(未遂) です・・・

コメント