【人工知能】Raspberry Pi ではじめる機械学習 じゃんけん・あやめ分類など【ディープラーニング】

スポンサーリンク
広告

Raspberry Piで機械学習

なかなか面白そうな企画ですよね。

Pythonについて知っていて、機械学習(DeepLearningということではなく、クラシフィケーション、クラスタリングなど全般)について学習するにはとてもいい教材だと思います。

Numpyでゼロから作る機械学習より今風になってると思います。

【読書感想文】ゼロから作るDeep Learning Pythonで作るんだって・・・【ラジコン自動運転?】

sklearn

Pythonの機械学習のライブラリとして、大部分はsklearnというライブラリを使って体験していきます。いろいろなものの分類、回帰、クラスタリングなどをSVM(サポートベクターマシン)などや、パーセプトロン、ニューラルネットワークなどで機械学習できるんですね。

scikit-learn: machine learning in Python — scikit-learn 1.4.1 documentation
機械学習ライブラリ scikit-learnの便利機能の紹介 - Qiita
概要Pythonの機械学習系ライブラリscikit-learnの基本的な使い方と、便利だなと思ったものを記載しました。類似記事は沢山ありますが、自分自身の整理のためにもまとめてみました。これか…

ただバージョンによっていろんなエラーも出るようで、少しいろいろ調べる必要がありそう

僕の場合は、Pine64というボードだからかもしれません。。が、ニューラルネット系のMLP分類器が読み込めないっていうエラーが出てしまいます。。

from sklearn.neural_network import MLPClassifier
ImportError: cannot import name MLPClassifier

Stackoverflowでも、この話題、いろいろ出てるので、解決法はありそうですけど

https://stackoverflow.com/questions/34016238/sklearn-import-mlpclassifier-fails

まだ試していません(^^;

Sklearnのバージョンによる違いについては、本文中には、こちらのページで案内があると書かれています。今のところ、案内はないので、僕だけの問題かもしれません。

カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで - ブルーバックスシリーズの特設ページ
カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで - ブルーバックスシリーズの特設ページ

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は似てますね。見え方がそっくりです。

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 - PyImageSearch
Access your Raspberry Pi camera module (with picamera) and USB webcam, all with a single Python + OpenCV class (and without changing a single line of code).

ここを見てみると、pygameを使うと、pygame.cameraでもアクセスできるようなので、それでやってもいいみたいです。

Anyone get the camera to work yet?

ちなみに、OpenCVで、cv2.VideoCapture(0)で、キャプチャーはできるので、解像度の変更などをして動かそうと思います。

また動かしたら、記事にしますね。Windowsになってるかもしれないけど(笑)

Raspberry Pi3も持ってるんですけどね(笑)

なんにせよ、この本、Matplot、OpenCV、Sklearn、Kerasの手引書でGUIなども作っていたり、VideoCaptureもしていたりで、面白いです。確かにプログラミング経験なくても、このソースをいじっていると楽しいですね。

おススメ本です。

カメラ付きのスターターパックってないんですね。なぜだろう?

コメントを残していただけるとありがたいです

Loading Facebook Comments ...