Neural Network with Julia 〜Kaggleの文字認識(DeepLearning)の前処理〜

今回もNeural NetworkをJuliaで実装する方法についてご紹介します。

目次

1. 用いるデータ

今回用いるデータは、以下のページからダウンロードしました。

https://www.kaggle.com/c/street-view-getting-started-with-julia

コンペティションの題名は「First Step with Julia」となっており、Neural Networkをはじめてする人のためのよいたたき台となると思います。

今回の目標は以下のようなGoogle Street の写真から書かれているラベルの文字を認識することです。

このような画像のセットがたくさんある

2. Neural Networkを行うための前処理

Neural Networkを行うためにチェックすべきポイントです。ケースバイケースなのですが、必要となる場合も多いようです。

文字認識などの場合は画像をグレースケールに

カラー画像をグレースケールにすると1/3の情報量でよいことになります。これにより、調整するべきパラメータも減り、計算もはやくなります。

ラベルの統一

今回の例では英単語が入っています。何かと問題が起きるのはいやなので、それぞれ数字にラベル付けしましょう。

大文字から順番に

list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi......'

としておいて、ラベルAならば0を出力という設定にしておくと後々良さそうです。

画像の大きさを揃える

Networkに入れる前に画像の大きさがまちまちだと困ります。なので、大きさを全て揃える必要があります。

今回の例では画像の大きさがバラバラになっているので、大きさを(32,32)に統一するようにしました。

3. 実装したプログラム

画像データをNeural Networkに用いるデータにするため、pythonでhdf5形式のファイルを書き出しました。処理として、グレースケールにしたあと、大きさを統一し、またラベルを数字に変換しています。hdf5形式のファイルはデータのロードなどが高速でとても便利なようですよ。

これを実行すると、下のようなhdf5形式のファイルが出来上がります。(hdfViewで見ています)

hdf5形式のファイル

これで前処理は終了です。次の記事ではこのデータを用いてNeural Networkを動かしてみます。