テクニカルエバンジェリストの井上(祐)です。
最近、気になっているエッジコンピューティング。クラウドのパワフルな環境ではなく、データの発生源に近いエッジ側でデータをリアルタイムに処理しその場で推論を行なったり、ある程度処理をしたらクラウドにデータを渡したり、このエッジで動かすAIに注目が集まっています。例えば、動画から何かを識別する際、ダラダラと動画データをクラウドに送り込んでAIに処理させるのは、通信の負荷を考えると現実的ではありません。やはりエッジ側のAIで認識し、結果をクラウドに送るのが良さそうです。ちなみに、このようなエッジコンピューティングはAIoTと呼ばれています。本記事では、そのひとつMAiXDUiNOを試したという内容となります。
AIアクセラレータ搭載の MAiXDUiNO
今回、対象としたAIマイコンはSiPEED社のMAiXDUiNOです。このマイコン、64bit デュアルコアRISC-V、AIアクセラレータ K210、Wifi、Bluetooth、カメラ、LCDが付いて、なんと一式3,300円。これは即買いです。
ちなみに私は秋葉原の東京ラジオデパート3Fのシゲゾーンで購入しました。こちらはSiPEED社の他のマイコンも扱っており、どれも欲しくなってしまいます。(ネットだとスイッチサイエンスかAmazonで購入可)
本体はこんな感じです。サイズはArudinoと同じで、なんとAruduinoのシールドが使えるうえにArudino IDEで開発もできるという。夢が広がりますね。
まずは使えるようにする
UDB Type-Cでパソコンと接続し、最新のファーム書き込みと開発環境の構築を行います。
(1)最新のファームを焼く
ファームはgitに公開されていますので、ダウンロードしkflashコマンドを使いボードに書き込みます。
①ファームのダウンロード
バージョン: v0.3.2
ファイル: maixpy_v0.3.2_full.bin
ここで一緒に顔認識を行うモデル face_model_at_0x300000.kfpkg もダウンロードしておきます。(この後、使います)
②ボードへの書き込みをkflashにて行う。
書き込みコマンド kflashのダウンロードを行います。
バージョン:v1.3.2
ファイル:kflash_gui_v1.3.2_macOS.dmg
今回V1.3.2の中からmac版を取得(kflash_gui_v1.3.2_macOS.dmg)します。対象は自身のOS用の資源を入手してください。
(2)ファームの更新
①kflashを起動し、[Open File]からmaixpy_v0.3.2_full.binを開きます。
②”Serial Settings”のPortを指定します。
各自の環境に合わせPortを選択してください。ちなみに私は候補リストが3つしかなかったため、上から順に試して決めました。(なんと安易な・・・)
③”Download”をクリックし書き込みます。
プログレスバーが表示され、最後に下記のダイアログが表示されればOKです。
同様の手順でkflushを使いface_model_at_0x300000.kfpkg も書き込んでおきましょう。
“Open File”でパッケージを選んで、その他の値はそのままとし”Download”をクリックします。(アドレス0x300000に書き込まれるようです)
顔認識を動かす
開発環境としてIDE環境を使って顔認識モデルを動かしてみます。
MAiXDUiNOにおける開発は、IDEを用いたmicroPythonによる開発か、先に触れたArduino IDEのどちらかで行います。今回はMAiXDUiNO IDEにてmicroPythonを使い開発します。
(1)IDEの導入
まずは、IDEの導入を行いましょう。
ファイル:maixpy-ide-mac-0.2.3.dmg (Macの場合)
今回、mac版を取得(maixpy-ide-mac-0.2.3.dmg)しましたが、対象は自身のOS用の資源を入手してください。
(2)IDEの起動
起動後に行うのは次の作業となります。
①MAiXDUiNOと接続、左下の接続をクリックします
②顔認識モデルを使うプログラムを記述
このプログラムもgitから入手しコピペしましょう。
③左下のプログラム実行ボタンをクリック
④カメラにて顔を写し、認識される事を確認する
実行するとカメラが起動し、リアルタイムで顔認識を行います。秒10フレームのパフォーマンスは出ています。
いかがですか、簡単に顔認識モデルを動かす事ができました。このようにエッジ側のハードに合わせた学習済みモデルが多く配布されており、手軽に動かす事ができるのも最近の傾向と思います。
オリジナルのモデルを開発しMAiXDUiNOで動かす!
今回の記事はここまでですが、今後、オリジナルのモデルを開発しMAiXDUiNOで動かしたいと思います。MAiXDUiNOのAIアクセラレータ K210で動かせるモデルはkmodelという形式になります。
参考までに手順を示すと、Tensor Flow, Kerasにてモデルを開発しh5ファイルを出力します。その後、tflite、kmodelとモデルの変換を行います。tfliteはTensor Flow Liteのモデルフォーマットでモバイル環境で実行できるモデルとなります。
手順:
①開発したモデルはh5形式のファイルとして保存します。
②tflite_convertコマンドによってh5形式をtflite形式に変換
③nccコマンドによってtflite形式をkmodel形式に変換
nccコマンドの入手はwgetコマンドによって行います。(現在Linux版のみリリース)
wget https://github.com/kendryte/nncase/releases/download/v0.1.0-rc5/ncc-linux-x86_64.tar.xz
作成したkmodelはmicroSDカードに保管し、microPythonからLOADして使います。
いったん、こちらはTODOとして今後アップデートを掲載したいと思います。