AdSense

2019年12月1日日曜日

MAiX BITに自分で学習させたモデルを使うまでの記録

前回折角MAiX BITが動いたので、自分で学習させたくなる。

でも全然AI界隈がわからないので環境構築から。

で、Docker検討したりAnaconda入れたりするが、環境構築がデリケートなことを学ぶ。
一応TensorFlowが動くとこまできたが、どうやらもっとスマートなやり方があるらしい。

で、試したのが、グーグルコラボというクラウド環境。
https://www.tdi.co.jp/miso/google-colaboratory-gpu

速攻で苦労した環境できて愕然とする。

参考にさせて頂いたサイト:
https://www.tdi.co.jp/miso/google-colaboratory-gpu

・実行環境作成
・実行環境のスペック確認
・ライブラリの確認
・TensorFlowの動作確認
・MNISTの確認


ここから、自分でトレーニングする方法を探す。
が、MAiX BITで探すと情報がぜんぜんない。
しかしM5Stick-Vとして探すと、結構出てくる。

どうやら、V-Trainingというのが簡単ぽい。

参考にさせて頂いたサイト:
http://setsubi.no-mania.com/m5stickv/v-training%E3%81%A7m%EF%BC%95stickv%E7%94%A8%E5%AD%A6%E7%BF%92%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F%E8%A9%B1

2019年10月21日月曜日

MAiX BITを購入してSampleを動かした記録

勉強会でMAiX BITを見かけて面白そうだったのでAliでポチって動かした記録

ことはじめ

MAiX BITとは、K210というM5Stick-Vと同じKPU(Knowldge Processing UnitというNNアクセラレータ)が乗っている、これだけでTensorFlowの機会学習モデルが動くすごいやつで、カメラとLCD付きで超低価格。
Aliだと3000円を切っていた。
なお、読み方はマックスビットらしい。アイは口にしてはいけない。


面白そうだったので購入してみたが、なかなか動くまで苦労したのでその記録。

Windows環境だったので使い方は下記などを参考にさせて頂いた。
https://qiita.com/tomitomi3/items/d1b675957238f9b7f965

SDKは公式から入手
https://wiki.sipeed.com/en/maix/board/bit.html

FWと学習データ書き込みツールはK-FLASHを使用。

戸惑ったったところは3つ

・1つ目は、SDKのダウンロード。
最新版v0.2.4は、そのフォルダ名ではなく「_」の下にある
http://dl.sipeed.com/MAIX/MaixPy/ide/_/v0.2.4
で、右クリックで保存しても壊れたファイルになるので、ちゃんとクリックして表示された文字列を入力しないとだめ。

・2つ目はUSBドライバ
USBドライバが古いやつはCH340で、新しいやつはCH552だと公式に書かれていた。
私のはどうやらCH552。ぐぐるとCH552がかなり特殊な感じだして戸惑ったが、
結局これ用にドライバを入れることなく、普通にWindowsは認識した。COMポート2つ。
なんで2つかわからないが一方を115200指定で通信できることを確認。

・3つ目はK-FLASH
FWと学習データの書き込みツールだが、初期表示はBaudRateが2000000になっている。
で、これで書き込むと失敗した。115200にすると時間はかかるが書き込みOK
あと、実機の書き込み時は、実機のbootボタンを押しっぱなしにして起動する必要がある。書き込み完了するまで押しっぱなしで書き込みできた。


無事、起動してサンプルプログラムを書き込み、顔認証できた。















丸裸なので、3Dプリンタでケースを出力。データはThingiverseでいい感じのを入手。
http://www.thingiverse.com/





2019年2月3日日曜日

生体センサー(心拍、心電、眼電位)を計測した記録

様々なセンシングデバイスを使って生体データを計測した記録。

●生体データセンサー3つ

・心拍センサー


Arduinoで心拍数が取得できます。
指との接触部分に隙間ができるとノイズがはいるので、
これ以外にも指に巻くためのテープやがあると良いです。
URLの手順通りで簡単に心拍数とれました。
Arduinoのサンプルソースもたくさんあります。
processingと組み合わせると、見た目が良い感じになります。
それもサンプルソースが難なく動きました。
aliexpressだと200円くらい


・心電センサー


心拍センサーと同じようにArduinoで簡単に使えました。
ジェルパッドの分だけ接着が良いのか、
心拍センサーよりはるかにノイズが少なかったです。
接続方法は公式サイトの通りで難なくOK。
こちらもArduinoとProcessingのソースが一緒にGitHubにあり難なく動きました。
サンプルソースでBPMがすぐにわかります。
自律神経を知るためにRRI間隔を取りたかったのですがサンプルソースでは動かず。
aliexpressだと500円くらい

Arduinoと接続

体につける部分はジェルになっています

・眼電位

眼電位から、見ている方向や瞬きを取得し、
加速度とジャイロセンサと組み合わせることで集中度や疲労を推定することができるデバイス。
公式サイトにSDKとサンプルソースが配布されています。
アプリの実行にはIDとPASSが必要で、こちらは開発者サイトのチュートリアル通り、メールアドレスを登録すると使用できます。
 「3.アプリIDとアプリSecretの取得」の部分です。
Android版を動かしたところ、IDの設定だけですんなり動きました。

メガネです。スマホとBTで接続します。
電位は鼻を支える部分からとってるようでした。
メガネメーカー製のため、重さは非常に軽く、
普通のメガネとして日常的に使えそうです。

SDKサンプルアプリのリアルタイムモード
リアルタイムのモニタリングデータが参照できる

SDKサンプルアプリのスタンダードモード
1分間分の集計データが取得できる

考察

・心拍センサ、心電センサともに、動くとノイズが入るので、ノイズ除去のアルゴリズムが必要な見込み
・眼電位は、公式アプリの場合はキャリブレーションするので、複数人で使い回す場合はキャリブレーションが必要と思われます。特に、眼の方向は上下左右の4方向で5段階なので、精度はアプリの向上が必要な見込み。こちらについては論文ありました。


2019年1月27日日曜日

Roomba 980をraspberry piで動かしてみた

Roomba980を手にいてたので、任意の操作を試した記録。

REST APIでスマホ代わりに動かした記事は結構見つかったけども、直接ホイールなどのレベルで制御した記事は見つからず。
500シリーズはシリアルポートを制御した記事が結構あるが、900シリーズはあまりない。

ということで、900シリーズである980を直接制御してみた。

500シリーズはシリアルポートがあり、USBシリアルで制御するが、980はMicroUSBポートがあり、そこをシリアルポートとして使う。

場所はここ。カバーは簡単に外れる。

ここにあるMicroUSBにケーブルを挿す。
初めはWindowsPCで試すが、iRobot Roombaと認識するがCOMポートとは認識せず。
どうやらドライバが必要の模様。しかしドライバを見つけられず。

しばらくググると、Raspberry piならば何もせずともttyACM0として認識するとの記事を発見し、試すと確かにUSB挿すだけでttyACM0として認識する。

ここまでいけば、あとはROIの通りにコマンド送るだけで良いはず。

ROI(500 series)

しかし、なぜか私の環境ではコマンド送っても反応せず。
おもむろに下記のスクリプト流すとすんなり動きました。

ただし、COMポートだけはソース修正必要です。

https://github.com/martinschaef/roomba

この部分
 ROOMBA_PORT = "/dev/tty.usbserial-DA017V6X"
  ↓
 ROOMBA_PORT = "/dev/ttyACM0"

game.pyもstarwards.pyも無事動きました。





下記記事参考にさせていただきました
https://qiita.com/ozwk/items/7ed89479cf4931970edd