ホーム » AlexNet

AlexNet」カテゴリーアーカイブ

Keras / TensorFlow : MobileNet と Inception-ResNet の概要と性能評価

Keras / TensorFlow : MobileNet と Inception-ResNet の概要と性能評価
作成 : (株)クラスキャット セールスインフォメーション
作成日時 : 12/09/2017

 

MobileNet は 6 月に Google Research Blog でアナウンスされたモデルで、TF-Slim 用のモデルのチェックポイントも併せて公開されました。その名前から分かるように、モバイルや組み込み用アプリケーションのようなリソースに制約のある環境でも上手く動作するように設計されたモデルです。

Keras 実装の MobileNet も Keras 2.0.6 から利用可能になりましたので、今回は University of Oxford の VGG が提供している 102 Category Flower Dataset を題材にして、MobileNet の性能を評価してみます。

また、Keras 2.0.9 から Inception-ResNet の実装も提供されていますので、併せて評価します。
比較対象は定番の AlexNet, Inception-v3, ResNet-50, Xception を利用します。

 

MobileNet 概要

MobileNet は6月に Google Research Blog で発表されました :

併せて TF-Slim のチェックポイントファイルと技術ペーパーも公開されています (後述)。

上のブログ記事を簡単に要約しておきますと :

  • 近年、ニューラルネットワークが視覚認識技術の最先端を推し進めることで、深層学習はコンピュータ・ビジョンの大きな進歩に貢献してきました。
  • 物体、ランドマーク、ロゴやテキスト認識のような視覚認識技術の多くが Cloud Vision API を通してインターネット接続デバイスに提供されていますが、他方、モバイル・デバイスの増え続ける計算パワーは (いつでもどこでも、インターネット接続に関わらず、) これらの技術をユーザの手に配布可能です。
  • けれども、モバイルや組み込みアプリケーション上の視覚認識には多くの課題があります — モデルはリソース制約のある環境で、i.e. 制限された計算力、消費電力やストレージのみを使用して高い精度で迅速に動作しなければなりません。
  • 今日、モバイルや組み込みアプリケーションのための制限されたリソースに留意する一方で、精度を効率的に最大化するためにデザインされた、TensorFlow のためのモバイル・ファーストなコンピュータ・ビジョン・モデルのファミリである、MobileNet のリリースを発表します
  • MobileNet は様々なユースケースのリソース制約に適合するためにパラメータ化された、小さく、低遅延で低消費電力なモデルです。Inception のような他のポピュラーなラージスケール・モデルが使用される方法と同様にして、このモデルは分類・検出・埋め込みやセグメンテーションのために構築可能です。
  • このリリースは TF-Slim を使用した TensorFlow 実装の MobileNet のためのモデル定義を含みます。そしてあらゆるサイズのモバイル・プロジェクトでの利用のために、16 個の事前訓練された ImageNet 分類チェックポイントも含んでいます。モデルは TensorFlow Mobile によってモバイル・デバイス上で効率的に実行可能です。

そして参照先として :

 

Inception-ResNet 概要

本記事の主題ではありませんが Inception-ResNet の基本的な発想は、
(誰しも考えることですが) Inception アーキテクチャに残差接続を導入するメリットがあるか否かです。
詳細については以下のペーパーを参照してください :

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

近年、非常に深い畳み込みネットワークは画像認識性能における最大限の進歩の中心で在り続けています。一つの例は Inception アーキテクチャであり、これは比較的低い計算コストで非常に良い性能を獲得できることを示してきました。最近、より伝統的なアーキテクチャと結合した残差接続の導入は 2015 ILSVRC チャレンジにおいて最先端の性能を生成しました ; その性能は最新世代 Inception-v3 ネットワークと同様のものです。このことは、Inception アーキテクチャを残差接続と結合するメリットがあるかどうかという疑問を生じます。ここで、残差接続を有するトレーニングは Inception ネットワークのトレーニングを本質的に加速するという明確な実証的なエビデンスを与えます。残差 Inception ネットワークが、thin margin による残差接続がない高コストな Inception ネットワークよりも同様に優れていることの何某かのエビデンスもまたあります。残差と非残差 (= non-residual) Inception ネットワークの両者に対して幾つかの新しい合理化されたアーキテクチャも提示します。これらのバリエーションは ILSVRC 2012 分類タスクにおいて単一フレームの認識性能を本質的に改善します。更に、正当な活性化スケーリングが非常にワイドな残差 Inception ネットワークのトレーニングをどのように安定させるかも示します。3つの残差と1つの Inception-v4 のアンサンブルで、ImageNet 分類 (CLS) チャレンジのテストセット上で 3.08 パーセント top-5 エラーを獲得しました。

 

