セマンティックセグメンテーション せまんてぃっくせぐめんてーしょん
セマンティックセグメンテーションピクセル分類U-Net自動運転医療画像コンピュータービジョン
セマンティックセグメンテーションについて教えて
簡単に言うとこんな感じ!
セマンティックセグメンテーションは「画像の全ピクセルに対して『これは道路・これは空・これは人』と分類する技術」だよ。自動運転カーが「どこが走れる道で、どこが障害物か」をピクセル単位で把握するのに使われるんだ。複数の人がいても「みんな同じ人クラス」として扱うのが特徴だよ!
セマンティックセグメンテーションとは
セマンティックセグメンテーション(Semantic Segmentation) は、画像の全ピクセルに対してクラスラベル(「道路」「空」「人」「車」など)を割り当てるコンピュータービジョンのタスクです。インスタンスセグメンテーションと異なり、同じクラスの複数の物体を個別に区別せず、「人クラスのピクセル群」として一括して扱います。
代表的なアーキテクチャはFCN(Fully Convolutional Network) で、全結合層を畳み込み層に置き換えることで任意サイズの画像に対して密なピクセル単位の予測を可能にしました。U-Netはエンコーダ-デコーダ構造とスキップ接続を使い、医療画像での高精度セグメンテーションで広く使われています。
自動運転(走行可能領域の把握)・医療画像(臓器・病変の分割)・衛星画像解析(農地・建物の抽出)・製造業(品質検査)など、精密な空間理解が必要な多くの分野で活用されています。
主要なアーキテクチャ
| モデル | 年 | 特徴 |
|---|---|---|
| FCN | 2015 | 全畳み込み化でピクセル単位の予測を実現 |
| SegNet | 2015 | エンコーダ-デコーダ構造 |
| U-Net | 2015 | スキップ接続で細部を保持。医療画像の定番 |
| DeepLab v3+ | 2018 | Atrous Convolution・CRFで精度向上 |
| SegFormer | 2021 | Transformerベースの高精度モデル |
| SAM | 2023 | Meta製の汎用セグメンテーション |
# U-Netのエンコーダ-デコーダ構造(概略)
class UNet(nn.Module):
def __init__(self, num_classes):
super().__init__()
# エンコーダ(ダウンサンプリング)
self.enc1 = ConvBlock(3, 64)
self.enc2 = ConvBlock(64, 128)
# ボトルネック
self.bottleneck = ConvBlock(128, 256)
# デコーダ(アップサンプリング)+ スキップ接続
self.dec2 = ConvBlock(256 + 128, 128) # スキップ接続で連結
self.dec1 = ConvBlock(128 + 64, 64)
# 出力
self.out = nn.Conv2d(64, num_classes, kernel_size=1)
歴史と背景
- 2015年:FCN・U-Net・SegNetが相次いで発表。ディープラーニングによるセグメンテーションが実用化
- 2016〜2018年:DeepLabシリーズがAtrous Convolutionで精度を大幅向上
- 2021年:SegFormerがTransformerベースで新たなSOTAを達成
- 2023年:Meta SAMが任意物体の汎用セグメンテーションを実現
活用シーンと必要なラベル数
| 分野 | 典型的なクラス数 | 精度要求 |
|---|---|---|
| 自動運転 | 19〜30クラス | 非常に高い(安全要件) |
| 医療画像 | 1〜10クラス | 非常に高い(臨床精度) |
| 衛星画像 | 5〜20クラス | 高い |
| 一般物体認識 | 150クラス以上 | 中〜高い |
関連用語
- インスタンスセグメンテーション — 個体を区別するセグメンテーション
- スキップ接続 — U-Netで使われるセグメンテーションの重要技術
- コンピュータービジョン — セマンティックセグメンテーションが属する分野
- 深度推定 — セグメンテーションと組み合わせる3D理解タスク