LoginSignup
39

More than 5 years have passed since last update.

posted at

updated at

Kerasを用いたCIFAR-10チュートリアル

お知らせ

これまでこの記事でチュートリアルの内容を公開していましたが、規模が大きくなり更新が二度手間になるので、詳しい内容はGithubのノートを参照していただくようにしました。そのほうが最新の内容をフォローできると思うので、良いのではないかと考えました。なお、Githubのほうでの更新については、継続してこちらのページでお知らせするつもりです。

リポジトリはこちら
チュートリアルの内容のみご覧になりたい方はこちらから
なお、チュートリアルの内容でエラー等が出た場合は、記事へのコメントかGithubのissueページでご報告いただけるとうれしいです。

  • CIFAR-10 チュートリアル: この記事の内容
  • CIFAR-10 チュートリアル[付録]: ちょっとしたTips
  • CIFAR-10 チュートリアル[転移学習]: CIFAR-10を用いた転移学習について。 いつか記事にするかも。
  • dltパッケージの使い方/: Fashion-MNISTを使ってdliprパッケージの使い方を簡単に解説
  • results/: CIFAR-10 チュートリアルの出力結果を保存
  • images/: 例の画像やその他画像を保存
  • -tlタグ: CIFAR-10 チュートリアル[転移学習]で得られた結果

更新履歴

  • 2018/02/03: Githubからクローンしなくても、チュートリアルをウェブサイトとして見れるように整えました。
  • 2018/01/20:
    • dliprパッケージの使い方に関するドキュメントを追加しました。Qiitaの記事はこちらから
    • QiitaからGithubへメインドキュメントを移行しました。
    • dliprからdlt(Deep Learning Tools)へ名称変更
  • 2018/01/19: confusion matrixに関する不具合を修正しました。
  • 2018/01/18: confusion matrixの出力でdliprパッケージのnp.histogram2dに起因するエラーが発生しているため、confusion matrixの出力に関する記述を削除しました。Githubのほうのノート構成等を変えました。付録を本論から独立させ、実行しやすくしました。
  • 2017/11/28: Kerasのメソッドをtensorflowから読み出す方式から、直接Kerasからインポートする形に変更.
  • 2017/07/19: githubの方のノートの更新がまとまってきたので、Qiitaに反映させました。説明らしい説明を加えてみましたが、少しくどいところがあるかも。いずれ直します。
  • 2017/07/17: データの中身を見るところで混乱する可能性があった部分を修正.
  • 2017/06/20: dliprファイルに対する煩雑な準備を省くために、(動作環境を満たした) 任意の環境下で実行できるように新たに公開し直しました。こちらからどうぞ。

CIFAR-10 チュートリアル

1. はじめに

このチュートリアルでは、CIFAR-10と呼ばれる画像分類問題を扱います。CIFAR-10は5万枚の32x32ピクセルのカラーの画像データと、それを分類する10個のラベル「飛行機、自動車、鳥、猫、鹿、犬、蛙、馬、船、トラック」で成り立っています。より細分化されたラベルに分類するCIFAR-100というものもあり、こちらはラベルが100個ついています。どちらも基本的には同じものなので、今回はCIFAR-10を使ってみます。

また、実装にはKerasを使います。Kerasは教師なし学習には使えませんが、CIFAR-10やMNISTを代表する典型的な機械学習の問題を扱う上においては、Kerasで十分だと思います。さらにKerasはシンプルなネットワーク(といっても一方向のネットワークだけではなく、分岐するようなもの、RNNなど)に関しては非常に簡単に実装できるので、初心者の方も(生のTensorflowよりは)何やっているか理解しやすいと思います。このチュートリアルでは、Kerasの実装法も(簡単にですが)説明しているので、Kerasを知らない方も読み進めることができるのではないかと思います。詰まった際は公式ドキュメントを参照ください。

このチュートリアルは私が大学の講義で学んだ内容をベースにしているので、私自身が理解するのに時間がかかったところなどは余計に説明を加えました。全体的に冗長な感じは否めませんが、あえて残すことで似たような悩みを持つ方に役立つのではないかと考えています。

予備知識&想定読者
- 深くは理解できていないが、MNIST for beginnersはやってみた。が、その後が続かない。
- 機械学習の背景については一通り勉強してみた(「ゼロから作るDeep Learning」)
- Kerasを使ってCNNをやってみたい。

このチュートリアルの特徴

  • やること

    • KerasでCIFAR-10をやってみた。
    • 機械学習の可視化を独自のパッケージ(dlt)でやってみた。
    • このチュートリアルは自己完結型となっており、指示に従えば、(環境さえ整えば)簡単に実行することができる。
  • やらないこと

    • 機械学習とはなにか
    • Tensorflowについて
    • 精度を高めること(ハイパーパラメータの調整法など)

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
What you can do with signing up
39