Semantic Segmentation
セマンティックセグメンテーションは、すべてのピクセルにクラスを割り当て、1つの密なクラスマップを出力します。モデルの仕組み、インスタンスセグメンテーションとの違い、コードを解説します。
セマンティックセグメンテーションは、画像内のすべてのピクセルにクラスラベルを割り当てるコンピュータビジョンタスクです。出力は入力と同じ高さと幅を持つ密なクラスマップで、各値は道路、歩道、建物、空、人などのクラスIDを表します。画像分類が画像ごとに1つのラベルを与え、物体検出がオブジェクトごとにボックスを描くのに対し、セマンティックセグメンテーションはシーン全体を領域ごとに記述します。草地や空のように数えられるインスタンスを持たない、形状の定まらない背景領域も対象です。
セマンティックセグメンテーションの仕組み#
セマンティックセグメンテーションモデルは、ピクセル単位の分類器です。畳み込みニューラルネットワーク (CNN)やビジョントランスフォーマーは、クラスごとに1つのスコアマップを出力します。通常、スコアマップは縮小された解像度で出力され、画像サイズにアップサンプリングした後、各ピクセルに最も高いスコアのクラスを割り当てます。学習では、ラベル付きマスクを使ったクロスエントロピーにより、すべてのピクセルの予測を比較します。多くの場合255で示される無視値のピクセルは、損失の計算から除外されます。
中心的な課題は、領域が何であるかを認識するには広い受容野と大幅なダウンサンプリングが必要である一方、正確な境界を描くには細かな空間情報が必要なことです。全畳み込みネットワーク (FCN)は、2014年に分類ネットワークを密な予測器へと初めて変換しました。その後、U-Netなどのエンコーダー・デコーダー構造は、スキップ接続を通じて高解像度のエンコーダー特徴をデコーダーに渡すことで境界情報を復元しました。また、DeepLabは、特徴マップを縮小せずにコンテキスト範囲を広げるため、膨張(atrous)畳み込みを使用しました。リアルタイムモデルも同様に、粗いコンテキストと細かな詳細を融合します。
-semのサフィックスで示されるUltralytics YOLO26のセマンティックセグメンテーションモデルは、このパターンに従います。すでにコンテキストが融合された1/8スケールのネック特徴からピクセルを分類し、ロジットを8倍にアップサンプリングして入力サイズに戻します。19クラスのCityscapesまたは150クラスのADE20Kで事前学習されており、マスク画像またはYOLOポリゴンラベルをオンザフライでマスクに変換したデータで学習できます。
from ultralytics import YOLO
# Load a YOLO26 semantic segmentation model trained on the 19 Cityscapes classes
model = YOLO("yolo26n-sem.pt")
# Predict one class ID for every pixel of a street image
results = model("https://ultralytics.com/images/bus.jpg")
class_map = results[0].semantic_mask.data
# Measure how much of the image each class covers
ids, counts = class_map.unique(return_counts=True)
for class_id, count in zip(ids.tolist(), counts.tolist()):
print(f"{results[0].names[class_id]}: {count / class_map.numel():.1%}")出力には、画像内に存在する各クラスと、その画像に占める割合が表示されます。写真内の人物はすべて1つの「person」の割合にまとめられます。クラスマップはピクセルごとのクラスを保存しますが、各ピクセルがどのオブジェクトに属するかは保存しないためです。
セマンティック、インスタンス、パノプティックセグメンテーションの比較#
セマンティックセグメンテーションは、3種類の画像セグメンテーションタスクの1つです。
- インスタンスセグメンテーション: 数えられる各オブジェクトに個別のマスクとIDを割り当てます。そのため、3台の車はcar 1、car 2、car 3となり、背景ピクセルにはラベルを付けません。
- パノプティックセグメンテーション: セマンティックセグメンテーションと同様にすべてのピクセルにクラスを付け、数えられるオブジェクトのピクセルにはインスタンスIDも追加します。
セマンティックセグメンテーションは、走行可能な道路領域や土地被覆など、オブジェクトの数より領域が重要なシーンに適しています。
セマンティックセグメンテーションとインスタンスセグメンテーションの選び方については、セマンティックとインスタンスのセグメンテーションガイドをご覧ください。Ultralytics Academyのレッスンセマンティックセグメンテーション:すべてのピクセルにラベルを付けるでは、データのラベリングとタスク用モデルのトレーニングを順を追って説明します。
実際のアプリケーション#
- 自動運転車: 運転システムはカメラ画像を道路、歩道、車線標示、車両、歩行者にセグメント化し、走行可能領域と障害物を特定します。
- 医用画像: モデルはCTやMRI画像内の臓器、腫瘍、病変の輪郭を描き、臨床医が体積を測定して治療計画を立てられるようにします。U-Netはもともと生物医学画像用に設計されました。
- 衛星画像解析: 土地被覆マップでは、すべてのピクセルを水域、森林、農地、建築地のいずれかに分類し、森林減少や都市の拡大を追跡します。
- 農業: 農業用ロボットやドローンがピクセルを作物、雑草、土壌に分類することで、散布機は雑草だけを処理できます。
ベンチマークと指標#
モデルの評価には、平均交差領域比 (IoU)、つまりmIoUを使用します。予測ピクセルと正解ピクセルの重なりをクラスごとに計算して平均するため、ポールや交通標識のような希少クラスも道路や空と同じ重みで扱われます。ADE20Kは一般的なシーン解析向けに屋内外の150クラスを網羅しています。運転分野で最もよく知られるベンチマークであるCityscapesには、50都市で撮影された細かなピクセルレベルのラベル付き街路画像5,000枚が含まれ、評価対象の19クラスに対するmIoUで順位が決まります。










