見出し画像

セマンティックセグメンテーションについて

セマンティックセグメンテーションは、画像内の各ピクセルを特定のクラスに分類するコンピュータビジョンのタスクです。これにより、画像内の物体や領域を正確に理解することができます。

画像の領域を分割するタスクをSegmentation(領域分割)と呼び、Semantic Segmentationは「何が写っているか」で画像領域を分割するタスクのことを指します。
画像を物体領域単位で分類する物体認識や物体検出に対して、Semantic Segmentationは画像をpixel単位でどのクラスに属するか分類します。そのためPixel-labelingとも呼ばれます。

FCN(Fully Convolutional Networks)

FCNの大きな特長は、全結合層を持たず、ネットワークが畳み込み層のみで構成されていることです
そのためFully Convolutional Networkと呼ばれています

FCNの概要


FCNでは、一般物体認識の畳み込みニューラルネットワーク(VGG-16等)の
全結合層を1×1の畳み込み層に置き換えています
(例えばですが 特徴抽出には一般物体認識向けにImageNetで学習したVGG-16の畳み込み層を流用してfine-tuningしている例もあります)

全結合層を無くすことで、従来の畳み込みニューラルネットワークのように入力画像のサイズを固定する制約がなくなりました。また、全結合層を畳み込み層に置き換えると、クラス分類の結果がヒートマップとして出力されるようになります

沢山の細かい正方形に いろいろな色がついているイメージが最適かと思います

ここで 基本的にはCNNが利用されているため
フィルタの数の分 どんどん 特徴マップは小さくなり
かつ層は厚くなります

つまり特徴マップのサイズはMaxプーリングを経て小さくなっているため、

そこで、小さくなった特徴マップを入力画像と同サイズにアップサンプリングしてpixel単位のクラス分類を行う。

アップサンプリングには逆畳み込み(Deconvolution)という処理を施す。
逆畳み込みと呼ばれているが、畳み込み(convolution)の逆プロセスというわけではない。そのため、誤解を生まないようup convolutionとかtransposed convolution(転置畳み込み?)などとも呼ばれるみたいです

逆畳み込みで実際に行われるのは、以下のように特徴マップを拡大してから畳み込む処理。

  1. 特徴マップの各pixelをstrideで指定したpixel数ずつ空けて配置し

  2. kernel size-1だけ特徴マップの周囲に余白を取り

  3. paddingで指定されたpixel数だけ余白を削り

  4. 畳み込み処理を行う

特徴マップをアップサンプリングで入力画像と同サイズに拡大するだけではsemantic segmentationの結果は物体の境界がぼやけたものとなる。
そこで、特徴抽出の最終層だけでなく、途中のpooling層で出力される大きいサイズの特徴マップも活用する。特徴マップのサイズは各層で異なるので、最終層の特徴マップから順にアップサンプリングで前の層と同サイズに拡大し、チャンネルごとに足し算します。

VGG-16に5つあるpooling層の内、3~5番目の特徴マップを利用する例。

特徴マップをアップサンプリングで入力画像と同サイズに拡大するだけではsemantic segmentationの結果は物体の境界がぼやけたものとなる。

そこで、特徴抽出の最終層だけでなく、途中のpooling層で出力される大きいサイズの特徴マップも活用する。特徴マップのサイズは各層で異なるので、最終層の特徴マップから順にアップサンプリングで前の層と同サイズに拡大し、チャンネルごとに足し算します。


FCNを高精度にするために


FCNでは,これまでの全結合層の役割を特徴マップのグリッド単位で畳み込みフィルタに代替し,低解像度なセグメンテーションマップの各画素( クラス識別結果) のクラス確率を「畳み込みのみで」推定する完全畳み込み(Fully convolutional)のCNN構造が提案されました

FCNで出力する特徴マップは、バックボーンのCNNの全結合層手前の特徴マップであり、途中のプーリング層などを経て、入力画像からだいぶ空間解像度が落ちた低解像度マップであります

このままだと、かなり低解像度のセグメンテーションマップでしか画素ごとのクラス識別結果が出力できない

そこで、単純に線形補間を行うことで、入力画像の空間解像度まで出力の解像度を(無理やり)戻す仕組みも、FCNで提案されました

線形補間の部分も、学習可能な層にかえて「学習可能なDecoder化」したほうが、より緻密なEncoder-Decoderを学習でき、高精度のセグメンテーションが実施できる事がわかります

Encoder-Decoder ネットワークとは
オートエンコーダ以降のディープニューラルネットワークでよく用いられる「入出力を端として,中央部の次元を低くし,その中央部の左右で対称形を成すネットワーク構造」です

  • Encoderネットワーク:

    • 入力画像を解釈・符号化する(※ 画像認識で言うと「特徴抽出」する).

  • Decoderネットワーク:

    • 中間表現を,アップサンプリングしていき,元の空間サイズまで戻して画像(or 2Dマップ)を生成する.