データセット : 102 Category Flower Dataset

今回の題材は、University of Oxford の VGG が提供している、102 Category Flower Dataset です。
以下は最初の 100 画像ほどを示しています :

 

トレーニングと評価

MobileNet, Inception-ResNet の他にも、比較のために AlexNet, Inception-v3, ResNet-50, Xception も同じ条件でトレーニングして評価してみました。

※ MobileNet のハイパー・パラメータは (Keras 実装の) デフォルト値を使用しています。
※ トレーニングは 100 エポックを上限に実行しています。

損失

エポック数に対する収束の速さは、AlexNet を別にすれば、
Xception, Inception-ResNet, MobileNet > ResNet-50, Inception といったところでしょうか。
いずれも 0 にきれいに漸近しています :

検証精度

検証精度は Inception-ResNet > Xception > Inception-v3 = MobileNet > ResNet-50 です。
これは予想通りの結果と言えましょう :

テスト精度

テスト精度も検証精度と同様ですが、Inception-v3 の方が MobileNet よりも多少良い感じです :
Inception-ResNet > Xception > Inception-v3 >= MobileNet > ResNet-50。

AlexNet 64.12 %
Inception-ResNet 88.24 %
Inception-v3 80.78 %
MobileNet 77.84 %
ResNet-50 73.63 %
Xception 84.12 %

パラメータ数

MobileNet の強みの一つはその (トレーニング可能な) パラメータ数にあります。
比較的新しいモデルのパラメータ数は 20 million が一つの目安ですが、MobileNet は僅か 3.3 million です。
逆に Inception-ResNet は 54 million あります :

AlexNet 22,000,294 
Inception-ResNet 54,432,966 
Inception-v3 21,977,350 
MobileNet 3,311,526 
ResNet-50 23,743,590 
Xception 21,015,950 

トレーニングの速さ

パラメータ数の少なさはトレーニングの速さに直結します。
以下は 1 ステップあたりにかかる時間と、1 時間に遂行可能なステップ数を算出したものです :

alexnet 1.30 min/step 46.41 steps / hour
inception_resnet 19.84 min/step 3.02 steps / hour
inception_v3 9.60 min/step 6.25 steps / hour
mobilenet 3.52 min/step 17.07 steps / hour
resnet50 11.34 min/step 5.29 steps / hour
xception 10.35 min/step 5.80 steps / hour

以下は後者 (1 時間に遂行可能なステップ数) を視覚化したものです。
(AlexNet を別にすれば、) MobileNet のトレーニング効率が高いことが分かります :

 

以上

TensorFlow : 画像分類 : ResNet, Inception-v3, Xception 比較

TenosorFlow : 画像分類 : ResNet, Inception-v3, Xception 比較

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

 

ImageNet のような現実的なサイズのデータセットに対して既存の CNN モデルを利用する場合、Inception を利用するか ResNet を利用するか選択に迷うことも多いでしょう。更には Xception も選択肢に入れることが可能になりました。

そこで比較的モデルの規模感が類似している Inception-v3, ResNet-50 そして Xception を定番の2つのデータセットで訓練して損失と精度グラフを比較してみました。(参考のために AlexNet も試しています。)

* Inception-v4 (Inception-ResNet) についてはまたいずれ試す予定です。

Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi
(Submitted on 23 Feb 2016 (v1), last revised 23 Aug 2016 (this version, v2))

 

