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 |
confidence | P(IoU ≥ 0.5) — 矩形が描かれた画像に対する判断読み出し。モデルが語る数字ではありません |
present | P(対象が少なくとも見える) — 未加工画像に対する別の読み出し |
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バックエンド)で測定した、既知の真値を持つ合成シーン:
| ターゲット | IoU | confidence | present |
|---|---|---|---|
| 赤い四角、512×512中央 | 0.976 | 0.651 | 0.885 |
| 赤い長方形、512×1024縦長 | 0.877 | 0.669 | 0.897 |
| 赤い長方形、1024×512横長 | 0.848 | 0.722 | 0.895 |
| 雑然としたシーンの中の小さな赤い四角 | 0.603 | 0.359 | 0.896 |
| 「青い自転車」(不在) | — | 0.188 | 0.111 |
| レシートの「合計金額」 | ミス(合計の下にボックス) | 0.144 | 0.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)を推奨します。このモデルはジオメトリに使用し、ルーティングには使用しないでください。