そこで、次の SegNetやU-Netのように、Decoderにも学習可能層を配置して元の空間解像度へ戻していく手法が、提案されていくようになりました.



SegNet

SegNetは特に、道路や建物などの都市環境の画像において有効なモデルとして知られています。以下に、SegNetの主な特徴を簡単に説明します。


SegNetの主要な特徴

  1. エンコーダ・デコーダ構造:

    • SegNetは、エンコーダとデコーダの2つの主要な部分から構成されています。

    • エンコーダは、入力画像から特徴を抽出し、デコーダはこれらの特徴を用いて元の画像サイズに対応するセグメンテーションマップを生成します。

  2. プーリングインデックスの使用:

    • エンコーダでのプーリング(ダウンサンプリング)操作では、どのピクセルが最大値であったかの位置情報(プーリングインデックス)を記録します。

    • デコーダでは、このプーリングインデックスを使用して、アップサンプリング(サイズを元に戻す)プロセスを効率的に行います。

  3. 軽量なネットワーク:

    • SegNetは比較的軽量なネットワークであり、リアルタイム処理に適しています。

    • これは、デコーダがエンコーダからのプーリングインデックスを利用するため、追加のパラメータが少なくて済むためです。

  4. 多様な応用:

    • SegNetは、道路のセグメンテーション、建物の検出、景観分析など、さまざまな画像セグメンテーションタスクに適用可能です。

    • 自動運転車の環境認識や衛星画像の解析など、実用的な応用が多数あります。


より具体的に

オックスフォード大 によるSegNetの研究
[Badrinarayanan et al., 2015] では、車載前方映像にセマンティクセグメンテーションのラベルを付与した初のデータセット「CamVidデータセット」を用意し,砂時計型Encoder-Decoder型のFCNのSegnetを、画素ごとのクラス識別ネットワークとして学習することを提案しました

SegNetでは、前半のEncoderでプーリングを行うのと同じ回数だけ、後半のDecoderでアップサンプリングを行い、Encoderにより失った元の解像度を取り戻しながら特徴を、後半で再度Decodeしていきます

最終的に、元画像と縦横サイズが同じ解像度のセグメンテーション出力マップ (= クラス数チャンネルの特徴マップ)を得ることができます

また、Encoder側の各最大値プーリング層で使用したMax位置の空間インデックスを、Decoder側の解像度が同じ層同士のアップサンプリング時に使用します

これにより、プーリング時とアップサンプリング時の間で、
使用空間座標(i,j)を一致させられます


インスタンスセグメンテーションとの違い

Mask R-CNNに代表される「インスタンスセグメンテーション(実例分割)」の問題設定がのちに発展したあとは、各インスタンスごとに個別にマスクで区切る意味分割が可能となりました 

インスタンスセグメンテーションも歴史があり以下は非常にわかりやすいです

SegNetでは「同一クラスであるが,他の物体インスタンスであるもの同士」は区別できていません

例えば、動画中に「木」のクラスがたくさん登場するフレームを見てもらうと、奥と地上と手前の「木」のクラスの塊がそれぞれ分離はできずに、1領域に統合されてしまいます

これは、画素ごとにクラス識別しているだけだからです

また、「建物」「車」「人」などのクラスについても、
2個以上の同一クラスの物体インスタンス同士が重なっていても、
各物体インスタンスごとに領域を区別することはできていません


U-Net

  • 時期: 2015年

  • 特徴: U-Netは、特に医療画像セグメンテーションで広く使われるようになりました。その特徴的な「U」字型のアーキテクチャは、画像の詳細な情報を保持しながら効果的なセグメンテーションを実現しました。

より具体的に

U-Netはスキップ接続を更に多用することで、特徴マップ計算のマルチスケール処理度を高めたEncoder-Decoder ネットワークとなります

U-Net自身は、顕微鏡生物画像のセグメンテーションの文脈で提案された論文であったのだが、次の世代の技術が定着するまでは、画像のセマンティックセグメンテーション全般でよく用いられる基本ネットワーク構造となりました

ネットワーク全体を図で可視化すると、Encoder-Decoder間で、左右対称的に「U」型のネットワーク構造になっていることから、U-Netと名付けられました

SegNetと異なる点は、U-Net は学習可能な2×2の転置畳み込みでアップサンプリングを行う点です

Encoder側の2×2 プーリングでダウンサンプリングされた特徴マップを、Decoder側の対応する空間解像度の場所に、スキップ接続でそのままコピーして受け渡し合成する

そして転置畳み込み層で、空間解像度を上げたものを、Decoder側で特徴マップの後ろ側のチャンネルに結合します

スキップコネクション(スキップ接続)はかなり重要です

ダウンサンプリング前の高解像度の画像と 
ダウンサンプリング後の広い範囲の情報の両方を使用することができます


