1 教師データができたので学習準備をする
データセットはその2で作成したものを使用し、ネットワークはCNNとして、Neural Network Console(以下NNC)にサンプルとして含まれる をロードする。INPUTレイヤーの設定を入力画像に合わせて(3,160,160)に設定、出力部分を画像分類となるようSoftmax、CategoricalCrossEntropyに変更する。
2 学習を始める
NNCでTrain Startし、しばし待つ。
クラウド版は有料なのでローカル環境で行う。
GPUはRTX 2070SUPERなのでそこそこのスピードで動いてくれるはず。
3 評価をする
今回7つの分類で行っているので、ランダムで分類したとしても正解率は14.2%ぐらいになるはず。これを大幅に超えていれば良しとしよう。NNCでは推論後、EVALUATIONタブのConfusionMatrixからAccuracyから確認できる。
4 大まかなネットワーク構造を試行錯誤する。
CNNの検討
Resnetの検討
ImageAugmentationの追加
ImageAugmentationの追加
いくらかやってみたが、CNN+ImageAugmentation+ImageAugmentationが好成績。Accuracy
0.55を超えるものが出てきた。Resnetも18から50まで試してみたが重い割には精度が出ない。
教師データの数が少ないことも影響しているのだろうか。またGPUメモリーをたくさん必要とするため
Batchサイズを小さくせざるを得ず、このあたりの影響も気にかかる。
5 構造自動探索機能を使う
NNCの構造自動探索機能にはいくつかの機能があるが、今回は演算量を無視し、エラー最小化を目指して最適化の指示を出してみる。具体的にはNetwork Feature + Gaussian ProcessとErrorを選択する。あとは放置。
6 参考にしたもの
NNCチュートリアル:Exif情報を利用し簡単にオリジナルデータセットを用いた実験を行う
Deep Learning入門:Attention(注意)
NNCチュートリアル:Image Augmentationレイヤーによる画像データの水増し
Deep Learning精度向上テクニック:Data Augmentation
NNCチュートリアル:構造自動探索機能を試す
Windows版チュートリアル:5分で構築するCNN (Convolutional Neural Networks)