Xcetpion 概要

Inception や ResNet は良く知られていますのでここでは Xception についてのみ簡単に補足説明しておきます。Xception は François Chollet 氏が考案したモデルですが “Xception” は “Extreme Inception” を意味するそうです :

Xception: Deep Learning with Depthwise Separable Convolutions
François Chollet
(Submitted on 7 Oct 2016 (v1), last revised 4 Apr 2017 (this version, v3))

ここでは Abstract の翻訳のみを掲載しておきます :

畳込みニューラルネットワークの Inception モジュールの標準的な畳込みと depthwise separable convolution 演算 (pointwise convolution が追随する depthwise convolution) の間の中間的なステップとしての解釈を提案します。この観点からは、depthwise separable convolution は最大限の数のタワーを持つ Inception モジュールとして理解されます。この観察は Inception によりインスパイアされた新しい深層畳込みニューラルネットワーク・アーキテクチャの提案へと導かれ、そこでは Inception モジュールは depthwise separable convolutions に置き換えられます。Xception と呼称する、このアーキテクチャは (Inception V3 がそのために設計された) ImageNet データセット上で Inception V3 より僅かに優れた性能で、そして 350 million 画像と 17,000 クラスから成るより大きな画像分類データセット上では本質的に優れた性能であることを示します。Xception アーキテクチャは Inception V3 と同じ数のパラメータを持つので、パフォーマンス・ゲインは増加したキャパシティによるものではなくモデル・パラメータのより効率的な使用によるものです。

Xception はパラメータ削減によるモデル軽量化を目指す方向性を取っていますが、簡単に言えば Inception の改良版です。Inception モジュールも包括するアーキテクチャとして提案されています。

具体的には、Inception モジュールを全体的に depthwise separable convolution 層をベースに置き換えた線形スタックですが、前提条件として、畳込みニューラルネットワークの特徴マップにおける cross-channels correlations と spatial correlations のマッピングは完全に切り離すことができるという仮説を採用しています。

 

ImageNet : 5 flowers synsets

最初に(TensorFlow と一緒に提供されている、)ImageNet の5つの flowers synsets – daisy, dandelion, roses, sunflowers, tulips – を題材として、ResNet-50, Inception-v3, Xception モデルを訓練してみました。比較参考のために AlexNet も併せて訓練しています。

細かいハイパーパラメータは省きますが、AlexNet は(短時間で訓練可能なので)500 epochs 訓練し、他は 200 epochs 訓練しました。

損失比較

どれもきれいに損失は減少しますが、強いて言えば、AlexNet は振動が大きく、また ResNet-50 は減少が比較的緩やかです。

AlexNet

ResNet-50

Inception-v3

Xception

テスト精度比較

テスト精度は(損失から推測できるように)AlexNet は振動が激しく、ResNet-50 は緩やかに上昇します。
最後の 10 epochs のテスト精度としてはおおよそ : AlexNet : 81 %; ResNet-50 : 82 %; Inception-v3 : 87 %; Xception : 90 % が得られました。

AlexNet

ResNet-50

Inception-v3

Xception

 

University of Oxford: 17 Category Flower Dataset

続いて、University of Oxford が提供している古典的な題材を使用しました。データセットの詳細は 17 Category Flower Dataset を参照してください。

損失比較

損失はいずれもきれいに減少しますが、Xception は訓練中に損失 0 を叩き出しました。

AlexNet

ResNet-50

Inception-v3

Xception

テスト精度比較

AlexNet と Inception-v3 については明らかに over-fitting が見られました。 
(over-fitting 前の) 最後の 10 epochs のテスト精度としてはおおよそ : AlexNet : 79 %; ResNet-50 : 80 %; Inception-v3 : 79 – 80 %; Xception : 89 – 90 % が得られました。

AlexNet

ResNet-50

Inception-v3

Xception

 

以上



TensorFlow AlexNet の特徴マップ/フィルタの可視化 (2)

TensorFlow AlexNet の特徴マップ/フィルタの可視化 (2)

