2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画像も扱えるJev系OSS「imajev」をMacで試す

2
Posted at

はじめに

Jev系で画像を扱えるOSSモデルであるimajevを手持ちのMacBook Pro(M4 Pro)で試す方法を紹介する。imajevは、判断特化型AIのJevと互換性のあるリクエスト・レスポンス形式を採用し、Jevにはない画像入力にも対応している。本記事ではuvとMLXでローカル起動し、画像内のノートPCの台数を判定する。

動作確認環境

  • MacBook Pro(M4 Pro)
    • メモリ:24GB
  • uv
    • version: 0.12.22 (Homebrew 2026-10-01 aarch64-apple-darwin)

方法

Python本体の準備と仮想環境の作成をまとめて行うため、今回はuvを使用する。uvはインストール済みとする。
公式ドキュメントのQuickstartでは、uvを使っていないので、コマンドを一部変更してuvで実行する。

uvでPythonの仮想環境を作成

最初に、imajevを任意のワークスペースにクローンする。

git clone https://github.com/mohit67890/imajev
cd imajev

uvでPython 3.11の仮想環境を作成する。

uv venv --python 3.11

以下のようにメッセージが出ればOK。

Using CPython 3.11.17
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

仮想環境を有効にする。

source .venv/bin/activate

仮想環境を有効にすると、プロンプトに (imajev) が表示される。
仮想環境内で、依存関係をインストールする。

uv pip install -e ".[serve,mlx]"

必要なパッケージがインストールされる。

インストールログ(クリックで展開)
Resolved 56 packages in 1.12s
      Built imajev @ file:///Users/{username}/Documents/GitHub/
