LoginSignup
3
1

More than 5 years have passed since last update.

ChainerとOptunaで画像のよいAugmentationを探索してみた

Posted at

要約

  • random {vertical, holizontal} flip を使うべきかをOptunaで探索してみた
  • 3層MLP+MNISTの場合、共に不要という直感にあう結果になった
  • サンプルコードはgithubにて公開した

モチベーション

Optunaを使って何か作ってみたかった

大体以上ですべてなのですが少しだけ補足します。
OptunaのMLPの層数を探索するサンプルを眺めていた時に、AutoAugmentのことを思い出しました。(AutoAugmentの解説はこちらが簡潔でわかりやすかったです。)
Optuna公開からしばらくたちましたが画像認識の前処理探索に使った話をきかない(Qiitaにはなさそう)ので自分で作ってみました。

実行と結果

サンプルを実行すると最終的に以下のような結果がでてきます。

$ python minimum_autoaugment.py
(途中の出力を省略)
$ python FrozenTrial(trial_id=4, state=<TrialState.COMPLETE: 1>, 
value=0.02066851265822789, datetime_start=datetime.datetime(2019, 3, 20, 9, 
54, 27, 523348), datetime_complete=datetime.datetime(2019, 3, 20, 9, 56, 6, 
612511), params={'vertical flip': False, 'horizontal flip': False}, 
user_attrs={'main/loss': 0.03885125317600872, 'main/accuracy': 
0.9896055437100213, 'validation/main/loss': 0.06722574303799038, 
'validation/main/accuracy': 0.9793314873417721, 'epoch': 10, 'iteration': 
4688, 'elapsed_time': 98.81312308297493}, system_attrs={}, 
intermediate_values={}, params_in_internal_repr={'vertical flip': 1, 
'horizontal flip': 1})

params は一番良かったときのパラメータ、user_attrsは一番良かった時のログレポートです。

作成したもの

githubにて公開しています。
私が実装をさぼったコンセプト確認のためのプロトタイプですので、以下の点は要改善かなと思っています。この記事がうけたらやります。

  • GPUを使っていない
  • MNISTを使うようハードコードしてある
  • MLPを使うようにハードコートしてある
  • 探索できるaugmentationが少ない

まとめ

画像認識における前処理方法をOptunaで探索するサンプルアプリを作成しました。
random flipの要否を3層MLP+MNISTの場合で検証し、不要という直感にあう結果が得られました。
サンプルコードはgithubにて公開しています。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1