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

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

セマンティックセグメンテーションは,自动运転,医疗用画像处理,工业用検查など幅広い用途で使用されています。

セマンティックセグメンテーションの简単な例では,画像を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日间の无料评価版はこちら