TensorFlow AlexNet の特徴マップ/フィルタの可視化 の続きです。
AlexNet モデルで University of Oxford: 17 Category Flower Dataset を題材にしています。
先のページでは特徴マップを表示しましたが、このページではフィルタを視覚化します。

フィルタの視覚化

【Conv1 層のフィルタ】
oxf17f_filters_conv0.11x11

チャネル毎にグレースケール化 :
oxf17f_filters_conv0.11x11.00

oxf17f_filters_conv0.11x11.01

oxf17f_filters_conv0.11x11.02

【Conv2 層のフィルタ(の例)】
oxf17f2_filters_conv3.5x5.00

oxf17f2_filters_conv3.5x5.01

【Conv3 層のフィルタ】
oxf17f2_filters_conv6.3x3.00

oxf17f2_filters_conv6.3x3.01

【Conv4 層のフィルタ】
oxf17f2_filters_conv8.3x3.00

oxf17f2_filters_conv8.3x3.01

【Conv5 層(最終層)のフィルタ】
oxf17f2_filters_conv10.3x3.00

oxf17f2_filters_conv10.3x3.01

 
以上

TensorFlow AlexNet の特徴マップ/フィルタの可視化

TensorFlow AlexNet の特徴マップ/フィルタの可視化

既に単純な ConvNet (CNN) モデルの畳込み層のフィルタと特徴(出力)マップを MNIST と CIFAR-10 を題材として TensorFlow で可視化しました(MNIST 特徴マップ / MNIST フィルタ / CIFAR10 特徴マップ & フィルタ)。

今回は AlexNet モデルでより実践的な題材: University of Oxford: 17 Category Flower Dataset を利用して特徴出力マップとフィルタを視覚化してみます。入力画像サイズは 227 x 227 と現実的なサイズになっています。
AlexNet については TensorFlow による AlexNet の実装 を参照してください。

17 Category Flower Dataset

題材は University of Oxford が提供している 17 Category Flower Dataset です。
以下のサンプルのような 17 種類の花のデータセットです :
oxf17f2_samples

以下の2つのサンプルに注目して出力マップを追ってみます。
この2つを選んだのは特徴が分かりやすいと考えたためです :

oxf17f2_sample.06

oxf17f2_sample.09

特徴マップの視覚化

AlexNet を 17 Category Flower Dataset で 90 % 前後まで精度をあげた上で出力マップを表示してみました。

【Conv 1 層の出力マップ】
oxf17f2_convout1.06

oxf17f2_convout1.09

【MaxPooling 1 層の出力マップ】
oxf17f2_maxpoolout1.06

oxf17f2_maxpoolout1.09

【Conv 2 層の出力マップ】
oxf17f2_convout2.06

oxf17f2_convout2.09

【MaxPooling 2 層の出力マップ】
oxf17f2_maxpoolout2.06

oxf17f2_maxpoolout2.09

【Conv 5 層(最終層)の出力マップ】
oxf17f2_convout5.06

oxf17f2_convout5.09

【MaxPooling 5 層(最終層)の出力マップ】
oxf17f2_maxpoolout5.06

oxf17f2_maxpoolout5.09

少しページが長くなったのでフィルタ画像は TensorFlow AlexNet の特徴マップ/フィルタの可視化 (2) に分けました。

 
以上

TensorFlow で ConvNet VGG モデルを実装

TensorFlow で ConvNet VGG モデルを実装

深い層の CNN については既に TensorFlow で AlexNet を実装 して University of Oxford: 17 カテゴリー Flower データセット及び ImageNet から5つの flowers synsets – daisy, dandelion, roses, sunflowers, tulips – を題材に試していますが、今回は AlexNet の発展形とも言える VGG モデルを実装してみました。

VGG モデル

VGG モデルは University of Oxford の VGG チームが提出した、層の深さを追求したモデルの通称で ILSVRC-2014 (ImageNet Large Scale Visual Recognition Challenge) において優秀な成績をおさめています。
分類問題では GoogLeNet についで2位の好成績です :
imagenet_challenge2014b

 
テクニカルレポートは以下を参照してください :

