> 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/gaido/developer-guide/kinds/semantic-segmentation-prediction.md).

# semanticsegmentationprediction 型

セマンティックセグメンテーションのための、ピクセルごとのクラスラベルと信頼度付き予測

## データ表現

{% hint style="warning" %}
**データ表現**

この種類は内部表現と外部表現が異なります。 **外部** 表現はワークフローとの統合に関係し、 **内部** 一方は、Workflowsブロックの開発に役立つ実装上の詳細です。
{% endhint %}

### 外部

外部データ表現は Workflows クライアントに関連します。これは、データの入力および出力形式を規定します。

型: `dict`

### 内部

内部データ表現は Workflows ブロック作成者に関連します。これは、実行エンジンが実行時に、この種類の入力を受け取るブロックへ提供する型です。

型: `sv.Detections`

## 詳細

この形式は、単一のセマンティックセグメンテーション予測を [`sv.Detections(...)`](https://supervision.roboflow.com/latest/detection/core/) 各予測クラスにつき1つの検出を持つオブジェクトとして表します。各検出は、そのクラスに割り当てられたすべてのピクセルを覆うRLEエンコードされたマスクを持ちます。

**なぜRLEで、ポリゴンではないのか:**

セマンティックセグメンテーションでは、画像内のすべてのピクセルにクラスラベルを割り当てます。1つのクラスが、空間的に分離した複数の領域に現れることがあります（例: フレームの反対側にある2つの別々の「person」領域）。ポリゴンベースのシリアライズでは `cv2.findContours()`を使用しますが、これは最初の連結輪郭しか保持せず、他は静かに破棄します。そのため、連結していないマスクでは不可逆なデータ損失が発生します。RLE（Run-Length Encoding、COCO標準）は、空間的な位相に関係なく完全なマスクを表現するピクセルレベルのエンコーディングであり、セマンティックセグメンテーションのマスクに対して唯一正しいシリアライズ形式です。

**内部表現:** `sv.Detections` 以下を含みます:

* `xyxy`  - クラスのすべてのピクセルを囲むぴったりしたバウンディングボックス
* `class_id`  - 整数のクラスID
* `confidence`  - そのクラスのすべてのピクセルにわたる平均信頼度
* `data["class_name"]`  - クラスラベル文字列
* `data["rle_mask"]`  - COCO RLE辞書のnumpyオブジェクト配列 `{"size": [H, W], "counts": "..."}`

**シリアライズ形式** （各クラスにつき1エントリ `predictions`):

```json
{
    "image": {"width": 640, "height": 480},
    "predictions": [
        {
            "x": 320.0, "y": 240.0, "width": 200.0, "height": 180.0,
            "confidence": 0.92,
            "class_id": 1,
            "class": "person",
            "detection_id": "a1b2c3d4-...",
            "rle_mask": {"size": [480, 640], "counts": "XYZ..."}
        }
    ]
}
```

**RLEマスクのデコード:**

```python
import pycocotools.mask as mask_utils
import numpy as np

rle = prediction["rle_mask"]
binary_mask = mask_utils.decode(rle).astype(bool)  # shape: (H, W)
```
