第1回では、VLM(画像+言葉→言葉)とVLA(画像+言葉→行動)の違いを整理しました。今回はいよいよ、最新のVLMを手元のPCで実際に動かします。
結論から書きます。最新の画像認識AIを、クラウドも専用機材も使わず、家庭用のPC1台で動かせました。 しかも写真を渡すと、「黄色いマグカップは座標(819, 406)」というように、物体の位置を数値で返してきます。AIの判断をロボットの動作につなぐ——フィジカルAIの一番の入口が、特別な環境なしに自宅で再現できる時代になっています。
私は以前、AGRIST×Microsoftの検証で「画像を渡して角度を出力させ、ロボットを動かす」仕組みを組みました。今回やるのは、その核心部分を家庭のPCでミニチュア再現することです。
この記事では、誰でも同じことを再現できるよう、インストールから座標出力までを順番に書きます。あわせて、手を動かしたからこそ見えた”つまずきポイント”と、フィジカルAIの本質に関わる発見も共有します。読み終えるころには、ただ動かせるだけでなく、「VLMが座標をどう導いているのか」まで分かるはずです。
使った環境は、Windows、RTX 3090(VRAM 24GB)です。
今回のゴール(3つ)
- 最新のVLMを、クラウドではなく手元のPC(RTX 3090)で動かす
- 写真を渡して、日本語で内容を説明させる
- 写真の中の物体の位置を、座標(JSON)で出力させる
3つ目が本題です。これができれば、出力された座標をロボットに渡すだけで、フィジカルAIの入口に立てます。
なぜ Ollama + Qwen3-VL を選んだか
ローカルでLLM/VLMを動かす道具はいくつもあります。Ollama、LM Studio、Jan、GPT4All など。ただ中身はどれも llama.cpp という共通エンジンの「皮」で、動かしているモデルの本体は基本同じです。
その上で今回は Ollama を選びました。理由は、セットアップが一行で済み、画像対応モデルも公式に揃っていて、最短で確実に動かせるからです。Ollamaは以前はコマンド専用でしたが、今はGUIも付き、さらにPythonからも叩けます。GUI・コマンド・Pythonのどれでも同じモデルを動かせます。
モデルは Qwen3-VL の 8B を使います。ここは重要で、ひとつ前の Qwen2.5-VL ではなく、最新の Qwen3-VL です。Qwen3-VLは公式に「2D・3Dの座標グラウンディングを強化し、embodied AI(身体性AI)の基盤になる」と明言しているモデルで、今回やりたい「物体の座標を出す」用途にまさに直結します。サイズは6.1GBで、3090なら快適に動きます。
最新を選ぶのは大事です。ローカルAIは進化が速く、半年前のモデルを案内されても損をします。
セットアップ(インストールとモデル取得)
まず https://ollama.com/download からWindows版のOllamaを入れます。Qwen3-VLは Ollama 0.12.7 以上が必要なので、入れたら最新版にしておきます。
私は今回、モデルの取得から最初の動作確認まで、Ollamaのチャット画面(GUI)でやりました。アプリを起動して「New Chat」を開き、モデル選択の「Find model…」に qwen3-vl:8b と入力し、出てきた候補(ダウンロードアイコンが付いたローカル版)をクリックするだけです。約6GBのダウンロードが終われば準備完了。:cloud が付いたクラウド版ではなくローカル版を選ぶのがポイントで、これなら推論はすべて手元のPCで完結し、画像も外に出ません。
コマンドラインが好みなら、同じ取得を公式CLIリファレンス記載の ollama pull でもできます。私はGUIで取得しましたが、公式ドキュメントには次の形が載っています。
ollama pull qwen3-vl:8b
これで準備完了です。
画像を説明させる(VLMの基本動作)


