TensorflowとiOS10のカスタムキーボードで手書き文字認識キーボードを作る その1

TensorflowとiOS10のカスタムキーボードで手書き文字認識キーボードを作る その1

機械学習。それは私の目標でもあり、ライフワークでもあります。プログラムに比べたら若干未熟ではありますが、この記事を通して仲間を見つけるため何回かに分けてbitwaveに寄稿したいと思います。質問・相談・ツッコミ歓迎いたします。

今回はtensorflowを使ってiOSのカスタムキーボードで手書き文字の認識をし表示するところまでやってみました。

tensorflow/iOS10と書かなくてもいい気がしたのですが、アクセス数狙ってつけてみました。どうもすません。

まずは出来上がりはこちら

image03

手書き文字がなんなのかちゃんと認識してくれています。

学習回数や方法など、詰めていない部分があるので、正答率は70%くらいですが、機械学習の素人でもここまでやれるのが面白いところですね。

さてこの記事を目的をもって閲覧している方は大きく2種類になるかと思います。
・機械学習/深層学習やtensorflowに興味が湧いてきた
・学習させたデータをどうやってアプリなどとつなげて活用しようか
 tensorflowのサンプルのmnistで数字の認識があるのでうまく流用できないか
などなど

私も専門ではないので、色々な書籍や動画を見ながら始めたタイプですので試行錯誤している真っ只中という感じです。

今回は手書き文字認識から始めるのではなく、機械学習を学んだ上で参考になったものを紹介いたします。

機械学習で一番勉強になったもの

機械学習を1から勉強を始めると、プログラムを勉強し始めの若かりし自分を思い出すくらい、訳がわかりませんでした。いや、言ってることはわかるんだけど、具体的にどうやって始めたらいいの?という気持ちです。

私自身もネットやブログでお勧めしてある幾つかの書籍を購入しました。
例えばこんなものです。

はじめてのパターン認識

Python機械学習プログラミング

深層学習(機械学習プロフェッショナルシリーズ)

インターネッツ界隈ではすごく評判がいい書籍ではありますが、みなさん頭良すぎでしょ。。。

そんな中私は1つの動画を見つけるにいたりました。
これをきっかけに、これらの本も「あ〜こういうこと言ってたんだ」みたいなことが少しづつわかるようになってきたのです。

それはこちら、
https://www.coursera.org/learn/machine-learning
コーセラはスタンフォード大学の教授によってつくられたオンライン教育システムです。

創設者のAndrew Ngさんが機械学習についてとってもわかりやすく解説していて、今までの機械学習の勉強の中で一番わかりやすいものでした。

登録は無料でいくつかのコースや機能の開放は有料になります。

このコースは動画見るだけなら無料で全部閲覧ができます。
ちなみに英語が心配な方でも安心。有志が和訳してくれているので、動画に日本語の字幕が表示されます(もしかしたら最初の幾つかは英語しかないかも。。。)ありがたい限りです。

機械学習とは

私が説明するより、上のコースに登録して動画をみてください!

【学んでいく上で用意した環境】
さて今後何回かにわけてご紹介していく上で、私が構築した環境についても説明したいと思っています。

1:Docker for Mac
 ローカルマシン上でDockerを簡単に使えるサービス

2:scikit-learn
 機械学習用のライブラリー(pythonで扱います)

3:tensorflow
 深層学習が簡単に構築できるライブラリー(pythonで扱います)

4:Jupyter Notebook
 2や3をブラウザ上で実行確認ができる環境です

5:heroku
 作ったwebアプリやapiを無料から始めることのできるPaasです。

手書き文字認識ができるまで

さて早速Tensorflowの紹介から入りたいところなのですが、なんていったって記述の仕方が今までのプログラムと違いすぎるので、まずは機械学習のアルゴリズムを簡単に扱えるscikitlearnから説明していきたいと思います!

・dockerを使ってscikitlearn環境を構築する
・Jupyter Notebookで色々な機械学習アルゴリズムを試してみる
・インターネット上にあるデータで線形回帰や分類を試してみる
・TensorFlowを導入してみる
・TensorFlowを使ってひらがなを学習してみる
・学習したデータをwebアプリに反映する
・web apiにしてアプリと連携する

乞うご期待!!

コメント