ホーム » FCN » TensorFlow : 完全畳込みネットワークによるセグメンテーション

TensorFlow : 完全畳込みネットワークによるセグメンテーション


TensorFlow : 完全畳込みネットワークによるセグメンテーション

作成 : (株)クラスキャット セールスインフォメーション
日時 : 07/05/2017

 

セグメンテーションとデータセット PASCAL VOC2012

セマンティック・セグメンテーションの実験が続いたので、基本的なセグメンテーション・モデルである完全畳み込みネットワーク FCN (Fully Convolutional Network) を定番のデータセット PASCAL VOC2012 上で試しておきます。

セグメンテーションは簡単に言えばピクセル単位の分類問題です。そして完全畳み込みネットワークはセグメンテーション・タスク用のモデルの一つで、畳み込み層中心で構成されスキップ・アーキテクチャが導入されています。最先端のセグメンテーション技術に比較すると少し精度が劣る印象ですが、基本となるモデルで完全畳み込みネットワークのバリエーションも多いです。
(補足: 完全畳み込みネットワークという訳語は定着していませんのでご注意ください。もっとも他に訳しようもないのですが。)

データセットは PASCAL VOC 2012 を使用します。このデータセットは物体検出やセグメンテーション目的で標準的に利用されるデータセットです。セグメンテーションについては訓練セットが 1464 画像、検証セットが 1449 画像用意されていて総計 2,913 枚あります。クラスは以下の 20 ありますが (背景をカウントすれば 21) :

1=aeroplane, 2=bicycle, 3=bird, 4=boat, 5=bottle, 6=bus, 7=car , 8=cat, 9=chair, 10=cow, 11=diningtable, 12=dog, 13=horse, 14=motorbike, 15=person, 16=potted plant, 17=sheep, 18=sofa, 19=train, 20=tv/monitor

クラスの詳細については以下を参照してください :

以下は訓練したモデルでセグメンテーションを行なったものです :

 

完全畳込みネットワーク (FCN, Fully Convolutional Networks)

完全畳み込みネットワークの基本は以下のペーパーを読めば十分で、(セグメンテーション、あるいは Auto-encoder を手がけたことがあれば) 特に難しい話しもありません。図を見るだけでもアーキテクチャの概要は掴めるかと思います :

Abstract だけ翻訳しておきます :

畳み込みネットワークは特徴の階層を生むパワフルな視覚モデルです。end-to-end で、pixel-to-pixel に訓練された畳み込みネットワークはそれ自体でセマンティック・セグメンテーションにおいて以前のベストな結果を更新することを示します。キーとなる洞察は “完全畳み込み (fully convolutional)” ネットワークを構築することです、これは任意のサイズの入力を取り相当するサイズの出力を効率的な推論と学習で生成します。完全畳み込みネットワークの位相 (space) を定義して詳述し、空間的に密な予想タスク (訳注: ピクセル単位での予想タスク) へのそれらの適用を説明し、そして以前のモデルとの関連性をとらえます。現代的な分類ネットワーク (AlexNet、VGG と GoogLeNet) を完全畳み込みネットワークに適応させそれらが学習した表現を再調整してセグメンテーション・タスクに遷移しました。そしてスキップ・アーキテクチャを定義しました、これは正確で詳細なセグメンテーションを生成するために深い、粗い層からのセマンティック情報を浅い、完成度が高い (fine) 層からの外観 (appearance) 情報と結合します。この完全畳み込みネットワークは、推論に典型的な画像に対して 0.1 秒かかる一方で、PASCAL VOC (2012 上で 67.2% mean IU へと 30 % の相対的な改善)、NYUDv2、SIFT Flow、そして PASCAL-Context の改善されたセグメンテーションを獲得しました。

abstract は抽象的で少し分かりにくいかもしれませんが抑えたいポイントは :

  1. (完全結合層がないという意味で) 畳み込み層中心にモデルを構築し end-to-end, pixel-to-pixel にセグメンテーション・タスクを訓練/推論する。
  2. スキップ・アーキテクチャ – 通常の特徴出力に、より浅い層の出力を結合する。
  3. 分類ネットワークとしての AlexNet, VGG, GoogLeNet から遷移させている。

 

訓練モデル

モデルは VGG-16 ベースの FCN を実装した上で、(セールスポイントである) スキップ・アーキテクチャの有無で比較してみました。それからデータセットは train と val に分かれていますが、通常のように train のみで訓練したモデルと (ImageNet 画像で検証する目的で) 両者を合わせた trainval で訓練したモデルも用意しました。

具体的には以下の3種類です :

  1. スキップ・アーキテクチャなし / train データセットで訓練
  2. スキップ・アーキテクチャあり / train データセットで訓練

    この 2. を軸としました。以下は訓練時の損失の推移を TensorBoard でグラフにしたものです :

  3. val データセットを加えた trainval データセットを使用して 2 を再調整

 

Val データセット画像で検証

最初にスキップ・アーキテクチャなし/ありの場合のそれぞれのモデルについて(訓練では使用していない) Val データセットの画像で検証してみます。もちろん全く同じ条件で訓練しています。
* 色分けは、乗り物 : 青系、生物: グリーン系、その他: 赤系としましたが、便宜上、人間だけ赤色にしてあります。
* また予想されたカテゴリーのピクセル数も併せて示します。

  • 最初は aeroplane (飛行機) です。skip ありの方がより良い表現ですが、エンジン部は自動車と誤判定されています。
スキップ・アーキテクチャ なし スキップ・アーキテクチャ あり

1) aeroplane: 8691
2) car: 1650
3) boat: 173
1) aeroplane: 10543
2) car: 2867
3) chair: 29
4) sheep: 4
5) bus: 2
  • 次に電車です。正面窓の赤い部分は TV モニタと誤判定されています。局所的にはやむを得ませんが、全体が掴めていないとも言えます。

1) train: 22795
2) motorbike: 23
3) tv/monitor: 2
4) boat: 1,
1) train: 19915,
2) tv/monitor: 554,
3) boat: 143,
4) bottle: 51,
5) potted plant: 18,
  • そしてボートです。人間の目で見ても少し分かりにくいですが、明るい青はモーターバイク、赤色は TV モニタと誤判定されています。

1) motorbike: 1946
2) boat: 435
3) tv/monitor: 163

1) boat: 653,
2) tv/monitor: 246
3) train: 59
4) bottle: 58
5) car: 13
6) diningtable: 4
7) potted plant: 1

参考までに、以下は trainval データセットを利用して訓練したモデルを使用した結果です。つまり概ね正解の画像です :

aeroplane: 15576

train: 27851

boat: 6558

 

ImageNet 画像で検証

最後に trainval で訓練したモデルを使用して、(クラスキャットのマスコット猫に続いて) 定番の ImageNet 画像でテストしてみます。
全体的に位置判定は悪くないのですが、部分的に分類ミスも起きています。
* ImageNet 画像の元画像の版権は所有者に帰属します。

  • 概ね猫ですが、部分的に犬判定されています。

1) cat: 22245
2) dog: 5695
3) person: 675
  • 正面はバスですが、側面は電車判定です。

1) bus: 13323
2) train: 9010
3) boat: 1276
4) car: 118
5) tv/monitor: 8
  • 一見良さそうに見えますが、犬が馬と判定されています。

1) horse: 9419
2) person: 2046
3) car: 339
4) cow: 148
5) boat: 52
  • これは比較的上手くいっています。強いて言えば、ソファの面積がもう少し欲しいところです。

1) dog: 14863
2) cat: 9956
3) sofa: 4422

 
以上

AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com