セマンティックセグメンテーションとは

セマンティックセグメンテーション (Semantic Segmentation) は、画像内の全画素にラベルやカテゴリを関連付けるディープラーニング (Deep Learning) のアルゴリズムです。特徴的なカテゴリを形成する画素の集まりを認識するために使用されます。たとえば、自動運転車は車両、歩行者、交通標識、歩道、その他の道路の特徴を識別する必要があります。

セマンティックセグメンテーションは、自動運転、医療用画像処理、工業用検査など幅広い用途で使用されています。

セマンティックセグメンテーションの簡単な例では、画像を 2 つのクラスに分けます。たとえば、図1 の浜辺に佇む人物の画像では、画像内の画素は人物と背景という 2 つのクラスに分割されています。

図1: 画像とラベル付き画素

セマンティックセグメンテーションは 2 つのカテゴリに限らず、画像の内容を分類するカテゴリの数を変更することもできます。たとえば、同じ画像でも、人物、空、海、背景の 4 つのクラスに分割することができます。

セマンティックセグメンテーションと物体検出の違いとは?

セマンティックセグメンテーションは、対象物の画像内を画素レベルで複数の領域に分けることができる点で、物体検出よりも便利と言えます。境界ボックス内に対象物が収まらなければならない物体検出 (図2) とは対照的に、セマンティックセグメンテーションは不規則な形状の対象物を明瞭に検出することができます。

図2: 物体検出におけるオブジェクト識別用の境界ボックス

図2: 物体検出におけるオブジェクト識別用の境界ボックス

セマンティックセグメンテーションは、画像内の画素にラベルを付けるため、他の物体検出の方法に比べて高精度であることが特徴です。この精度の高さにより、セマンティックセグメンテーションは、高精度な画像マッピングを必要とするさまざまな業界で幅広く使用されています。

  • 自動運転: 歩行者、歩道、ポール、他の車両などの障害物から道路を分離することで、自動車が走行可能な経路を識別
  • 工業用検査: ウエハ検査などで材料の欠陥を検出
  • 衛星画像: 山脈、河川、砂漠、その他の地形を識別
  • 医療用画像処理: 細胞内のがん性異常の解析と検出
  • ロボティックビジョン: 物体や地形の識別とナビゲーション

図3: マルチスペクトル衛星画像のセマンティックセグメンテーション

図3: マルチスペクトル衛星画像のセマンティックセグメンテーション

画像分類におけるセマンティックセグメンテーションのネットワークの学習プロセスは以下のとおりです。

  1. 画素にラベルが付けられた画像の集まりを解析します。
  2. セマンティックセグメンテーションのネットワークを作成します。
  3. 画像を画素カテゴリに分類するためネットワークに学習させます。
  4. ネットワークの精度を評価します。

例: 自動運転アプリケーション

図4 のシーケンスは、自動運転に使用されるセマンティックセグメンテーションの実例です。道路の画像は、他の車両から自動的に分離されています。次のセクションでは、ネットワークが構築される仕組みを示します。

図4: 自動運転アプリケーションにおけるセマンティックセグメンテーション

アーキテクチャの理解

セマンティックセグメンテーションにおいて一般的なアプローチのひとつは、畳み込みニューラルネットワーク (CNN, Convolutional Neural Network) アーキテクチャをベースとした SegNet を構築する手法です。一般的な CNN アーキテクチャを図5 に示します。

この CNN は、画像全体をいずれかの事前定義されたカテゴリに分類します。

図 5: CNN の一般構造

画像全体ではなく画素レベルで分類するには、CNN の逆実装を追加します。最終画像が入力画像と同じサイズになるように、アップサンプリングプロセスは、ダウンサンプリングプロセスと同じ回数実行されます。最後に、画素分類出力層を使用して、各画素が特定のクラスにマッピングされます。これにより、エンコーダー-デコーダー構造が構築され、セマンティックセグメンテーションが可能になります。

図6: CNN が各層で画像関連の機能を実行し、プーリング層 (グリーン) を使用して画像のダウンサンプリングを実行。ネットワークの前半に対してこのプロセスが数回繰り返される。この図の前半の出力の後、アンプーリング層 (オレンジ) が同じ数だけ続く。

MATLAB によるセマンティックセグメンテーション

 

MATLAB によるセマンティックセグメンテーション

  1. データにラベルを付けるか、ラベル付きのデータを取得する
  2. 元画像とラベル付き画像のデータストアを作成する
  3. データストアを分割する
  4. CNN をインポートして SegNet 用に変更する
  5. ネットワークを学習させ評価する

ステップ1: データにラベルを付けるか、ラベル付きのデータを取得する

ディープラーニングのモデルは大量のデータに基づいて構築されますが、セマンティックセグメンテーションも例外ではありません。インターネットでラベル付きのデータを見つけることもできます。独自のデータセットがある場合、MATLABではイメージラベラーアプリを使用してラベル付けします。ここでディープラーニングのラベルはアノテーションと呼ばれることもあります。このデータセットを使用して SegNet を学習させることができます。

図7: セマンティックセグメンテーションのため画像にラベルを付けるイメージラベラーアプリ 

関連情報

ステップ2: 元画像とラベル付き画像のデータストアを作成する

大量のデータを取り扱うとき、すべての情報をメモリに読み込むことができない場合が多々あります。大容量のデータセットを管理するために、データストアを使用できます。データストアには、アクセスするファイルの保存場所の情報が格納され、ファイルを処理する必要があるときにのみメモリに読み込むことができます。

SegNet を構築するには、2 つのデータストアが必要です。

  1. ImageDatastore: 元画像を格納
  2. PixelLabelDatastore: ラベル付き画像を格納

ステップ3: データストアを分割する

SegNet を構築するとき、データストアを 2 つの部分に分割する必要があります。

  1. トレーニングセット: SegNet の学習に使用
  2. テストセット: ネットワークの精度評価に使用

図8: ハイウェイのカラー画像 (左) と対応するラベル付き画素 (右)

ステップ4: CNN をインポートして SegNet 用に変更する

SegNet を構築するとき、データストアを 2 つの部分に分割する必要があります。

  1. トレーニングセット: SegNet の学習に使用
  2. テストセット: ネットワークの精度評価に使用

図9: MATLAB により 1 行のコードで SegNet アーキテクチャを構築

図9: MATLAB により 1 行のコードで SegNet アーキテクチャを構築

最終ステップで、ネットワークのハイパーパラメーターを設定し、ネットワークを学習させます。

セマンティックセグメンテーションについて詳しく知る

画像解析にセマンティックセグメンテーションを使用する製品には、MATLAB®Computer Vision System Toolbox™ (画素のラベル付け)、Deep Learning Toolbox™ (ネットワークの構築と学習) が含まれます。

学習と予測は Compute Capability 3.0 以上の CUDA® 対応 GPU でサポートされます。GPU の使用が推奨されるほか、Parallel Computing Toolbox™ が必要となります。

ソフトウェアリファレンス

無料評価版を入手する

30 日間の無料評価版はこちら

質問はありますか。

ディープラーニングのエキスパートにご質問ください。