画像認識 Grounding Dinoを試してみる

インストール方法

注意: GrounDinoのインストールは難解かつエラーハンドリングも不十分であるため、以下のインストールステップを確実に行ってください。前後すると動作しない等の問題が発生します。

- Visual Studio with C++ support(cl)をインストールする

Visual Studio Installerをインストール、起動し、「Build Tools」インストール。

インストール済みは「変更」を選択
C++によるでデスクトップ開発を選択
赤線3つの場所にチェックをしインストール

- CLのパスを通す

以下のパスを環境変数のPathに追加する

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\bin\Hostx64\x64

再起動後、パスが通っているか確認してください

- Git Clone およびライブラリーのインストール

必要環境はインストールしてくれるみたいなので、pytorch等の事前インストールは不要のようです。(私は新しく作成したconda環境にて動作しました)

git clone https://github.com/IDEA-Research/GroundingDINO.git
cd GroundingDINO/
# install libraries
pip install -e .
python setup.py build
python setup.py install

問題なくインストールが完了すると以下のように表示されます

- 重みデータの保存

# download the model weights
mkdir weights

https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth

上記リンクから、重みデータをダウンロードし、作成したweightsフォルダーに保存する

- 必要ライブラリーの追加

# なぜか、一部のライブラリが-eでインストールされないので、以下を実行する
pip install -r requirements.txt

テストコード

GPUモードで動作しなかったためCPUモードに切り替えています

import cv2,torch

model = load_model("GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py", 
                   "GroundingDINO/weights/groundingdino_swint_ogc.pth")
IMAGE_PATH = "output_frames/frame_0000.png"
TEXT_PROMPT = "chair . person . dog ."
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25
image_source, image = load_image(IMAGE_PATH)

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_TRESHOLD,
    text_threshold=TEXT_TRESHOLD,
    device='cpu'
)

annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("annotated_image.jpg", annotated_frame)

結果

文字が小さく見づらいですが、プロンプト通り犬を認識していることがわかります

エラーリスト

RuntimeError: The detected CUDA version (12.1) mismatches the version that was used to compile PyTorch (11.8). Please make sure to use the same CUDA versions.

主な問題は、PyTorchとCUDAのバージョンの不一致です。

  1. システムで検出されたCUDAバージョンは12.1です。

  2. しかし、インストールされているPyTorchは、CUDA 11.8でコンパイルされています。

この不一致が、Grounding DINOのビルドを妨げています。正しいバージョンのCUDAを準備してください

UserWarning: Failed to load custom C++ ops. Running on CPU mode Only!

1. Visual Studio with C++ supportがインストールされていない可能性があります。
2. GPUが正しくセットアップされていない可能性があります。CUDAインストール後、DINOのセットアップを実行してください。

name '_C' is not defined

上記エラーについて、CUDA HOMEを設定すれば治るとの記事が多いが、Windowsでは未設定でも動作しました。

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