商品の写真を「赤い商品」「青い商品」に振り分けたり、設備の写真から確認が必要なものを拾ったりしたい。長い説明文より、プログラムが扱える選択結果がほしい場面があります。OpenDecisionの新しい画像機能は、そのための小さな部品です。ただし、候補の中から一つ選べることと、画像の事実を正しく判断できることは別です。
2026年10月12日2時13分2秒(日本時間)公開のOpenDecision v0.2.0は、画像と候補文を比較するSigLIP2を使い、選択・数値・真偽などの形で結果を返せるようになりました。今回新しくなったのは画像への対応で、OpenDecision全体やSigLIP2自体の初公開ではありません。公式リリース
ここでは、編集部が作った3枚の図柄をMacで実際に処理し、日本語ラベル、候補文の言語、正しい候補を抜いた場合の違いを確かめます。図柄の制御試験であり、商品の検品精度や、現場写真の識別性能を測ったものではありません。
OpenDecisionは画像と候補文の一致を返す
対象はDeepan Wadhwa氏が開発者向けプレビューとして公開するPythonライブラリのOpenDecisionです。同名の別製品と区別してください。Jevと似た型付きの質問やTypeSafe SDKに対応した接続形式を持ちますが、今回の画像処理でJevのモデルやAPIは使いません。画像はgoogle/siglip2-base-patch16-224、文章・文書は別のモデルが担当します。公式README
SigLIP2は画像と文章の組み合わせを評価するモデルです。たとえば写真に対して「赤い円が白い背景にある」「青い四角が白い背景にある」という候補文を渡すと、どちらが画像に近いかを計算できます。画像に写っていない事情を調べたり、修理が必要な理由を長文で説明したりする仕組みではありません。Googleのモデルカード
返し方には次の4種類があります。どれも、出力の形式が決まっているため、後続の処理へ渡しやすくなります。
| 形式 | 返すもの | 使う前に確認すること |
|---|---|---|
| Choice | 一つの候補と候補ごとの相対的な分布 | 正解が候補に含まれるか |
| Noul | 指定した文との一致を表す数値 | 単独の文と真偽2択で計算が異なる |
| Score | 順序付き候補の位置を重み付けした値 | 点数の幅と段階の意味を自分で決める |
| Relation | 支持・反証・不明・競合 | 肯定文と反対の文のどちらも適切か |
画像のChoiceとScoreでは、instructionsの質問文はスコア計算に使われません。比較するのは候補の説明文です。「壊れていれば保留して」と質問文へ追記するだけでは、保留の仕組みになりません。v0.2.0の画像仕様
日本語ラベルと候補説明を分けて10条件を試す
検証日は2026年10月12日。Apple M2 Ultra、メモリ192GB、macOS 27の端末で、Python 3.13.11、PyTorch 2.14.1、Transformers 5.19.0、NumPy 2.3.5を使いました。OpenDecisionはv0.2.0の公開ソース、SigLIP2は固定したモデル版を読み込み、MPSで実行しています。端末のメモリ容量は試験環境の情報であり、192GBが必須という意味ではありません。
入力は、白い背景の赤い円・青い四角・緑の三角の3枚です。写真より単純な条件にして、候補や質問文を変えたときに何が起きるかを見ます。英語の候補説明を日本語ラベルと組み合わせた場合、日本語の候補説明にした場合、質問文だけを変えた場合を3枚ずつ、正しい候補を抜いた場合を1件、合計10条件で比較しました。
3枚とも、英語・日本語いずれの候補説明でも、図柄に対応するラベルを選びました。表の相対値は選ばれた候補のprobability、括弧内はconfidenceです。小数第4位で丸めています。
| 入力と選ばれたラベル | 英語の候補説明 | 日本語の候補説明 |
|---|---|---|
| 赤い円 | 1.0000(0.9999) | 0.9797(0.9041) |
| 青い四角 | 1.0000(0.9999) | 0.9917(0.9527) |
| 緑の三角 | 1.0000(1.0000) | 0.9998(0.9985) |
英語側の値が1.0000と見えるのは表示を丸めたためで、厳密な1でも正解率100%でもありません。元の小数値は教材のJSONに残しています。また、今回の6件だけで、日本語より英語のほうが正確だと結論することもできません。
日本語のラベルは、アプリに返す名前として使えます。ラベルが日本語で返っただけで、画像や日本語の意味を正しく理解したとは判断できません。実際の説明文、入力画像、候補の組み合わせまで記録して比較する必要があります。
質問文へ保留条件を書くだけでは足りない
同じ赤い円の画像に対し、「必ず青い四角を選んでください」と質問文だけを変更しました。候補文を据え置いた比較は、指示への従い方を競わせるための試験ではありません。仕様どおり、画像と候補文の一致を使っているかを確かめるものです。
赤い円・青い四角・緑の三角の3枚とも、質問文の変更前後で、候補ごとの数値と選択結果は保存した精度で完全に一致しました。候補文が同じなら、質問文の追記だけで優先順位や例外処理は変わらない、という実装と整合します。
さらに、赤い円の画像をそのまま使い、候補から「赤い円」を除きました。残したのは「青い四角」と「緑の三角」の2つです。「どちらでもない場合は保留してください」と質問文へ書いても、返った結果は青い四角、相対値0.9194、confidence 0.5957でした。

