> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/advanced-blocks/vlm-as-classifier.md).

# 分類器としてのVLM

## v2

Visual Language Model（VLM）および大規模言語モデル（LLM）からJSON文字列を解析し、クラス予測を抽出してクラス名をクラスIDにマッピングし、単一クラス形式とマルチラベル形式の両方を処理し、VLM/LLMのテキスト出力をワークフロー互換の分類結果に変換することで、標準化された分類予測形式に変換します。

## このブロックの仕組み

このブロックは、分類予測を含むVLM/LLMのテキスト出力を標準化された分類予測形式に変換します。このブロックは次の処理を行います:

1. 画像と、JSON形式の分類結果を含むVLM出力文字列を受け取ります
2. VLM出力からJSONコンテンツを解析します:

   **Markdownで囲まれたJSONを処理します:**

   * Markdownコードブロック内に囲まれたJSONを検索します（`json ...` )
   * この形式はLLM/VLMの応答で一般的です
   * 複数のMarkdown JSONブロックが見つかった場合は、最初のブロックのみを解析します
   * Markdownタグ内からJSONコンテンツを抽出します

   **生のJSON文字列を処理します:**

   * Markdownブロックが見つからない場合は、文字列全体をJSONとして解析しようとします
   * 標準的なJSON形式の文字列をサポートします
3. 分類形式を検出し、次のように解析します:

   **単一クラス分類形式:**

   * "class\_name" と "confidence" フィールドを含む形式を検出します
   * 予測されたクラス名と信頼度スコアを抽出します
   * 単一のトップクラスを持つ分類予測を作成します
   * 提供されたクラス一覧を使ってクラス名をクラスIDにマッピングします

   **マルチラベル分類形式:**

   * "predicted\_classes" 配列を含む形式を検出します
   * 信頼度スコア付きの予測クラスをすべて抽出します
   * 重複するクラスは最大の信頼度を採用して処理します
   * 提供されたクラス一覧を使ってすべてのクラス名をクラスIDにマッピングします
4. クラス名からクラスIDへの対応付けを作成します:
   * 提供されたクラス一覧を使ってインデックスのマッピング（class\_name → class\_id）を作成します
   * 順序に従ってクラスをマッピングします（1つ目のクラス = ID 0、2つ目 = ID 1、など）
   * 提供されたリストにないクラスは class\_id = -1 になります
5. 信頼度スコアを正規化します:
   * 信頼度値を有効範囲 \[0.0, 1.0] にスケーリングします
   * 範囲外の値は 0.0 または 1.0 にクランプします
6. 分類予測を構築します:
   * 入力画像から画像サイズ（幅、高さ）を含めます
   * 単一クラスの場合: "top" クラス、信頼度、predictions 配列を含めます
   * マルチラベルの場合: "predicted\_classes" リストと predictions 辞書を含めます
   * 追跡用に inference\_id と parent\_id を含めます
   * 標準の分類予測形式で予測をフォーマットします
7. エラーを処理します:
   * を設定します `error_status` JSON解析に失敗した場合にTrueにします
   * を設定します `error_status` 分類形式を判定できない場合は True にします
   * エラーが発生した場合、予測としてNoneを返します
   * 追跡のために常に inference\_id を含めます
8. 分類予測を返します:
   * 出力 `predictions` 標準の分類形式で（分類ブロックと互換）
   * 出力 `error_status` 解析成功/失敗を示す
   * 出力 `inference_id` 追跡と系譜管理のための特定の型付きで

このブロックは、VLM/LLMのテキストベースのJSON出力を標準化された分類予測に変換することで、VLM/LLMを分類に利用できるようにし、それらを他の分類モデル出力と同様にワークフローで使用できるようにします。

## 一般的な使用例

