2017
03.03

RaspberryPi3でデータを取得して機械学習をしてみる

Internship

インターン生2年の村山です。
最近はRaspberryPi3で加速度のデータを取り、そのデータを使って機械学習を行っています。
RaspberryPi側は、こんな感じになっています。


使用しているFaboモジュールは以下の通りです(Faboについてはこちら)

    • #103 Button Brick

    • #202 9Axis I2C Brick

ボタンBrickは、魚の反応がある時、魚の反応がない時の正解ラベル(0か1)の値を投げるために使用しています。

データの収集方法としては、9軸加速度センサーのデータを0.1秒ごとに収集し、10回分のデータ(1秒分)をワンセットにしてBigQueryにアップロードしてます。その際、魚の反応がある時、魚の反応がない時のラベルもセットにしてアップします。

BigQueryにアップロードしたデータは、csvに変換し、機械学習の方で学習させます。今回は、機械学習のフレームワークは、Tensorflowを使用します。

学習のみならスムーズにいくのですが、今回は学習したモデルをRaspberryPiの方で実行するために、pbファイルとして保存する必要があります。pbファイルの保存は問題なくできましたが、RasperryPi上でpbファイルを呼び出して、データをInputに渡したところ、エラーがたくさんでてしまいました。エラー内容としては、”inputのデータがTensorではない”や”グラフを保存した時のTensorが見つからない”等々、大変苦戦しました。

インターネット上に公開されているサンプルコードでのグラフの読み込み方法としては、ckptというチェックポイントとして保存したグラフを呼び出す方法や、tf.gfile.FastGFile()でpbファイルを呼び出す方法などがあるようでした。どちらもmnistのデータでグラフを呼び出しており、今回のような自分で作成したpbファイルになると思うように動いてくれずに、かなり手こずりました。

このエラーに関する参考記事が少ないため、なかなかエラーが解消しませんが、tf.gfile.FastGFile()でpbファイルを呼び出す方法を参考に、何とか正解の値が出てくるようになりました。


学習済みモデルのinputには、9軸加速度センサーの値の入った配列を渡して、2次元配列の値の大きいインデックスで判定を行う形に落ち着きました。

まだ、釣り竿部分が作成中のため、釣り竿本体を用いて正解となる加速度データを集めていないせいか、学習モデルの精度が低く間違った値が返ってくることもあり、今後は、学習モデルの精度向上が課題となっています。

美味しいワカサギ釣りまでもう少しです。精度を上げてたくさん釣れるようにしたいです。

Comment

  1. No comments yet.

  1. No trackbacks yet.

You must be logged in to post a comment.