人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、Deep Learning、Kerasに関する記事が多いです。



Dogs vs. Cats Redux

今回はPractical Deep Learning for CodersのLesson1の結果をまとめてみた。題材はKaggleの犬・猫分類。

Dogs vs. Cats Redux: Kernels Edition | Kaggle

以前やったVGG16のFine-tuningによる犬猫認識(2017/1/8)と同じタスク。前回は1000画像の小セットだけでFine-tuneしたが、今回は25000画像の全データを使ってFine-tuneしてKaggleに投稿するところまで通しで試した。

Jupyter Notebookはこちら

オリジナルのコードはPython2でKeras1 (Theano backend)でしか動作しない。そこで、今回は

  • Python3 と Keras2 (Tensorflow backend) を使って再実装する
  • 提供されているutils.pyvgg16.pyは使わずにスクラッチからKeras APIだけで書く

でやってみた。最終的にバリデーション精度は98.4%だった。テスト精度は残念ながらわからない。Kaggleではテストセットに正解ラベルが付いてないし、投稿してもLogLossしか表示されないから。

Notebookには全部載せてあるが一部の実行結果だけ載せておこう。上の数字は猫である確率なので0に近いほど犬で1に近いほど猫に分類されたことを意味している。ちゃんと分類できている。

f:id:aidiary:20170603212804p:plain

Kaggleにsubmitしてみた結果がこちら。

f:id:aidiary:20170603211256p:plain

スコア(LogLoss)0.1程度だと460位くらいなので全然ダメ。まあVGG16をそのまま使っただけなのでこんなものか。今後、改良して順位がどう上がるか見ていこうと思う。

Jupyter Notebookの内容をコピペしてブログに貼ろうと思ったんだけ止めた。そのまま見た方がわかりやすいしね。今後はしばらくこのスタイルで行くかも。