* **VLMベース分類**: VLMの出力を分類予測に解析することで、画像分類にVisual Language Modelを使用します（例: VLMで画像を分類する、GPT-4Vを分類に使う、Claude Visionの分類結果を解析する）。これによりVLM分類ワークフローを実現します
* **LLM分類解析**: 分類結果を含むLLMのテキスト出力を標準形式に解析します（例: GPTの分類出力を解析する、LLMの予測を分類形式に変換する、分類にLLMを使う）。これによりLLM分類ワークフローを実現します
* **テキストから分類への変換**: モデルからのテキストベースの分類出力を、ワークフロー互換の分類予測に変換します（例: テキスト予測を分類形式に変換する、テキストベースの分類を解析する、モデル出力を分類に変換する）。これによりテキストから分類へのワークフローを実現します
* **複数形式の分類サポート**: VLM/LLM出力の単一クラス形式とマルチラベル形式の両方を処理します（例: 単一ラベルのVLM分類をサポートする、マルチラベルのVLM分類をサポートする、異なる分類形式を処理する）。これにより柔軟な分類ワークフローを実現します
* **VLM統合**: VLM出力を分類ワークフローに統合します（例: 分類パイプラインでVLMを使う、VLM予測を分類ブロックと統合する、VLMと従来の分類を組み合わせる）。これによりVLM統合ワークフローを実現します
* **柔軟な分類ソース**: テキスト/JSONを出力するさまざまなモデル種別からの分類を可能にします（例: どのテキスト出力モデルでも分類に使う、モデル出力を分類に変換する、さまざまな分類形式を解析する）。これにより柔軟な分類ワークフローを実現します

## 他のブロックへの接続

このブロックは画像とVLM出力を受け取り、分類予測を生成します:

* **VLM/LLMブロックの後** 分類出力を標準形式に解析するために（例: VLM出力を分類に、LLM出力を分類に、モデル出力を解析する）。これによりVLMから分類へのワークフローを実現します
* **分類ベースのブロックの前に** 解析済みの分類を使用するために（例: ワークフローで解析済み分類を使う、下流ブロックに分類を渡す、分類ブロックでVLM分類を使う）。これにより分類からワークフローへのワークフローを実現します
* **フィルタリングブロックの前** VLM分類に基づいてフィルタリングするために（例: VLM分類結果でフィルタリングする、解析済み分類をフィルタに使う、VLM予測にフィルタを適用する）。これにより分類からフィルタへのワークフローを実現します
* **分析ブロックの前で** VLM分類結果を分析するために（例: VLM分類を分析する、解析済み分類に対して分析を行う、VLM分類メトリクスを追跡する）。これにより分類分析ワークフローを実現します
* **可視化ブロックの前** VLM分類結果を表示するために（例: VLM分類を可視化する、解析済み分類予測を表示する、VLM分類出力を表示する）。これにより分類可視化ワークフローを実現します
* **ワークフロー出力において** VLM分類を最終出力として提供するために（例: VLM分類出力、解析済み分類結果、VLMベースの分類出力）。これにより分類出力ワークフローを実現します

## バージョン差分

このバージョン（v2）は、v1に対して以下の改善を含みます:

* **改善された型システム**: `inference_id` 出力は今では `INFERENCE_ID_KIND` generic の代わりに `STRING_KIND`、ワークフローの型システムにおける inference\_id 値の型安全性と意味の明確さを向上させます

## 要件

