【セマンティックセグメンテーション】FCN (Fully Convolutional Network) とは何か

AI/データサイエンス

今後セマンティックセグメンテーションについての記事を掲載します。今回はFCN(Fully Convolutional Network)を扱います。

その関連項目として、前回はDown SamplingとUp Samplingについて解説しました。本記事ではDown SamplingとUp Samplingを前提に書きます。過去記事は以下を参照ください。

【セマンティックセグメンテーション】Down SamplingとUp Sampling
今後はセマンティックセグメンテーションについての記事を掲載しますが、その関連項目として、今回はDown SamplingとUp Samplingについて解説します。

スポンサーリンク

FCN(Fully Convolutional Network)とは何か

2015年に発表されたFCNは、ILSVRCで活躍したCNNモデルであるAlexNet、VGG Net、ResNetなどを使い、それらの最終部分にある全結合層(1次元配列にして各クラスの予測をする部分)を畳み込み層に変更し、すべてのアーキテクチャを畳み込み層に変えてしまう(Fully Convolutional)ことで、各クラスの予測ではなく元画像のどこにどういう情報があるかを示すヒートマップを出力させ、これをUp Samplingに使うことでセマンティックセグメンテーションが可能になる、ということを提案しました。

スポンサーリンク

FCNのアーキテクチャ

FCNの原著論文に掲載されているアーキテクチャは下図の通りです。

FCNの特徴であるFully-Convolutionの特徴は、単にUp Samplingに使えるというだけではありません。従来のCNNは固定サイズの入力、例えば224×224ピクセルのRGB画像を入力しか扱えませんでしたが、FCNは全結合層を畳み込み層に置き換えることで任意のサイズの入力を受け入れることができるようになりました。

FCNの原著論文の冒頭に掲載されているDown Sampling/Up Samplingのアーキテクチャは下図の通りです。Down Sampling(下のforward)は通常のCNNをFully Convolutionしているだけです。

スキップ接続 (Skip Connection)

特徴的なのはUp Samplingで導入されているスキップ接続です。

スキップ接続は、ネットワークの深い層(低解像度、赤枠内右寄り)と浅い層(高解像度、赤枠内左寄り)の出力を組み合わせる方法です。これにより、出力のセグメンテーションマップは低解像度の意味情報と高解像度の詳細情報を両方捉えるように設計しています。

例えば、Down Samplingの最後の層であるPool5が完了した時の最も解像度の低い画像をTransposed Convolution (Deconvolution)でUp samplingした画像(黄色)と、Down Sampling時にPool5の前のPool4が完了した時点での、Pool5よりは解像度が高い画像(水色)の値を要素ごとに足し合わせています。

どのような計算なのか、以下にイメージを示します。まずPool4を下記の(A)とします。これを更にプーリングしたPool5が(B)です。その後Upsamplingのために実施するTransposed Convolutionの準備段階が(C)、処理後が(D)です。(A)と(E)をセルごとに足し合わせた(E)がスキップ接続の出力になります。

Transposed Convolution (Deconvolution)については以下を参照ください。

以上がFCNです。原著論文は以下から参照ください。

https://arxiv.org/pdf/1411.4038

コメント

タイトルとURLをコピーしました