Very Deep Convolutional Networks for Large-Scale Visual Recognition
Karen Simonyan & Andrew Zisserman

VGG モデルは AlexNet を自然な形で発展させたもので、元々は Caffe で実装され 16 層のものと 19 層のものがあります。19 層の内訳は 3 convolutional layers * 5 + 4 FC です。

元祖のモデルをそのまま使うのも面白くないので、各種バリエーションを参考にして少し層を追加したモデルで試してみました。総計は 21 層になり、層数が多いので TensorBoard のグラフ画像を見やすく分解したものが以下になります(画像はいずれもクリックして拡大できます)。最左下が入力で以後、下から上、左から右へと続きます。最右上が Softmax です :

vgg_graph_components2

vgg_graph_overall2-h1280
モデルを簡単に書けば以下のような感じで、右画像は整形していない TensorBoard のグラフ・ネットワーク出力です(TensorBoard の出力では bottom/top がそれぞれ input/output です) :

CONV
CONV
POOL
CONV
CONV
POOL
CONV
CONV
CONV
POOL
CONV
CONV
CONV
POOL
CONV
CONV
CONV
POOL
FC
(DROPOUT)
FC
(DROPOUT)
SOFTMAX

TensorFlow VGG & University of Oxford: 17 Category Flower Dataset

題材は今回も University of Oxford が提供しているデータセットを使用しました。というか、VGG モデルは元々この題材のために設計されたはずです。Dataset の詳細は 17 Category Flower Dataset を参照してください。

結果ですが、トレーニング自体は上手くいきました。以下の画像は損失グラフで 0 に漸近しています :
vgg_train_loss2

 
そして精度。もう少しトレーニングして学習率が小さくなれば更に良い精度になりそうです :
vgg_train_acc2

 
しかし検証精度は 60 % 前後で収束しています。
過学習という感じでもなく、題材は必ずしも易しくはないですが 70 % は欲しいところです :
vgg_valid_acc2

AdaGrad を使いましたが、他のオプティマイザーでも結果は変わらない気がします。本来のモデルは題材に適合しているはずですので、モデルを少し変形したのが良くなかったかもしれません。いずれ元祖モデルで試してみたいと思います。

 

以上

TensorFlow による AlexNet の実装

TensorFlow による AlexNet の実装

AlexNet

tfnet_alexnet_flowers17
CNN の具体的な応用例として、TensorFlow で AlexNet を実装してみました。
AlexNet の詳細は ImageNet Classification with Deep Convolutional
Neural Networks
を参照してください。

モデルを簡単に書けば以下のような感じで、右画像はTensorBoard のネットワーク出力です(TensorBoard の出力では bottom/top が input/output です) :

CONV
POOL
NORM
CONV
POOL
NORM
CONV
CONV
CONV
POOL
NORM
FC
(DROPOUT)
FC
(DROPOUT)
FC
 

題材は2つで、Oxford の 17 Category Flower Dataset と ImageNet ベースの Flowers 5 です。

TensorFlow AlexNet & University of Oxford: 17 Category Flower Dataset

tf_alexnet_flowers17_loss2
University of Oxford が提供してくれている、古典的な題材です。
Dataset の詳細は 17 Category Flower Dataset を参照してください。
1.0e+3 epochs の訓練で 75 % (*1) 前後の精度を獲得できました。

画像は損失グラフです。

*1) 補足: 再挑戦し、最終的には精度を 87.7 % まで上げられました。(01/28/2017)

TensorFlow AlexNet & ImageNet

それから、(こちらも定番ですが)ImageNet の5つの flowers synsets – daisy, dandelion, roses, sunflowers, tulips – を題材として試してみました。

3.5e+2 epochs 訓練しましたが下左画像の損失グラフを見ると、まだ訓練不足のようです。

下右図が精度で 80 % 程度です。シンプルな CNN モデルだと 75 % くらいだったので、精度はかなりあがっています。

alexnet_imagenet_5flowers_loss

alexnet_imagenet_5flowers_accuracy
 

以上

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