最近「EdgeデバイスでAI」ネタでちょくちょくお目にかかるのが EDGE IMPULSEというものです。Edgeデバイス=マイコン用のAIアプリを「生成」してくれるWebサービスのようなものみたい。半信半疑で「ゲストでお試し」やってみました。確かに簡単。マイコン用にデプロイしてみるために即登録。
目くるめくAI業界の動きの速さです。今頃 EDGE IMPULSE に気付いたのか、と言われそうです。ようやく本日、登録不要のゲストアカウントでできるスマホを使った「お試し」やってみました。やってみて「遅れている」こと痛感しましたです。とりあえず即登録(無償)いたしました。まずはURLを貼り付けておきます。
容量と性能、ソフトの向上相まってEdge側のデバイス(マイコン)で識別やるのは難しくなくなった昨今ですが、まだまだ学習は容量的、速度的に難しいと思います。そこでマイコンで取得した「識別したい」センサデータなどをクラウド側にアップロードし、学習させて生成したモデルをダウンロードする、というスタイルのクラウド・サービスが成立し、結構いろいろあるじゃないかと思います。EDGE IMPULSEもそういうサービスの一つではあるのですが、Edge側(マイコン)への距離の近さという点では出色のものがあります。
-
- Edge側のデバイスをネットワークでEDGE IMPULSEに接続して学習、テストのデータを取得、解析できる。
- モデルの作成、学習、テストなどはクラウドで行える。
- そしてEdge側のデバイスに対して実行可能なコードとモデルをデプロイできる
端的に言えば、マイコン側でセンサの生データを取得して「垂れ流す」コードさえ作れば、後はWebをクリクリやって行くだけでそのセンサデータを識別するためのマイコン上で走る「AI」プログラムが出来てしまう、ということであります。なんとお手軽な。
私などは料金が気になるのですが、以下のページに記載があります。
有償の Enterprise subscriptionについては “Countact us” とあって聞くのが恐ろしいですが、
プロジェクト数5個、”Compute time included 25m”
までは無償ということです。25mって25m秒じゃないよね、25 minutes だよね。。。さらに言えば、ユーザー登録なしで、スマホをEdge側に使って簡単にお試しできる機会も準備されています。トップページの真ん中付近にドカンとQRコードが鎮座していて、
Build a model in 5 minutes.
と書かれているのがこれです。このQRコードがミソでした。私はPC上のブラウザ(Chrome)でこのQRコードを表示し、自分のAndroidスマホでQRコードリーダを起動して得たurlに「接続」しました。するとその瞬間に、PC上のブラウザ画面とスマホのブラウザ画面がリンクいたしました。カッコイイというか恐ろしいというか。
PC上のブラウザには EDGE IMPULSEのダッシュボードが表示されます。左に作業フローの流れを示すためにダッシュボードの左脇に表示されている各ステップを示しました。基本上から下に向かって作業していけば良いようです。学習用のデータの収集は”Data acuisition”です。 スマホ用のサンプルアプリの場合、センサデータ(加速度センサ)、画像、音声など選択可能なようです。私は一番簡単な加速度センサにいたしました。データの取得は簡単で、PCのブラウザ上で識別用のクラス名を設定して、サンプリングの開始ボダンを押せば、スマホが反応してデータを取得、アップロードするという仕組みです。とりあえず3種類のスマホの動き(上下動、波動、停止)をクラスとして、それぞれ数回繰り返してデータをアップロードしました。デフォルトは10秒ですが、メンドイので5秒にしました。それ以外のパラメータは全てデフォルトのままとしました。なお、最初サンプル数各3個では、さすがに上手く識別されなかったです。2個追加して合計5個で再度学習させたら上手く動くようになりました。
次に”Impulse design”というページで、Raw dataにつづく、”processing block”と”learning block”を選択しないとならないのですが、そこはチュートリアルのページの「お勧め」どおりに Spectral Analysis と Neural Network(Keras)を選択しました。各種設定はすべてデフォルトのまま。
Featureの抽出みたいなボタンがあったので、押してみると、3次元空間(加速度センサの3軸対応)の中に3つのクラスが色分けされて出てきました。これならば識別できそうな感じがマンマン。
先ほど書いたとおり、最初サンプル少なくてうまく行かなかったので “Retrain model” での学習を追加と、”Live classification” (先ほどのデータ収集の要領でできる)でのクラウド上での識別(とテストデータの収集)を何回かやりました。良さそうなところで”Model testing”すると以下のように3つのテスト例(3例とも静止ですが)ともちゃんと nomotion と識別されました。当然か。
実際にマイコンに組み込むためにはターゲットのマイコンを決めてデプロイの作業があるようなのですが、スマホでの「お試し」では、クラウド上での作業はこれで完了です。スマホ画面の下の方に Classification モードに切り替えるボタンがあるので、それを押しました。するとクラウド上から処理のためのコードと今作ったばかりの学習済モデルがダウンロードされてきます。何やら裏でいろいろやっているようです。数十秒待ちました。以降はローカルにサンプリングと識別が行われます。こんな感じ。
繰り返しサンプリングが走り、スマホを振ったり、停止させたりする動作を行う度に、それが3クラスに識別されて確率が出力されていきます。ちゃんと識別されているなあ。。。でも、スマホを振りながら画面を読むのは辛いので、毎度停止させて読みます。それで必ず最後はNOMOTIONつづき。
ともかく、なかなか良いものであることは理解したので、次回はスマホでなく、マイコンにデプロイやってみるつもりであります。ただね、ターゲットにできるマイコンに条件があるというか、クセがあります。なんとか手元のマイコンでもデプロイできそうなものがあったので良かったケド。