【keras】InceptionResNetV2の転移学習【犬猫判別5】

こんにちは、のっくんです。

今日はしばらく放置していた犬と猫の画像判別をやっていきたいと思います。

前回の記事ではVGG16のファインチューニングを頑張ってやっていました。

【Keras】転移学習とファインチューニング【犬猫判別4】

上記の記事ではバリデーション精度は94%でした。

今回は新しくInceptionResNetV2といういかにも強力そうなモデルを使って転移学習してみたら、97%まで精度が上がったのでその方法を記事にしたいと思います。

スポンサーリンク

データ拡張

ここは毎度同じみのデータ拡張。

訓練データだけデータ拡張子して検証データは拡張しません。

使用するネットワーク

InceptionResNetV2をダウンロードして、全結合層を付け加えます。

最後の行で凍結させています。

ネットワークの内訳は以下の通り。

このモデル、5400万もパラメータがあります。

私が今までみた中で最大のパラメータ数です。

ジェネレータで学習させます。

いきなり1エポック目からいきなり高精度が出ています。

訓練とバリデーションでこんなにかけ離れてる学習結果は初めてみました。

なんという高精度。

最後にテスト画像を使って評価します。テストデータのジェネレータを評価するevaluate_generatorを使います。

97%が出ました。

ファインチューニングや特徴量抽出など色々やり方はありますが、有望なモデルの転移学習の効果が1番大きいですね。

参考

https://towardsdatascience.com/transfer-learning-and-image-classification-using-keras-on-kaggle-kernels-c76d3b030649