Community画像github.com

clip-box — 画像内の位置を特定する

画像内の対象物を特定します。「合計金額」「赤い四角」「コーヒーマグ」などの参照フレーズから、h2oai/h2o-lightning-4b を用いてバウンディングボックスを取得します。画像の割合、ピクセル座標、キャリブレーションされた信頼度 (P(IoU >= 0.5))、そして回答を検閲する `present` 確率を提供します。

clip-box — 画像内の位置を特定する とは?

`clip-box` は、画像内の対象物の位置を特定する AI エージェントスキルです。参照フレーズ(例:「赤い四角」)からバウンディングボックスを取得し、画像全体に対する割合、ピクセル座標、信頼度スコア(P(IoU >= 0.5))、および対象が存在する確率(`present`)を返します。CLI ツールとして提供され、`h2o-lightning-4b` モデルをバックエンドに使用します。このモデルは確率付きの型付き質問に回答し、散文を生成しません。`box` 質問タイプは、ラベルではなくバウンディングボックスを返すことが特徴です。`present` 確率で回答を検閲することで、対象が画像内に存在しない場合でも誤ったボックスを返さないようにします。また、`--min-present` や `--min-confidence` オプションで閾値を調整可能で、キャリブレーションされた信頼度スコアは実際の IoU とよく一致します。主に対象物、アイコン、図形、単一画像に適しており、密な小さなテキストを含むレシートなどには弱いですが、その場合も信頼度が低くなるため適切に拒否できます。このスキルは、`decision-model` クライアントの `box` 機能への薄いエントリポイントとして動作し、スタンドアロンまたはスロットモードで使用できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rodritimecoder/agent-skills/tree/HEAD/multimodal/clip-box

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

clip-box — この画像の中でどこにあるのか?

これは 「Xはどこにある」 への玄関口です。実装は decision-model にあります。同じクライアントが bool、choice、score、box に回答し、clip-box はこの語彙をルーティング可能に保つ薄いエントリポイントであり、別のモデルが判断スロットを占有する場合にスタンドアロンのシムを指し示すことができます。

clip-box --image scene.png --target "赤い四角"          # スロットシム :8083
clip-box --image scene.png --target "赤い四角" --port 8761   # スタンドアロンシム
decision-model box --image scene.png --target "赤い四角"     # 同じこと

h2o-lightning は 4B の 判断 モデルです。確率付きの型付き質問に回答し、散文を生成しません。その box 質問はラベルの代わりに矩形を返し、矩形よりも重要な3つの数値を返します。

フィールド意味
box画像左上からの割合としての left、top、right、bottom
confidenceP(IoU ≥ 0.5) — 矩形が描かれた画像に対する判断読み出し。モデルが語る数字ではありません
presentP(対象が少なくとも見える) — 未加工画像に対する別の読み出し
found何らかのボックスが生成されたかどうか。見つからなかった場合は画像全体と信頼度0を返す

found ではなく present で検閲してください。 青い自転車が一枚もないシーンで質問すると、モデルは自信ありげに別の何かにボックスを描き、found: true、present: 0.111 を返します。present が「ない」と伝えるものです。

使い方

# APIを起動(box質問は有効、スロットフロントポートは :8083)
h2o-serve --port 8083          # CPU, Q8_0
h2o-serve --backend vulkan     # AMD GPU: 固定されたVulkanバックエンドを一度ビルド
h2o-serve --status
h2o-serve --stop

# 質問
clip-box --image scene.png --target "赤い四角"
# ACCEPT  box=(0.247, 0.247) -> (0.753, 0.753)  confidence=0.651  present=0.885

clip-box --image scene.png --target "青い自転車"   # 存在しない場合 -> 終了コード2
clip-box --image receipt.png --target "合計金額" # 信頼度0.163 < 0.30 -> 拒否
clip-box --image scene.png --target "赤い四角" --json --crop /tmp/square.png

