画像認識と転移学習(VGG16)
このpartでは、
- VGG16
- 転移学習
- ファインチューニング
- 画像認識の流れ
の4つを解説します。
VGG16
ImageNetデータセットで事前にパラメータ学習されたモデル。1000クラスを分類可能。
Input:(channel,height,width)=(3,224,224) Output:1000
転移学習
パラメータ学習済みモデル(VGG16など)をベースに、最終出力層を分類したいクラス数に付け替え、さらにその数層手前までを自前のデータセットで学習し直す手法。少ないデータセットで高い精度を出すことが可能。
ファインチューニング
学習済みモデルを利用するという点で転移学習に近い手法だが、違いとして出力層だけでなく全層自前のデータセットで学習し直す(チューニングする)という点が挙げられる。一般的には入力層付近の学習率は小さめに、出力層に近づくに連れて大きくしていく。
画像認識の流れ
1.前処理クラス…画像をリサイズしたり反転・回転させたり標準化したりすることで、
- モデルの入力サイズに調整
- データの水増し
- 精度の向上
などが期待される。
2.パスリスト作成クラス…今いる階層から自前のデータまでのアクセスルートをパスとして取得し、リスト化する。
3.データセットクラス…上記1と2を組み合わせ、(前処理済み画像,正解クラス)のタプルを作る。
4.データローダークラス…3で作成した(前処理済み画像,正解クラス)が画像枚数分あるリストから、ミニバッチサイズに応じてデータを抽出する。
5.モデルを学習させる関数…実際に学習を行う場所。
- ネットワークの定義(or既存モデルのロードと層の付け替え)
- 損失関数の定義(分類→交差エントロピー、回帰→平均二乗誤差が一般的)
- 最適化手法の定義
- エポック数の定義