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
以上