--json は accepted、reason、box、pixels(実際の画像サイズから計算)、confidence、present、found、回答した model を返します。終了コード0は受理、2は拒否、1はリクエストエラーです。

--min-present(デフォルト0.5)と --min-confidence(デフォルト0.30)で閾値を設定します。両者は環境変数(BOX_MIN_PRESENT、BOX_MIN_CONFIDENCE)としても使用できます。--crop は受理されたボックスを書き出します。Pillow が必要です。

能力であり、仮定ではない

box は シム 機能であり、プロトコル機能ではありません。llama.cpp 自身の /v1/systemone は choice、score、noul のみを受け付けます。判断スロットは5つの候補間でローテーションするため、以下のようになります。

decision-model caps
# model       /models/h2o-lightning-4b-Q4_K_M.gguf
# slot        :8083  (box on :8083)
# primitives  bool, choice, score, box

占有者が h2o でない場合、caps は box を表示せず、box は提供されたモデル名を添えて拒否します。エンドポイントが回答できない質問を投稿する代わりに。

実際に得意なもの

このワークステーション(Q8_0、CPUバックエンド)で測定した、既知の真値を持つ合成シーン:

ターゲットIoUconfidencepresent
赤い四角、512×512中央0.9760.6510.885
赤い長方形、512×1024縦長0.8770.6690.897
赤い長方形、1024×512横長0.8480.7220.895
雑然としたシーンの中の小さな赤い四角0.6030.3590.896
「青い自転車」(不在)—0.1880.111
レシートの「合計金額」ミス(合計の下にボックス)0.1440.899

顕著なオブジェクト、アイコン、図形、単一画像:良好、アスペクト比は正しく処理されます。レシート上の密な小さなテキスト:ミスしますが、低い信頼度がそれを示しています。レシートの金額については、合計近傍をクロップするか、判断APIの choice 質問(「TOTALは何ですか? subtotal/total/tax」)を使用してください。これは同じ画像で正しくスコアリングされました。

このスキルが吸収するために存在する落とし穴

Pillow。 シムはタイトネス読み出しの前にボックスを描画し、ImportError で None を返すため、PillowがないPythonはすべてのボックスに confidence: 0.0 と回答します。h2o-serve は自身のvenvを構築し、インポートをチェックします。

ファイル

パス役割
scripts/clip_box.pyエントリポイント — --port/--host をリフトし、decision-model box に委譲
../hardware/decision-model/scripts/decision_model.pyクライアント: 1つのbox質問、2つのゲート、クロップ、終了コード
../hardware/decision-model/scripts/h2o_serve.pyランチャー: ハッシュによる固定ブートストラップ、Pillow安全なvenv、CPU/CUDA/Vulkanバックエンド、--status、--stop

状態は ~/.cache/h2o_lightning_gguf(重み+固定バックエンド)と ~/.local/share/h2o-lightning/venv に存在します。これらの2つのパスの外部には一切触れません。

プロトコルノート

  • このリリースでは、シムの box.mode は generate です。Qwenの bbox_2d 規則(0–1000、xが先)で制約付き生成を行い、パースしてクランプします。edges/hybrid はエッジ読み出しで訓練されたモデルが必要です。このリリースでは generate を維持してください。
  • confidence は独自の温度を持つ確率であり、フィッティングされるまでは 1.0 です。そのため控えめです。大きな正方形に対するほぼ完璧なボックスでも0.65と読み取り、0.95ではありません。
  • デフォルトで1リクエストあたり1画像。シムは images: で最大8つまで受け付け、バックエンドは --image-max-tokens 1024 で起動されます。
  • 同じサーバーの判断側は、テキストと画像に対する choice / noul / score に /v1/systemone で回答します。テキストに対するキャリブレーションされた判断には、pplx-decider(判断指数60.06、こちらは51.38)を推奨します。このモデルはジオメトリに使用し、ルーティングには使用しないでください。

関連スキル