このブロックは、メタデータとサイズ情報のための画像入力と、JSON分類データを含むVLM出力文字列を必要とします。JSONは生のJSONでも、Markdownのコードブロック（`json ...` ）で囲まれたものでもかまいません。このブロックは2つのJSON形式をサポートします: 単一クラス（"class\_name" と "confidence" フィールド付き）とマルチラベル（"predicted\_classes" 配列付き）。 `classes` parameter には、class\_id のマッピングを生成するためにモデルが使用するすべてのクラス名のリストを含める必要があります。クラスはインデックス順にIDへマッピングされます（1つ目のクラス = 0、2つ目 = 1、など）。リストにないクラスは class\_id = -1 になります。信頼度スコアは \[0.0, 1.0] の範囲に正規化されます。このブロックは、標準形式の分類予測（分類ブロックと互換）、error\_status（boolean）、および追跡用の inference\_id（INFERENCE\_ID\_KIND）を出力します。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/vlm_as_classifier@v2` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**    | **型**       | **説明**                                                                                                                                                                                                      | 参照 |
| --------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`    | `str`       | このステップの一意の識別子を入力してください。                                                                                                                                                                                     | ❌  |
| `classes` | `List[str]` | 分類モデルで使用されるすべてのクラス名を、順序どおりに並べたリスト。クラス名（VLM出力から）とクラスID（分類形式用）の対応を生成するために必要です。クラスはインデックス順にIDへマッピングされます: 1つ目のクラス = ID 0、2つ目 = ID 1、など。VLM出力のうちこのリストにないクラスは class\_id = -1 になります。VLMに分類を依頼したクラスと一致している必要があります.. | ✅  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `分類器としてのVLM` のバージョン `v2` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)): VLM予測の生成に使用された入力画像。分類予測のために画像サイズ（幅、高さ）とメタデータ（parent\_id）を抽出するために使用されます。整合性を保つため、VLM/LLMブロックに与えたのと同じ画像をここで使用してください..
  * `vlm_output` ([*`language_model_output`*](/workflows/ja/gaido/developer-guide/kinds/language-model-output.md)): 分類予測をJSON形式で含むVLMまたはLLMブロックからの文字列出力。生のJSON文字列（例: '{"class\_name": "dog", "confidence": 0.95}'）でも、Markdownのコードブロックで囲まれたJSON（例: `json {...}` ）でもかまいません。2つの形式をサポートします: 単一クラス（'class\_name' と 'confidence' フィールド付き）またはマルチラベル（'predicted\_classes' 配列付き）。複数のMarkdownブロックがある場合、最初のものだけが解析されます..
  * `classes` ([*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)): 分類モデルで使用されるすべてのクラス名を、順序どおりに並べたリスト。クラス名（VLM出力から）とクラスID（分類形式用）の対応を生成するために必要です。クラスはインデックス順にIDへマッピングされます: 1つ目のクラス = ID 0、2つ目 = ID 1、など。VLM出力のうちこのリストにないクラスは class\_id = -1 になります。VLMに分類を依頼したクラスと一致している必要があります..
* 出力
  * `error_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `predictions` ([`classification_prediction`](/workflows/ja/gaido/developer-guide/kinds/classification-prediction.md)): 分類器からの予測。
  * `inference_id` ([`inference_id`](/workflows/ja/gaido/developer-guide/kinds/inference-id.md)): Inferenceの識別子。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/vlm_as_classifier@v2",
	    "image": "$inputs.image",
	    "vlm_output": "$steps.lmm.output",
	    "classes": [
	        "$steps.lmm.classes",
	        "$inputs.classes",
	        [
	            "dog",
	            "cat",
	            "bird"
	        ],
	        [
	            "class_a",
	            "class_b"
	        ]
	    ]
	}
```

</details>

## v1

Visual Language Model（VLM）および大規模言語モデル（LLM）からJSON文字列を解析し、クラス予測を抽出してクラス名をクラスIDにマッピングし、単一クラス形式とマルチラベル形式の両方を処理し、VLM/LLMのテキスト出力をワークフロー互換の分類結果に変換することで、標準化された分類予測形式に変換します。

## このブロックの仕組み

このブロックは、分類予測を含むVLM/LLMのテキスト出力を標準化された分類予測形式に変換します。このブロックは次の処理を行います:

1. 画像と、JSON形式の分類結果を含むVLM出力文字列を受け取ります
2. VLM出力からJSONコンテンツを解析します:

   **Markdownで囲まれたJSONを処理します:**

   * Markdownコードブロック内に囲まれたJSONを検索します（`json ...` )
   * この形式はLLM/VLMの応答で一般的です
   * 複数のMarkdown JSONブロックが見つかった場合は、最初のブロックのみを解析します
   * Markdownタグ内からJSONコンテンツを抽出します

   **生のJSON文字列を処理します:**

   * Markdownブロックが見つからない場合は、文字列全体をJSONとして解析しようとします
   * 標準的なJSON形式の文字列をサポートします
3. 分類形式を検出し、次のように解析します:

   **単一クラス分類形式:**

   * "class\_name" と "confidence" フィールドを含む形式を検出します
   * 予測されたクラス名と信頼度スコアを抽出します
   * 単一のトップクラスを持つ分類予測を作成します
   * 提供されたクラス一覧を使ってクラス名をクラスIDにマッピングします

   **マルチラベル分類形式:**

   * "predicted\_classes" 配列を含む形式を検出します
   * 信頼度スコア付きの予測クラスをすべて抽出します
   * 重複するクラスは最大の信頼度を採用して処理します
   * 提供されたクラス一覧を使ってすべてのクラス名をクラスIDにマッピングします
