画像認識 Grounding Dinoを試してみる
インストール方法
注意: GrounDinoのインストールは難解かつエラーハンドリングも不十分であるため、以下のインストールステップを確実に行ってください。前後すると動作しない等の問題が発生します。
- Visual Studio with C++ support(cl)をインストールする
Visual Studio Installerをインストール、起動し、「Build Tools」インストール。
- 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
- 必要ライブラリーの追加
# なぜか、一部のライブラリが-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)
結果
文字が小さく見づらいですが、プロンプト通り犬を認識していることがわかります
エラーリスト
主な問題は、PyTorchとCUDAのバージョンの不一致です。
システムで検出されたCUDAバージョンは12.1です。
しかし、インストールされているPyTorchは、CUDA 11.8でコンパイルされています。
この不一致が、Grounding DINOのビルドを妨げています。正しいバージョンのCUDAを準備してください
1. Visual Studio with C++ supportがインストールされていない可能性があります。
2. GPUが正しくセットアップされていない可能性があります。CUDAインストール後、DINOのセットアップを実行してください。
上記エラーについて、CUDA HOMEを設定すれば治るとの記事が多いが、Windowsでは未設定でも動作しました。