フィジカルAIを自宅PCで動かす|誰でもできるフィジカルAI 第2回:Ollama+Qwen3-VLでVLMを動かし画像から座標を出す

フィジカルAIを自宅PCで動かす|誰でもできるフィジカルAI 第2回:Ollama+Qwen3-VLでVLMを動かし画像から座標を出す

第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分オンライン診断料金一覧

About The Author

Hideki
東京大学発AIスタートアップでロボット開発室室長・画像解析室室長・動画解析室室長を務め、画像認識関連のAI特許を在籍中に3件取得。その後、KDDIグループでプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRIST株式会社の執行役員CTO 兼 VPoEとして、農業の人手不足解決に向けた収穫ロボットの開発組織を統括しています。AI・ハード・エレキ・通信・クラウド・IoTまでを一気通貫で設計できる視点を強みに、性能だけでなく「感動やワクワク体験」までデザインできるロボットの研究を進めています。並行して、AI coordinatorとして企業のAI導入・教育機関のAI授業・地域の技術相談を月額契約で継続伴走しています。

LEAVE A REPLY

*
*
* (公開されません)