TensorFlow で GoogLeNet (Inception モデル) を実装
深層 CNN については既に AlexNet と VGG を TensorFlow で実装して試してみましたが、締めくくりに GoogLeNet の実装に挑戦してみます。GoogLeNet は言うまでもなく、ILSVRC-2014 (ImageNet Large Scale Visual Recognition Challenge) の分類問題で優勝したネットワークです。
もちろん最新版の Inception-v3 については ImageNet によるトレーニング済みのモデルがダウンロード可能で、既に Android に組み込む ことができることも確認済みです。
参考 : トレーニング済みモデルの再利用方法については TensorFlow : Tutorials : 画像認識 を参照してください。
また自前のデータでトレーニングする場合でも fine-tuning すれば十分かもしれません。
GoogLeNet
冒頭にも書いたように、GoogLeNet は ILSVRC-2014 の分類問題で優勝したネットワークで、最新版 Inception-v3 は CNN の最高峰といっても良いでしょう。ちなみに「GoogLeNet」 は正式にはこの ILSVRC 2014 型モデルを指すコードネームのようで、ついでに言えば CNN の元祖 LeNet へのオマージュでしょう(多分):
テクニカルレポートは以下を参照してください :
但し、TensorFlow のチュートリアル内では Inception-v3 モデルへの言及が多いです :
アーキテクチャの説明は Going deeper with convolutions に詳しいので譲りますが、以下は TensorBoard のグラフ出力です。Inception が積層されています :
TensorFlow GoogLeNet & University of Oxford: 17 Category Flower Dataset
ImageNet を題材にすれば高い精度が出るのでしょうけど、VGG との比較もあって、題材は今回も University of Oxford が提供しているデータセットを取り敢えず使用しました。Dataset の詳細は 17 Category Flower Dataset を参照してください。
以下は損失グラフです。オレンジ色は AdaGrad、ターコイズ色は Adam です。それっぽいです :
※ RMSProp は同じ条件だと収束しそうになかったので断念しました。
トレーニング精度は以下 :
そして validation 精度 :
さすがに最高峰モデルと言えましょう。VGG バリエーション・モデルに圧勝です。
以上