Image Segmentation
画像セグメンテーションでは、画像をピクセル領域に分割し、各クラスや物体の位置を正確に示します。セマンティック、インスタンス、パノプティックの各タイプを比較します。
画像セグメンテーションは、ピクセルにラベルを付けて画像を領域に分割するコンピュータービジョンタスクです。出力は、どのピクセルがどのクラスや物体に属するかを正確に示すマスクの集合です。各物体を長方形のバウンディングボックスで特定する物体検出では背景もボックス内に含まれますが、セグメンテーションでは物体や領域の実際の輪郭を描きます。また、画像全体に1つのラベルを割り当てる画像分類よりもはるかに詳細です。この精度は、腫瘍の測定から車の前方にある空きスペースの検出まで、面積、輪郭、物体同士の接触が判断に影響する場合に重要です。
画像セグメンテーションの種類#
セグメンテーションタスクは、ピクセルラベルの意味によって異なります。コンピュータービジョンでは、人や車のような数えられる物体を「things」、道路、草、空のような形が定まらない領域を「stuff」と区別します。
- セマンティックセグメンテーション: thingsとstuffの両方を含む各ピクセルにクラスを割り当て、同じクラスの物体はすべて1つの領域に統合します。
- インスタンスセグメンテーション: 数えられる各物体を検出し、それぞれに独自のマスクとIDを付けます。そのため、接触している2人を別々に保てます。背景ピクセルにはラベルを付けません。
- パノプティックセグメンテーション: 各ピクセルにクラスを割り当て、数えられる物体のピクセルにはインスタンスIDも付与し、他の2種類の方式を統合します。
- インタラクティブセグメンテーション: ユーザーのクリック、ボックス、テキストプロンプトが示す対象のマスクを返します。Segment Anything Model(SAM)のようなプロンプト対応モデルがこの方式を使用します。
最初の3種類はそれぞれ異なる問いに答えるため、選択は簡単な判断で済みます。
セグメンテーションモデルの仕組み#
従来の手法では、輝度、色、エッジなどの低レベルの特徴に基づいてピクセルをグループ化します。大津の方法を用いたしきい値処理、領域成長法、ウォーターシェッド変換、k-meansによる色クラスタリング、グラフカットなどがあります。OpenCVには複数の手法が実装されており、コンベヤー上の逆光で照らされた部品のような、条件が整った制御環境の画像では今も有用です。ただし、各グループが何を表すかを理解せずにピクセルを分類します。
ディープラーニングモデルは、ラベル付きマスクから領域の境界と意味の両方を学習します。U-Netなどのエンコーダー・デコーダーネットワークは、画像をダウンサンプリングしてコンテキストを捉えた後、フル解像度にアップサンプリングし、ピクセル単位の予測を行います。Mask R-CNNやYOLOのセグメンテーションモデルなどのインスタンスモデルは、物体検出器にマスクヘッドを追加します。Mask2FormerなどのTransformerモデルは、単一のアーキテクチャでセマンティック、インスタンス、パノプティックセグメンテーションに対応します。プロンプト対応の基盤モデルにより、任意の物体のセグメンテーションが可能になりました。SAMは、1,100万枚の画像から得た11億個のマスクでトレーニングされ、2023年に登場しました。SAM 2は2024年に動画に対応し、SAM 3は2025年11月に続いて登場し、テキストプロンプトで指定された概念に該当するすべてのインスタンスをセグメント化します。セグメンテーションのラベルはポリゴンまたはピクセル単位のマスクで、ボックスより描画に時間がかかるため、これらのプロンプト対応モデルは現在、クリック1回で多数のトレーニング用マスクの下書きを作成できます。
タスクの種類によって出力形式も決まります。UltralyticsのYOLO26には、インスタンス用の-segとセマンティックセグメンテーション用の-semという別々のモデルファミリーがあり、同じ写真に実行すると違いがわかります。
from ultralytics import YOLO
# インスタンスセグメンテーションモデルとセマンティックセグメンテーションモデルを読み込みます
instance_model = YOLO("yolo26n-seg.pt")
semantic_model = YOLO("yolo26n-sem.pt")
# 同じ街路画像を両方のモデルでセグメント化します
image = "https://ultralytics.com/images/bus.jpg"
instance_results = instance_model(image)
semantic_results = semantic_model(image)
# インスタンス出力: 検出物体ごとに1つの二値マスク。形状は(物体数、高さ、幅)です
print(instance_results[0].masks.data.shape)
# セマンティック出力: 画像全体に1つのクラスマップ。形状は(高さ、幅)です
print(semantic_results[0].semantic_mask.data.shape)インスタンス出力の最初の次元は検出物体数と等しいため、インスタンス結果を数えられます。出力形式ごとに異なる指標があります。インスタンスセグメンテーションにはマスクの平均適合率(mAP)、セマンティックセグメンテーションにはIntersection over Union(IoU)の平均、パノプティックセグメンテーションにはパノプティック品質(PQ)を使います。
実際のアプリケーション#
- 医用画像解析: 放射線画像ツールは、CTやMRIの臓器、腫瘍、病変の輪郭を描き、体積の測定や手術・放射線治療の計画に役立てます。
- 自動運転: 認識システムは各フレームで道路、歩道、車両、歩行者をセグメント化し、走行可能な空間を特定します。
- 衛星画像解析: 土地被覆マップでは、各ピクセルを水域、森林、農地、建物に分類し、経時的な変化を追跡します。
- 写真・動画編集: 背景除去、ポートレートモードのぼかし、空の置き換えには、デバイス上で計算された人物や空のマスクが利用されます。
- ロボティクスと製造: ロボットは物体マスクを使って不規則な部品の把持点を計算し、検査システムは傷やひびなどの欠陥の正確な面積を測定します。