4. クラス名からクラスIDへの対応付けを作成します:
   * 提供されたクラス一覧を使ってインデックスのマッピング（class\_name → class\_id）を作成します
   * 順序に従ってクラスをマッピングします（1つ目のクラス = ID 0、2つ目 = ID 1、など）
   * 提供されたリストにないクラスは class\_id = -1 になります
5. 信頼度スコアを正規化します:
   * 信頼度値を有効範囲 \[0.0, 1.0] にスケーリングします
   * 範囲外の値は 0.0 または 1.0 にクランプします
6. 分類予測を構築します:
   * 入力画像から画像サイズ（幅、高さ）を含めます
   * 単一クラスの場合: "top" クラス、信頼度、predictions 配列を含めます
   * マルチラベルの場合: "predicted\_classes" リストと predictions 辞書を含めます
   * 追跡用に inference\_id と parent\_id を含めます
   * 標準の分類予測形式で予測をフォーマットします
7. エラーを処理します:
   * を設定します `error_status` JSON解析に失敗した場合にTrueにします
   * を設定します `error_status` 分類形式を判定できない場合は True にします
   * エラーが発生した場合、予測としてNoneを返します
   * 追跡のために常に inference\_id を含めます
8. 分類予測を返します:
   * 出力 `predictions` 標準の分類形式で（分類ブロックと互換）
   * 出力 `error_status` 解析成功/失敗を示す
   * 出力 `inference_id` 追跡と来歴管理のため

このブロックは、VLM/LLMのテキストベースのJSON出力を標準化された分類予測に変換することで、VLM/LLMを分類に利用できるようにし、それらを他の分類モデル出力と同様にワークフローで使用できるようにします。

## 一般的な使用例

* **VLMベース分類**: VLMの出力を分類予測に解析することで、画像分類にVisual Language Modelを使用します（例: VLMで画像を分類する、GPT-4Vを分類に使う、Claude Visionの分類結果を解析する）。これによりVLM分類ワークフローを実現します
* **LLM分類解析**: 分類結果を含むLLMのテキスト出力を標準形式に解析します（例: GPTの分類出力を解析する、LLMの予測を分類形式に変換する、分類にLLMを使う）。これによりLLM分類ワークフローを実現します
* **テキストから分類への変換**: モデルからのテキストベースの分類出力を、ワークフロー互換の分類予測に変換します（例: テキスト予測を分類形式に変換する、テキストベースの分類を解析する、モデル出力を分類に変換する）。これによりテキストから分類へのワークフローを実現します
* **複数形式の分類サポート**: VLM/LLM出力の単一クラス形式とマルチラベル形式の両方を処理します（例: 単一ラベルのVLM分類をサポートする、マルチラベルのVLM分類をサポートする、異なる分類形式を処理する）。これにより柔軟な分類ワークフローを実現します
* **VLM統合**: VLM出力を分類ワークフローに統合します（例: 分類パイプラインでVLMを使う、VLM予測を分類ブロックと統合する、VLMと従来の分類を組み合わせる）。これによりVLM統合ワークフローを実現します
* **柔軟な分類ソース**: テキスト/JSONを出力するさまざまなモデル種別からの分類を可能にします（例: どのテキスト出力モデルでも分類に使う、モデル出力を分類に変換する、さまざまな分類形式を解析する）。これにより柔軟な分類ワークフローを実現します

## 他のブロックへの接続

このブロックは画像とVLM出力を受け取り、分類予測を生成します:

* **VLM/LLMブロックの後** 分類出力を標準形式に解析するために（例: VLM出力を分類に、LLM出力を分類に、モデル出力を解析する）。これによりVLMから分類へのワークフローを実現します
* **分類ベースのブロックの前に** 解析済みの分類を使用するために（例: ワークフローで解析済み分類を使う、下流ブロックに分類を渡す、分類ブロックでVLM分類を使う）。これにより分類からワークフローへのワークフローを実現します
* **フィルタリングブロックの前** VLM分類に基づいてフィルタリングするために（例: VLM分類結果でフィルタリングする、解析済み分類をフィルタに使う、VLM予測にフィルタを適用する）。これにより分類からフィルタへのワークフローを実現します
* **分析ブロックの前で** VLM分類結果を分析するために（例: VLM分類を分析する、解析済み分類に対して分析を行う、VLM分類メトリクスを追跡する）。これにより分類分析ワークフローを実現します
* **可視化ブロックの前** VLM分類結果を表示するために（例: VLM分類を可視化する、解析済み分類予測を表示する、VLM分類出力を表示する）。これにより分類可視化ワークフローを実現します
* **ワークフロー出力において** VLM分類を最終出力として提供するために（例: VLM分類出力、解析済み分類結果、VLMベースの分類出力）。これにより分類出力ワークフローを実現します

