目次
Raspberry Piで機械学習
なかなか面白そうな企画ですよね。
Pythonについて知っていて、機械学習(DeepLearningということではなく、クラシフィケーション、クラスタリングなど全般)について学習するにはとてもいい教材だと思います。
Numpyでゼロから作る機械学習より今風になってると思います。
【読書感想文】ゼロから作るDeep Learning Pythonで作るんだって・・・【ラジコン自動運転?】
sklearn
Pythonの機械学習のライブラリとして、大部分はsklearnというライブラリを使って体験していきます。いろいろなものの分類、回帰、クラスタリングなどをSVM(サポートベクターマシン)などや、パーセプトロン、ニューラルネットワークなどで機械学習できるんですね。
http://scikit-learn.org/stable/
https://qiita.com/ishizakiiii/items/0650723cc2b4eef2c1cf
ただバージョンによっていろんなエラーも出るようで、少しいろいろ調べる必要がありそう
僕の場合は、Pine64というボードだからかもしれません。。が、ニューラルネット系のMLP分類器が読み込めないっていうエラーが出てしまいます。。
from sklearn.neural_network import MLPClassifier
ImportError: cannot import name MLPClassifier
Stackoverflowでも、この話題、いろいろ出てるので、解決法はありそうですけど
https://stackoverflow.com/questions/34016238/sklearn-import-mlpclassifier-fails
まだ試していません(^^;
Sklearnのバージョンによる違いについては、本文中には、こちらのページで案内があると書かれています。今のところ、案内はないので、僕だけの問題かもしれません。
http://bluebacks.kodansha.co.jp/special/ml.html
http://bluebacks.kodansha.co.jp/books/9784065020524/appendix/
IDLE
それと、Pythonの開発環境はIDLEというのを使います。WindowsではAnacondaなど使っているんですが、これ、とっても軽くて便利ですね。
EditorとPython Shellだけのインターフェースですが、EditorからRun Moduleで動かせるので便利かもです。
最後の章で、Deep Learning
この本も、最後の章でDeep Learningの勉強をします。 ライブラリはモデル記述にはKerasとバックエンドにはTheanoというライブラリを使っています。
https://keras.io/ja/#tensorflowcntktheano
http://deeplearning.net/software/theano/
Tensorflow、Chainer、などが有名ですが、theanoも有名なんですね。知らなかった。
Raspberry Piでやらずに、Pine64で(笑)
ということで、Raspberry Piも持っているんですが、Ubuntuが入っているPinebookというボードでやってみてみました。
【Pinebook】Raspberry Pi 対抗のPine64でできたUbuntsuノートブックが来た。Scratchとかするなら、これで良いかも【$89~$99】
手書き数字の特徴量の3D表現
こんなのができるんですね。Axsis3Dオブジェクトで、ぐるぐる3Dをマウスで回せるんですね。。 知らなかった。Rの関数とPythonは似てますね。見え方がそっくりです。
https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html
SVMで文字認識
手書き文字の認識にSVMを使っています。ある程度の条件が整うと、きちんと認識されますね。RaspberryPi用なので、画素数は実は8×8なんですが、0~9まで認識できてますね。
これのニューラルネットバージョンとかパーセプトロンバージョンとかもあります。
ジャンケン
最終的には、Piカメラで撮った手を画像認識して、ジャンケンの手を逐次学習させながらRaspberry Piとジャンケンをするというコードの説明があります。
下の例は、まだ画像認識してませんが。。 こんな感じです。
やはり、RaspberryPiだと、学習に凄い時間がかかるようですね。
この本の良いところは、学習データも載っているし、すぐに試せるように作られています。
ちなみに、Pinebookでやっているので、Pine64にはPicameraというモジュールは、ないので・・・OpenCVで直接叩かないとカメラキャプチャーできません(笑)
Picameraのクラスを使わずに、OpenCVと書き方を統一する方法が以下にのっています。これの考え方でやれば、Pine64(Pinebook)でもできそうです。
Unifying picamera and cv2.VideoCapture into a single class with OpenCV
ここを見てみると、pygameを使うと、pygame.cameraでもアクセスできるようなので、それでやってもいいみたいです。
https://forum.pine64.org/showthread.php?tid=1071
ちなみに、OpenCVで、cv2.VideoCapture(0)で、キャプチャーはできるので、解像度の変更などをして動かそうと思います。
また動かしたら、記事にしますね。Windowsになってるかもしれないけど(笑)
Raspberry Pi3も持ってるんですけどね(笑)
なんにせよ、この本、Matplot、OpenCV、Sklearn、Kerasの手引書でGUIなども作っていたり、VideoCaptureもしていたりで、面白いです。確かにプログラミング経験なくても、このソースをいじっていると楽しいですね。
おススメ本です。
カメラ付きのスターターパックってないんですね。なぜだろう?
コメントを残していただけるとありがたいです