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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

アーキテクチャの理解

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

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

図5: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コマンドを使用して,ピクセルレベルのラベル付けに必要なエンコーダーデコーダーアーキテクチャを作成します。

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

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

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

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

画像解析にセマンティックセグメンテーションを使用する製品には,MATLAB®计算机视觉的工具箱™(画素のラベル付け)深度学习工具箱™(ネットワークの構築と学習)が含まれます。

学習と予測は以3.0计算能力上のCUDA®対応GPUでサポートされます.GPUの使用が推奨されるほか,并行计算工具箱™が必要となります。

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

無料評価版を入手する

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