テクニカルエバンジェリストの井上(祐)です。

 

最近、気になっているエッジコンピューティング。クラウドのパワフルな環境ではなく、データの発生源に近いエッジ側でデータをリアルタイムに処理しその場で推論を行なったり、ある程度処理をしたらクラウドにデータを渡したり、このエッジで動かす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として今後アップデートを掲載したいと思います。