まず、机の上を撮った写真を1枚、チャット画面にドラッグ&ドロップして説明させてみます。
返ってきた説明は、ノートPC・白いキーボード・黄色いマグカップ・ケーブル類を正確に挙げ、しかもPCに貼られたステッカーの文字(Intel Core i9、NVIDIA GeForce RTX、144Hz)まで読み取っていました。OCRも効いているわけです。これが「画像+言葉→言葉」というVLMの基本動作です。
コマンドで同じことをする場合は、公式ドキュメントの例に従って、プロンプトの中に画像のパスを書けば読み込まれます(公式CLIリファレンスの例:ollama run qwen3-vl:8b "この画像を説明して 画像のフルパス")。
本題:画像から座標をJSONで出させる
ここからが本番です。写真の黄色いマグカップの位置を、座標で答えさせます。
最初はチャット画面に同じ指示を投げて、座標がちゃんと返ることを確認しました。そのうえで、推論にかかる時間や思考の中身まで詳しく見たかったので、ターミナル(PowerShell)から --verbose を付けて実行しました。PowerShellでは、プロンプト全体をシングルクォートで囲むのが確実です(理由は後述)。
ollama run qwen3-vl:8b --verbose '黄色いマグカップの位置を {"object":"黄色いマグカップ","x":数値,"y":数値} のJSONだけで答えて C:\Users\hidek\Downloads\IMG_2696.jpg'
返ってきたのがこれです。
{"object": "黄色いマグカップ", "x": 819, "y": 406}
指定したJSON形式そのまま、余計な説明なし。これはロボットにそのまま渡せる形です。「画像をVLMに渡す → 物体の座標が返ってくる」という、私がMicrosoftの検証で組んだ角度出力型のミニチュアが、自宅のPC1台で完成したわけです。座標の精度も、何度か試すと x は820〜870、y は360〜406あたりに安定して収束し、実際のマグの位置とよく合っていました。
ここまでは順調です。問題はこの先で踏んだ3つの落とし穴です。
詰まりポイント1:PowerShellのクォートでハマった
最初、プロンプトをダブルクォートで囲み、中の引用符を \" でエスケープして実行したら、こんなエラーで弾かれました。
Couldn't process file: open \:\黄色いマグカップ\... : The filename, directory name, or volume label syntax is incorrect.
原因はモデルではなく、PowerShellのクォート処理です。\" のエスケープが効かず、JSONの中身と画像パスが1つのファイル名として誤解釈されていました。
解決は単純で、プロンプト全体をシングルクォート '...' で囲むこと。シングルクォート内は文字どおり扱われるので、中のダブルクォートをエスケープせずに書けます。これで一発で通りました。地味ですが、同じところで詰まる人は多いはずです。
詰まりポイント2:会話の文脈を引きずって、前の答えを使い回す
GUIで同じチャットを続けたまま座標を聞き直したら、毎回まったく同じ座標 (853, 207) が返ってきました。一見安定しているようですが、これは罠です。
新しいチャットで文脈をリセットしてから同じ写真を渡すと、座標は (825, 370) に変わりました。こちらの方がマグの実際の位置に合っています。
つまり同じ会話内では、モデルは画像を見直して計算し直さず、直前のターンで返した値を使い回していたのです。VLMで安定した結果を取りたいなら、1回ごとに会話をリセットするか、コマンドを1発ずつ独立に実行する必要があります。
詰まりポイント3:速くしたくて思考をオフにしようとしたら、効かなかった
次に気になったのは速度です。1回の座標出力に12〜33秒かかっていました。理由ははっきりしていて、Qwen3-VLは答える前に毎回「考え込む」思考モデルだからです。--verbose で中を見ると、答えの前に長い思考の文章を生成していて、その分だけ待たされていました。
ロボットに繋いでリアルタイムに使うことを考えると、この待ち時間は短くしたい。そこで、思考をオフにして速くできないか試しました。Ollama公式ドキュメントには、思考オフの正規コマンドとして --think=false が明記されています。そこでこう実行しました。
ollama run qwen3-vl:8b --think=false --verbose '黄色いマグカップの位置を {"object":"黄色いマグカップ","x":数値,"y":数値} のJSONだけで答えて C:\Users\hidek\Downloads\IMG_2696.jpg'
ところが、フラグを付けても思考は普通に走りました。GUIで /no_think を付けても同じく無効。調べると、これはQwen3-VL固有の既知バグでした。Ollama公式リポジトリに「qwen3-vl:8b はテンプレートに思考オフの制御が無く、think:false が無視される」という未解決Issue(#14798 ほか)が複数立っています。テキスト版の qwen3:8b では効くのに、ビジョン版では効かない。
つまり現状、qwen3-vl:8b では思考をオフにできず、速度はその時の思考の長さ次第でブレます。公式に存在する正しいコマンドでも、最新モデルではこうした「実装の追いつき待ち」に普通に出くわす——これも、手を動かさないと分からない現場のリアルです。
一番の発見:座標は「検出」ではなく「推論」だった
--verbose で思考の中身まで表示させると、もっとも本質的なことが見えました。モデルは座標をピクセル単位で測っているのではなく、状況を推論して位置を導いているのです。
思考トレースにはこう書かれていました。「ノートPCの右にマグがあるから、xは大きいはず」「キーボードより上にあるから、yはこのあたり」。レイアウトと物体の関係から、筋道立てて位置を割り出している。汎用のモデルがここまで論理的に座標へたどり着けること自体、かなり高度です。
ただし、これは”測定”ではなく”推論”です。そして、ここが第1回の主張に直結します。ミリ単位の正確さが要る現場では、推論で導いた座標だけに頼らず、YOLOのような検出器や、実演から動作を学習したVLAを組み合わせる。私がMicrosoftの検証で「入力設計と前処理が精度に効く」と書いたのも、この推論を安定させ、現場で使える精度へ持っていくための工夫でした。
座標は出る。実用域の精度も出る。そのうえで「VLMがどう位置を導いているか」の中身まで理解できたことが、今回の一番の収穫です。この理解があるかないかで、次に何を足せば現場で使えるかの判断が変わります。
まとめ
- 最新VLMの Qwen3-VL(8B)は、Ollamaで一行入れれば、RTX 3090の自宅PC上だけで動く。クラウド不要・画像も外に出ない。
- 写真を渡せば、物体の位置を実用精度の座標JSONで返す。これは「画像→座標出力」型フィジカルAIのローカル版そのもの。
- ただし現場のクセが3つ。PowerShellはシングルクォートで囲む/会話を切らないと前の答えを使い回す/思考オフは公式コマンドでもqwen3-vlではまだ効かない(既知バグ #14798)。
- 最大の学びは、VLMは座標を「測定」しているのではなく「推論」で導いていること。実用精度は出る。そのうえで、ミリ単位が要る用途では検出器やVLAを組み合わせる——その判断軸が手に入る。
第3回では、いよいよ座標を経由しないVLA本体を、シミュレーション上で動かします。今回と同じく、私も手を動かしながら、詰まった所も含めて正直に書きます。
「自社のロボットやAIで、どこまでが自前のPCで現実的に作れるのか、一緒に切り分けたい」という方は、無料の30分オンライン診断で交通整理できます。実務でフィジカルAIを現場実装した経験から、率直にお話しします。
この記事の技術を、現場で実装したい方へ
AI×IoTの技術顧問として、月額契約で継続伴走しています。PoC設計・技術判断・組織設計・ベンダー管理・実装支援まで、現場で動くまで一緒に進めます。受託開発(請負)ではありません。
→ AI技術顧問サービスの詳細 / 無料30分オンライン診断 / 料金一覧






LEAVE A REPLY