## 要件

このブロックは、メタデータとサイズ情報のための画像入力と、JSON分類データを含むVLM出力文字列を必要とします。JSONは生のJSONでも、Markdownのコードブロック（`json ...` ）で囲まれたものでもかまいません。このブロックは2つのJSON形式をサポートします: 単一クラス（"class\_name" と "confidence" フィールド付き）とマルチラベル（"predicted\_classes" 配列付き）。 `classes` parameter には、class\_id のマッピングを生成するためにモデルが使用するすべてのクラス名のリストを含める必要があります。クラスはインデックス順にIDへマッピングされます（1つ目のクラス = 0、2つ目 = 1、など）。リストにないクラスは class\_id = -1 になります。信頼度スコアは \[0.0, 1.0] の範囲に正規化されます。このブロックは、標準形式の分類予測（分類ブロックと互換）、error\_status（boolean）、および追跡用の inference\_id（string）を出力します。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/vlm_as_classifier@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**    | **型**       | **説明**                                                                                                                                                                                                      | 参照 |
| --------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`    | `str`       | このステップの一意の識別子を入力してください。                                                                                                                                                                                     | ❌  |
| `classes` | `List[str]` | 分類モデルで使用されるすべてのクラス名を、順序どおりに並べたリスト。クラス名（VLM出力から）とクラスID（分類形式用）の対応を生成するために必要です。クラスはインデックス順にIDへマッピングされます: 1つ目のクラス = ID 0、2つ目 = ID 1、など。VLM出力のうちこのリストにないクラスは class\_id = -1 になります。VLMに分類を依頼したクラスと一致している必要があります.. | ✅  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `分類器としてのVLM` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)): VLM予測の生成に使用された入力画像。分類予測のために画像サイズ（幅、高さ）とメタデータ（parent\_id）を抽出するために使用されます。整合性を保つため、VLM/LLMブロックに与えたのと同じ画像をここで使用してください..
  * `vlm_output` ([*`language_model_output`*](/workflows/ja/gaido/developer-guide/kinds/language-model-output.md)): 分類予測をJSON形式で含むVLMまたはLLMブロックからの文字列出力。生のJSON文字列（例: '{"class\_name": "dog", "confidence": 0.95}'）でも、Markdownのコードブロックで囲まれたJSON（例: `json {...}` ）でもかまいません。2つの形式をサポートします: 単一クラス（'class\_name' と 'confidence' フィールド付き）またはマルチラベル（'predicted\_classes' 配列付き）。複数のMarkdownブロックがある場合、最初のものだけが解析されます..
  * `classes` ([*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)): 分類モデルで使用されるすべてのクラス名を、順序どおりに並べたリスト。クラス名（VLM出力から）とクラスID（分類形式用）の対応を生成するために必要です。クラスはインデックス順にIDへマッピングされます: 1つ目のクラス = ID 0、2つ目 = ID 1、など。VLM出力のうちこのリストにないクラスは class\_id = -1 になります。VLMに分類を依頼したクラスと一致している必要があります..
* 出力
  * `error_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `predictions` ([`classification_prediction`](/workflows/ja/gaido/developer-guide/kinds/classification-prediction.md)): 分類器からの予測。
  * `inference_id` ([`string`](/workflows/ja/gaido/developer-guide/kinds/string.md)) : 文字列値。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/vlm_as_classifier@v1",
	    "image": "$inputs.image",
	    "vlm_output": "$steps.lmm.output",
	    "classes": [
	        "$steps.lmm.classes",
	        "$inputs.classes",
	        [
	            "dog",
	            "cat",
	            "bird"
	        ],
	        [
	            "class_a",
	            "class_b"
	        ]
	    ]
	}
```

</details>