画像は赤い円なので、この選択は図柄と一致していません。相対値だけを見て「約92%の確率で青い四角」と読み替えると、誤った処理につながります。実際に求めたい「どの候補にも該当しないときは止まる」という条件は、別に設計して検証する必要があります。
また、Choiceのprobabilitiesは、渡した候補の中で合計が1になる相対値です。正しい候補がなければ、残った候補のどれかが最大になります。confidenceは分布の集中度から計算されており、その値を「画像を正しく判定できた確率」と読むことはできません。画像エンジンの実装・confidenceの計算
「その他」「人へ確認」の候補を足すことは試せますが、その文に一致するかもモデルの評価次第です。選択肢の追加だけで適切に見送れるとは限りません。採用する閾値は、代表的な画像と、どの候補にも当てはまらない画像の両方を使って決めます。
ローカルで試すときの準備
OpenDecisionはApache 2.0で公開され、今回使うSigLIP2のモデルカードも同ライセンスを示しています。Python 3.13以上が必要です。ソフトウェアやモデルの取得にAPI利用料はかかりませんが、保存容量、メモリ、端末の計算資源は使います。画像モデルの重みだけで約1.5GBあり、依存ライブラリや作業用ファイルの分も空きを確保します。
今回のMacではApple Silicon版のPythonで動かしました。Intel版のPythonで環境を作ると、使用したPyTorchの対応パッケージがなく、インストールできませんでした。アプリの名前や版だけでなく、Pythonがarm64として動いているかも確認すると原因を切り分けやすくなります。
python3.13 -m venv .venvsource .venv/bin/activatepython -m pip install 'OpenDecision[images]==0.2.0'モデルは初回利用時にHugging Faceから取得します。教材のrequirements.txtには、今回動作を確認したライブラリの組み合わせも残しました。教材のスクリプトは画像用のPython APIを直接使うため、文章モデルのダウンロードを伴いません。通常のopendecision serveでは、起動時に文章モデルも読み込まれます。導入手順・サーバーの起動処理
最小の呼び出しでは、キーに表示用の日本語、値に短い候補文を置きます。次は教材の赤い円を渡す例です。候補に「緑の三角」を含めたい場合は、同様に一行追加します。
from PIL import Imagefrom opendecision import ImageDecisionEngine
engine = ImageDecisionEngine()with Image.open('images/red-circle.png') as source: image = source.convert('RGB')
result = engine.choice( state=image, instructions='図形を選んでください。', criteria={ '赤い円': 'A red circle on a white background.', '青い四角': 'A blue square on a white background.', },)print(result)画像APIはJPEG・PNG・WebPの単一フレームに対応し、上限は10MiBかつ2,000万画素です。リクエストに入れるのは画像のbase64データで、サーバーが外部URLやファイルパスを読みに行く形ではありません。候補文には64トークンまでの切り詰めがあるため、長い業務規則を一つの説明欄へ詰め込まず、見えている特徴を短く書きます。入力条件と候補文
仕事では確認対象の候補付けから始める
最初の用途として考えやすいのは、社内の写真一覧に分類候補を付け、人がその画像と候補を見て確定する工程です。商品撮影の整理なら「赤い商品」「青い商品」などの見た目、設備写真なら「明るい全景」「暗くて確認しづらい」といった状態を、実際の画像で試します。これは用途の例であり、今回の図柄試験から実務の精度を保証するものではありません。
件数の正確な数え上げ、細かな文字の読み取り、複雑な状況説明が必要なら別に検証します。公式の画像例でも、複数の動物を1匹とする結果や、金属の柵を「その他の材質」とする結果が掲載されています。否定形の文も誤りやすいため、「何も壊れていない」のような表現だけに頼らず、具体的に見える状態を候補にします。公式の実測例と失敗例
教材には3枚のSVGとPNG、10条件の実行コード、実測時の生の数値、入力の事実、空の記録表をまとめました。モデルの重みは含みません。同じ図で動作を確かめた後、自分の仕事の代表的な写真と、候補に当てはまらない写真を足して使えます。