さらにスキップコネクション(スキップ接続)はバックプロパゲーションの際に後段の情報が前段に伝わりやすくなるメリットもあります

バックプロパゲーションは、勾配降下法を用いて、ニューラルネットワークの誤差を効率的に逆伝播させる手法です。 具体的には、出力層から入力層に向かって、各層のパラメータに対する誤差の勾配を計算していきます。

U-Netにおける バックプロパゲーションの活用は 
学習の安定化と高速化に寄与します


ただし
U-Netは、Decoder側の特徴マップ(もとい畳み込みカーネル)が、Encoderに比べて2倍のチャンネル数だけ必要なので、少しパラメータが多めである(そのぶんだけ、過学習に気を付ける必要は出てくる)


U-Netの主な特徴まとめ

  1. U字型のアーキテクチャ: U-Netの名前は、その特徴的なU字型の構造に由来しています。この構造は、画像のダウンサンプリング(解像度を下げる処理)とアップサンプリング(解像度を上げる処理)を組み合わせています。

  2. ダウンサンプリングとアップサンプリング: ネットワークの左側(ダウンサンプリング側)では、画像の特徴を抽出し、解像度を徐々に下げていきます。右側(アップサンプリング側)では、この特徴情報を利用して、元の解像度に戻しながら、セグメンテーションの詳細を復元します。

  3. スキップ接続: ダウンサンプリング側とアップサンプリング側の間には、スキップ接続があります。これにより、ダウンサンプリングで失われた詳細情報をアップサンプリング側に伝達し、より精密なセグメンテーションを可能にします。

  4. 少ないデータでも効果的: U-Netは、限られた量のトレーニングデータでも高い性能を発揮することができます。これは、医療画像のようにデータが限られている場合に特に有利です。

U-Netの応用

U-Netは、特に医療画像のセグメンテーションにおいて優れた性能を発揮します。例えば、MRI画像やCTスキャンから腫瘍や異常な組織を識別する際に使用されます。また、生物学的画像や衛星画像の解析にも応用されています。

U-Netは、その特有の構造により、詳細な画像セグメンテーションを可能にする強力なツールです。特に、医療分野においては、正確な診断支援や治療計画の策定に貢献しています。
少ないデータで効果的に学習できるため、データが限られている状況でも有用です。


U-net の論文の概要

U-net の論文の概要を作ってみました

タイトル: U-Net: Convolutional Networks for Biomedical Image Segmentation

概要: 本論文では、データ増強を強力に利用して、少ない注釈付きサンプルをより効率的に使用するネットワークとトレーニング戦略を提示しています。このアーキテクチャは、文脈を捉えるための収縮パスと、精密な局所化を可能にする対称的な拡張パスから構成されています。このネットワークは非常に少ない画像からエンドツーエンドで訓練可能であり、電子顕微鏡スタックにおける神経構造のセグメンテーションのISBIチャレンジで以前の最良の方法(スライディングウィンドウ畳み込みネットワーク)を上回ることを示します。

背景: 近年、深層畳み込みネットワークは多くの視覚認識タスクで最先端の成果を上回っています。しかし、生物医学的画像処理では、画像ごとに単一のクラスラベルを出力するのではなく、各ピクセルにクラスラベルを割り当てることが望まれます。これに対応するため、以前のアプローチでは局所化の精度と文脈の使用の間でトレードオフがありました。

方法: 本研究では、「完全畳み込みネットワーク」と呼ばれるアーキテクチャを基にしています。このアーキテクチャを変更・拡張し、少ない訓練画像で動作し、より精密なセグメンテーションを実現します。ネットワークの重要な変更点の一つは、拡張パートで多数の特徴チャンネルを持っていることで、これにより高解像度層に文脈情報を伝播させることができます。

結果: 提案したネットワークは、電子顕微鏡による神経構造のセグメンテーション(ISBIチャレンジ2012開始)で以前の方法を上回り、さらに光顕微鏡画像(位相差およびDIC)での細胞セグメンテーションにおいても、ISBI細胞追跡チャレンジ2015で大きな差をつけて優勝しました。

議論: U-Netアーキテクチャは、生物医学的セグメンテーションアプリケーションで非常に優れた性能を発揮します。データ増強により、注釈付き画像が非常に少ない状況でも十分な訓練が可能です。訓練時間はNvidia Titan GPU(6 GB)でわずか10時間です。

限界: ネットワークの限界についての明確な記述はありませんが、一般的に深層学習モデルは大量のデータに依存する可能性があり、特定の種類のデータに過剰適合するリスクがあります。

可能な応用: このアーキテクチャは、さまざまな生物医学的セグメンテーション問題に適用可能であると結論付けられています。特に、少数の注釈付き画像からの学習が必要な場合に有用です。








この記事が気に入ったらサポートをしてみませんか?