Prepared 56 packages in 22.81s
Installed 56 packages in 167ms
 + annotated-doc==0.0.5
 + annotated-types==0.8.0
 + anyio==4.15.1
 + certifi==2026.7.22
 + cffi==2.1.1
 + charset-normalizer==3.5.2
 + click==8.5.0
 + fastapi==0.142.2
 + filelock==4.0.9
 + fsspec==2026.9.0
 + h11==0.16.0
 + hf-xet==1.6.0
 + httpcore==1.0.9
 + httpx==0.28.1
 + huggingface-hub==1.33.0
 + idna==3.20
 + imajev==1.0.0 (from file:///Users/{username}/Documents/GitHub/imajev)
 + jinja2==3.1.6
 + llguidance==1.9.1
 + markdown-it-py==4.2.0
 + markupsafe==3.0.3
 + mdurl==0.1.2
 + miniaudio==1.71
 + mlx==0.32.3
 + mlx-audio==0.5.7
 + mlx-metal==0.32.3
 + mlx-vlm==0.7.1
 + numpy==2.4.6
 + opencv-python==5.0.0.93
 + opentelemetry-api==1.45.0
 + packaging==26.3
 + pillow==12.3.0
 + pycparser==3.0
 + pydantic==2.13.5
 + pydantic-core==2.46.5
 + pygments==2.21.0
 + python-multipart==0.0.32
 + pyyaml==6.0.3
 + regex==2026.9.29
 + requests==2.34.2
 + rich==15.0.0
 + safetensors==0.8.0
 + scipy==1.17.1
 + sentencepiece==0.2.2
 + shellingham==1.5.4
 + sounddevice==0.5.6
 + starlette==1.7.0
 + tokenizers==0.23.2
 + tqdm==4.70.1
 + transformers==5.18.0
 + typer==0.27.2
 + typing-extensions==4.16.0
 + typing-inspection==0.4.4
 + urllib3==2.8.0
 + uvicorn==0.54.0
 + websockets==17.1

モデルをダウンロード

ここでは、imajev-4Bをダウンロードする。

まず、ベースモデルのQwen3.5-4Bをダウンロードする。

python scripts/download_model.py --model 4b

以下のようにダウンロードが開始される。

Downloading Qwen/Qwen3.5-4B@851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a: 8.70 GiB
Downloading bytes:                                                          |  0.00B            Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.                                  | 0/12 [00:00<?, ?it/s]
Fetching 12 files: 100%|████████████████████████████████████████| 12/12 [04:10<00:00, 20.90s/it]
Download complete: █████████████████████████████████████████████████████████| 8.07GB, 14.7MB/s  /Users/{username}/Documents/GitHub/imajev/.cache/huggingface/hub/models--Qwen--Qwen3.5-4B/snapshots/851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a
Download complete: █████████████████████████████████████████████████████████| 8.07GB, 14.7MB/s  
Reconstruction complete: 100%|█████████████████████████████████████| 9.34GB / 9.34GB, 87.3MB/s  

次に、imajev-4bのアダプタと確率校正用ファイルなどをダウンロードする。

hf download mohit67890/imajev-4b --local-dir adapters/imajev-4b

以下のようにダウンロードが開始される。

int: A new version of huggingface_hub (2.1.1) is available! You are using version 1.33.0.
Hint: The `hf-cli` skill is not installed. Run `hf skills add -g` to teach your AI agents how touse the `hf` CLI.
Downloading bytes:                                                          |  0.00B            Still waiting to acquire lock on /Users/{username}/Documents/GitHub/imajev/adapters/imajev-4b/.cache/huggingface/.gitignore.lock (elapsed: 0.1 seconds)                          | 0/32 [00:00<?, ?it/s]
Still waiting to acquire lock on /Users/{username}/Documents/GitHub/imajev/adapters/imajev-4b/.cache/huggingface/.gitignore.lock (elapsed: 0.1 seconds)
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enablehigher rate limits and faster downloads.
Fetching 32 files: 100%|████████████████████████████████████████| 32/32 [00:33<00:00,  1.06s/it]
Download complete: █████████████████████████████████████████████████████████|  929MB, 15.9MB/s  ✓ Downloadedion complete: 100%|█████████████████████████████████████|  983MB /  983MB, 57.0MB/s  
  path: /Users/{username}/Documents/GitHub/imajev/adapters/imajev-4b
Download complete: █████████████████████████████████████████████████████████|  929MB, 15.9MB/s  
Reconstruction complete: 100%|█████████████████████████████████████|  983MB /  983MB, 57.0MB/s  

全てのダウンロードが完了すればOK。

起動

Apple Silicon搭載Macでは、--backend mlxをつける。

PYTHONPATH=src:scripts python scripts/playground/server.py \
  --backend mlx \
  --model-bundle artifacts/model-qwen4b.json \
  --adapter adapters/imajev-4b/mlx \
  --calibration adapters/imajev-4b/calibration.json \
  --model-name imajev-4b \
  --port 8765

以下のようなメッセージが出ればOK。

backend=mlx model=imajev-4b adapter=adapters/imajev-4b/mlx load_seconds=5.9 readout_codes=256 prompt_layout=standard

ブラウザで、http://localhost:8765/にアクセスして以下のような画面が出ればローカルサーバーの起動成功である。

image.png

動作確認

画像を使って動作確認する。今回は、COCOデータセットから、ノートPC(laptop)の台数を数える問題を解かせる。

Imagesには以下の3枚を1枚ずつアップロードし、同じ質問で個別に実行する。次の画像を試す際は、前の画像を削除して入れ替える。

  • テスト画像1
  • テスト画像2
  • テスト画像3

今回は画像だけで判断するため、Stateには空のJSONオブジェクト {} を入力する。

State
{
}

Questionsは以下のようにする。

Questions
{
  "laptop_count": {
    "type": "choice",
    "instructions": "画像にノートPCは何台ありますか? 外付けモニターは数えないでください。",
    "criteria": {
      "0": null,
      "1": null,
      "2": null,
      "3_or_more": "3台以上"
    }
  }
}
  • confidence はモデルが返す確信度であり、実測した正解率ではない
  • 3_or_more は正確な台数ではなく「3台以上」という分類

以下のように結果が表示される。

image.png

各画像に対する結果を以下の表に示す。
なお、処理時間は画面に表示された処理時間を記載した。

テスト画像 laptop_count confidence 処理時間(ms)
テスト画像1 1 97% 1917
テスト画像2 2 94% 1958
テスト画像3 3_or_more 89% 1822

今回試した3枚では、ノートPCの台数を「1台」「2台」「3台以上」に分類できた。処理時間は今回の実行では約1.8〜2.0秒だった。

まとめ

uvとMLXを使い、MacBook Pro(M4 Pro)でimajev-4bを動かした。今回試した3枚では、ノートPCの台数を指定した選択肢に正しく分類でき、処理時間は約2秒だった。今後は、物体が小さい画像や一部が隠れた画像でも試し、誤答や判断保留の傾向を確認したい。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?