JA EN

画像セグメンテーションの基礎 - 領域分割の原理と応用を理解する

· 約 9 分で読めます

画像セグメンテーションとは - ピクセル単位で画像を理解する技術

画像セグメンテーションとは、画像の各ピクセルにラベル (カテゴリ) を割り当て、画像を意味のある領域に分割する技術です。物体検出がバウンディングボックス (矩形) で物体の位置を示すのに対し、セグメンテーションはピクセル単位の精密な境界を提供します。

セグメンテーションの 3 つのタイプ:

Web での活用事例:

近年は深層学習の発展により、セグメンテーションの精度が飛躍的に向上しました。特に 2023 年に Meta が公開した SAM (Segment Anything Model) は、事前学習なしであらゆる画像に対してゼロショットでセグメンテーションを実行できる汎用モデルとして注目を集めています。

古典的手法 - 閾値処理とエッジ検出によるセグメンテーション

深層学習以前のセグメンテーション手法は、ピクセルの色値やエッジ情報に基づく規則ベースのアプローチでした。計算コストが低く、特定の条件下では今でも有効です。

閾値処理 (Thresholding): 最もシンプルな手法で、ピクセル値が閾値を超えるかどうかで前景と背景を分離します。大津の方法 (Otsu's method) は、クラス間分散を最大化する最適な閾値を自動決定するアルゴリズムで、OpenCV の cv2.threshold(img, 0, 255, cv2.THRESH_OTSU) で簡単に実装できます。背景と前景のコントラストが明確な画像 (文書スキャン、X 線画像など) で効果的です。

エッジ検出ベース: Canny エッジ検出器で輪郭を抽出し、閉じた輪郭で囲まれた領域をセグメントとする手法です。Sobel フィルタや Laplacian フィルタでエッジの勾配を計算し、非極大値抑制とヒステリシス閾値処理で精密なエッジを検出します。

領域成長法 (Region Growing): シード点から開始し、隣接ピクセルが類似条件 (色差が閾値以内) を満たす場合に領域を拡張していく手法です。均一な色の領域を正確に抽出できますが、シード点の選択に依存し、テクスチャの多い画像では過分割が発生しやすい欠点があります。

GrabCut アルゴリズム: ユーザーが大まかな矩形を指定すると、ガウス混合モデル (GMM) とグラフカットで前景と背景を分離するインタラクティブな手法です。OpenCV の cv2.grabCut で利用可能で、背景除去ツールの基盤技術として広く使われてきました。精度は深層学習に劣りますが、学習データが不要で軽量に動作する利点があります。

深層学習ベースの手法 - FCN から U-Net、DeepLab まで

2015 年以降、深層学習ベースのセグメンテーション手法が急速に発展し、古典的手法を大幅に上回る精度を達成しています。主要なアーキテクチャの進化を追います。

FCN (Fully Convolutional Network, 2015): 画像分類用の CNN (VGG, ResNet など) の全結合層を畳み込み層に置き換え、ピクセル単位の予測を可能にした先駆的モデルです。アップサンプリングにデコンボリューション (転置畳み込み) を使用し、入力と同じ解像度の出力マップを生成します。

U-Net (2015): エンコーダ・デコーダ構造にスキップ接続を追加したアーキテクチャです。エンコーダで抽出した高解像度の特徴マップをデコーダに直接接続することで、細かい境界の復元精度が大幅に向上しました。医療画像セグメンテーションで特に高い性能を発揮し、少量の学習データでも良好な結果が得られます。

DeepLab シリーズ (2016-2018): Atrous Convolution (Dilated Convolution) を導入し、受容野を拡大しながら解像度を維持する手法です。DeepLab v3+ では ASPP (Atrous Spatial Pyramid Pooling) でマルチスケールの文脈情報を統合し、PASCAL VOC 2012 で mIoU 89.0% を達成しました。

Transformer ベース (2021-): SegFormer、Mask2Former などの Vision Transformer ベースのモデルが登場し、CNN ベースを上回る精度を達成しています。自己注意機構により画像全体の文脈を捉えられるため、大きなオブジェクトや複雑なシーンでの性能が向上しています。ただし、計算コストが高く、リアルタイム処理には工夫が必要です。

SAM (Segment Anything Model) - 汎用セグメンテーションの革命

SAM (Segment Anything Model) は Meta AI が 2023 年に公開した基盤モデルで、11 億枚の画像と 11 億個のマスクで事前学習されています。特定のタスクやドメインに特化せず、あらゆる画像に対してゼロショットでセグメンテーションを実行できる汎用性が最大の特徴です。

SAM のアーキテクチャ:

SAM の活用パターン:

SAM 2 (2024): 動画対応版として SAM 2 が公開され、フレーム間の時間的一貫性を保ったセグメンテーションが可能になりました。1 フレームでオブジェクトを指定すれば、動画全体を通じてそのオブジェクトを追跡・セグメントします。

Web での利用は、ONNX Runtime Web や TensorFlow.js でモデルを実行するか、サーバーサイドで推論して結果のマスクをクライアントに返す構成が一般的です。SAM の Image Encoder は計算コストが高い (ViT-H で約 600ms/画像 on GPU) ため、リアルタイム用途では軽量版の MobileSAM や EfficientSAM の利用を検討してください。

評価指標と精度の理解 - IoU、mIoU、Dice 係数

セグメンテーションモデルの性能を正しく評価するために、主要な評価指標を理解しておく必要があります。

IoU (Intersection over Union): 予測マスクと正解マスクの重なり具合を測定する最も基本的な指標です。計算式は IoU = (予測 ∩ 正解) / (予測 ∪ 正解) で、0 (完全不一致) から 1 (完全一致) の値を取ります。一般的に IoU 0.5 以上を「正しいセグメンテーション」と判定します。

mIoU (mean IoU): 全カテゴリの IoU の平均値です。セマンティックセグメンテーションの標準的な評価指標で、PASCAL VOC や Cityscapes などのベンチマークで使用されます。2024 年時点の SOTA (State of the Art) は Cityscapes で mIoU 85% 以上を達成しています。

Dice 係数 (F1 スコア): 医療画像セグメンテーションで広く使われる指標で、Dice = 2 * (予測 ∩ 正解) / (|予測| + |正解|) で計算されます。IoU と単調な関係にあり、Dice = 2*IoU / (1+IoU) で相互変換可能です。Dice は IoU より値が大きくなるため、論文での数値が良く見える傾向があります。

Pixel Accuracy: 正しく分類されたピクセルの割合です。計算が簡単ですが、クラス不均衡に弱い欠点があります。例えば、画像の 90% が背景の場合、全ピクセルを背景と予測するだけで 90% の精度が得られてしまいます。

Boundary F1 Score: セグメンテーション境界の精度を評価する指標です。境界から一定距離 (通常 2-5 ピクセル) 以内の予測を正解とみなします。エッジの精密さが重要な用途 (画像切り抜き、合成) で特に重要です。

Web ブラウザでのセグメンテーション実装 - TensorFlow.js と ONNX Runtime

セグメンテーションモデルをブラウザ上で実行する方法と、実用的な実装パターンを紹介します。サーバーレスで動作するため、プライバシーの観点からも有利です。

TensorFlow.js による実装: Google が提供する BodyPix や MediaPipe の Selfie Segmentation は、ブラウザ上でリアルタイムに人物セグメンテーションを実行できます。

import * as bodySegmentation from '@tensorflow-models/body-segmentation';
const model = bodySegmentation.SupportedModels.MediaPipeSelfieSegmentation;
const segmenter = await bodySegmentation.createSegmenter(model);
const people = await segmenter.segmentPeople(image);

MediaPipe Selfie Segmentation は 256 × 256の入力解像度で動作し、モバイルデバイスでも 30fps 以上のリアルタイム処理が可能です。出力はピクセルごとの確率マップで、閾値 (通常 0.5-0.7) で二値化してマスクを生成します。

ONNX Runtime Web による実装: PyTorch で学習したモデルを ONNX 形式にエクスポートし、ブラウザの WebAssembly または WebGL バックエンドで実行できます。SAM の軽量版 (MobileSAM) を ONNX 化してブラウザで動かす実装例も公開されています。

実装上の注意点:

サーバーサイド推論との使い分けとして、リアルタイム性が必要な場合 (ビデオ会議の背景除去) はブラウザ実行、高精度が必要な場合 (EC サイトの商品切り抜き) はサーバーサイドで SAM を実行する構成が推奨されます。

関連記事

背景透過の技術解説 - セグメンテーションとマット処理の仕組み

画像の背景透過 (背景除去) に使われる技術を解説。セマンティックセグメンテーション、トリマップベースのマット処理、エッジ検出の仕組みと精度の違いを比較します。

画像生成と著作権の論点 - AI 生成画像をめぐる法的・倫理的課題

AI による画像生成と著作権の関係を多角的に解説。学習データの権利問題、生成物の著作権、商用利用の注意点など実務的な論点を整理します。

セマンティックセグメンテーション入門 - U-Net と DeepLab の仕組みを徹底解説

画像のピクセル単位分類を実現するセマンティックセグメンテーションの基礎から U-Net、DeepLab の構造まで、実装例を交えて解説します。

画像アノテーションツール比較 - CVAT, Label Studio, Roboflow の選び方

機械学習向け画像アノテーションツールを徹底比較。CVAT、Label Studio、Roboflow など主要ツールの機能・コスト・ AI アシスト機能を解説します。

医用画像処理の基礎 - DICOM、CT、MRI の画像データと処理技術

医用画像処理の基礎知識を体系的に解説。DICOM 規格、CT ・ MRI の撮像原理、ウィンドウ処理、セグメンテーションなど臨床で使われる技術を網羅します。

アルファマッティングの技術解説 - 自然画像から精密な前景抽出を実現する手法

画像マッティングの原理から最新の深層学習手法まで網羅的に解説。トライマップ、クローズドフォーム、ディープマッティングの実装と比較を詳述します。

関連用語