今回は、VGG16をFine tuningしたFCNを試してみました。
そもそもセマンティックセグメンテーションは何か?他の手法との比較に関しては、以下の記事をご覧ください。
本記事では、FCNに関連する事項について書いていきます。
VGG16とは
VGG16とは、ImageNetと呼ばれる1000クラス分類のためのデータセットで訓練されたネットワークです。
ILSVRCと呼ばれる画像認識コンペで2014年に2位になったモデルです。構造が非常にシンプルで使いやすいため、今でもよく用いられるCNNのモデルです。
なぜそのまま転用することができるのかというと、浅い層における畳み込みでは縦線や横線の抽出といった画像処理では共通となる部分の学習結果になっていると考えられるため、予め大量のデータで学習されたパラメータが有効だと言われております。
CNNにはVGG以外にもたくさんのモデルが提案されていますが、興味のある方は以下の記事をご覧下さい。
FCN(Fully Convolutional Network)とは
FCNとは、セマンティックセグメンテーションFully Convolutional Networkの略で、全部畳み込み層から構成されたネットワークという意味で名づけられています。
FCNはセマンティックセグメンテーションのためのネットワークとして最初に提案されたネットワークで、今ではさまざまな改良ネットワークが提案されていますが、そのベースラインとして、今でもよく見かけます。
では、普通の画像分類タスクと何が違うかという観点で、ネットワークを解説します。まず、以下の図はひらがな認識を行う画像分類タスクのためのネットワークです。
図のように、畳み込みとプーリングを繰り返し、抽象化した画像の特徴を全結合層を使って、それが何の文字であるかという確率を出力します。畳み込み層を行った時点では2次元のマップになっていますが、文字ごとの確率にするために、全結合層によってマップを5個の変数にしています。
一方、セマンティックセグメンテーションでは、2次元の画像上でどのピクセルがどのクラスかを判定する必要があります。したがって、以下の図のように、全結合層で5個の変数にせず、畳み込み層で得られた特徴マップをそのままセマンティックセグメンテーションの結果として使ってしまおうという構造になっています。すなわち、全結合層をなくして、畳み込み層のみを用いているのでFully Convolutional Network(FCN)と呼ばれています。
FCNを使ったセマンティックセグメンテーションの結果と課題
以下に、FCNとU-Netの結果を示します。どちらも傾向はつかめていますが、分解能が荒いです。この理由としては、うえで述べたように、畳み込み層によって抽象化された特徴マップをそのままセマンティックセグメンテーションの結果として使っているので、抽象化された分、解像度が下がるという課題が存在します。
いかに高解像度な結果を出力するか?という課題がセマンティックセグメンテーションの研究方向の1つになっており、そのあたりについても以下の記事に記載したので、興味があればご覧ください。
FCN以外のセマンティックセグメンテーション例の紹介
FCNはセマンティックセグメンテーションとして提案された最初の論文ですが、それ以外にもいくつかセマンティックセグメンテーションのネットワークを紹介していますので、よければご覧ください。
ご意見、ご質問、調べてほしいことなどあれば、コメントください。
励みになりますので、お気に入り登録もよろしくお願いいたします!