画像処理およびコンピュータービジョン

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

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

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

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

画像とラベル付き画素

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

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

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

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

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

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

セマンティック セグメンテーションの応用

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

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

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

セマンティック セグメンテーションの手法

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

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

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

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

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

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

アーキテクチャの理解

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

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

セマンティック セグメンテーション - CNN の一般構造

図 5:CNN の一般構造

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

セマンティック セグメンテーション - CNN が画像関連の機能を実行

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

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

 

MATLAB でセマンティック セグメンテーションを実行するワークフローは、以下の 5 つのステップから構成されます。

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

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

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

セマンティック セグメンテーション - イメージラベラー アプリ

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

関連情報

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

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

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

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

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

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

  1. トレーニング セット: SegNet の学習に使用
  2. テスト セット: ネットワークの精度評価に使用
セマンティック セグメンテーション - ハイウェイのラベル付け

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

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

VGG16 などの事前学習済みネットワークを読み込み、SegNetLayers コマンドを使用して、ピクセルレベルのラベル付けに必要なエンコーダー デコーダー アーキテクチャを作成します。

セマンティック セグメンテーション - SegNet アーキテクチャを構築するコード

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

ステップ 5: ネットワークを学習させ評価する

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

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

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

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

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

30日間無料トライアル

今すぐ始める