はじめに
本記事は、以下の手順をまとめた記事です。
- ABEJA Platformのテンプレートを使用して、画像分類の機械学習モデルをノンプログラミングで学習する
(本記事の後編はこちら)
ABEJA Platformのテンプレートを使用して、ノンプログラミングで機械学習モデルをデプロイする
https://qiita.com/yushin_n/items/fb338ca9bd3c685ad691
事前準備
- データセットの用意
- 今回はKaggleのFlowers Recognitionのデータセットをローカルにダウンロードして、こちらのQiitaの記事の手順を参考にABEJA PlatformのDatasetsを作成しました。
Job Definitionの作成
まずは、コンソールのTrainingのJob Definitionのページから、Job Definitionを作成します。no sampleを選択します。
その後、バージョンを作成します。タブのTemplatesをクリックして、Image ClassificationのCPUまたはGPUを選択します。Datasetには、モデルに学習させるデータセット名を指定します。aliasには、trainと入力します。
2019年6月21日現在、テンプレートは画像分類(データセットは1つ、ラベルのカテゴリは1つ)にのみ対応していますが、テンプレートの種類は順次追加される予定です。
JobのVersion 1が作成されました。
続いて、Jobsをクリックして、学習ジョブを作成します。Job Definition Versionとして、先ほど作成したバージョン1を選択します。また、インスタンスタイプとして、gpu-1を選択します。
学習ジョブが実行されました!自分の環境では、ジョブがPendingからRunningになるまでに、15分程度かかりました。
学習開始後にTensorBoardのボタンをクリックすると、TensorBoadの画面が開き、Training Loss, Training Accuracy, Validation Loss, Validation Accuracyのデータを可視化できます。
TensorBoardを眺めながら、学習が終わるのを待ちます。・・と思ったら、7エポック目で学習がSuccessとなりました。EarlyStoppingが実装されているため、Validation Lossに変化がなくなるとその時点で学習が終了します。GPUを無駄に使用しないために、よい機能ですね。
結果、Validation Accuracyは、82.9%でした。
このMediumの記事によると、同じデータセットを使って以下の結果が出たとのことです。ABEJA Platformのテンプレートは、ResNet-50には及びませんでしたが、他2つより、よい結果でした。
Model | Accuracy for validation samples |
---|---|
Built from scratch | 0.72 |
Built by VGG19 | 0.40 |
Built by ResNet-50 | 0.92 |
なお、このテンプレートは、各種ハイパーパラメーターをチューニングすることができます。やり方は非常に簡単で、学習ジョブを作成する画面にて、環境変数としてパラメーターを指定するだけです。指定できる環境変数の一覧は、こちらを参照下さい。
https://github.com/abeja-inc/platform-template-image-classification
Dropoutを0.7に変えると、Validation Accuracyが85.4%まで上がりました!
まとめ
本記事では、ABEJA Platformのテンプレートを使用して、画像分類の機械学習モデルをノンプログラミングで学習する手順をまとめました。今後、学習したモデルをノンプログラミングでWeb APIとしてデプロイできる機能も追加される予定です
追記:2019年6月28日にノンプログラミングでWeb APIをデプロイできる機能が追加されました!
参考
ABEJA Platformは、トライアルも提供しています。気になられた方は、是非、お気軽にお問い合わせください。また、フォーラムもありますので、是非、ご活用ください。
ABEJA Platformに関するお問い合わせ
https://abejainc.com/platform/ja/contact/
ABEJA Platform Forum
https://forums.abeja.io/