Posted at

Micro:bitでAI(Neural Network Libraries)を使う

SONYのNeural Network Consoleで学習させたモデルをMicro:bit上で動作させたので、そのときの手順を紹介します。

私が実施した環境はWindows 10になります。


■全体の流れ


  • Micro:bit オフラインコンパイル環境を構築する

  • Neural Network Console関連のソースを準備する

  • 学習済みモデルを使ったプログラムを作成する


■Micro:bit オフラインコンパイル環境を構築する

基本的にmicro:bit runtimeyottaのページに書かれている手順に従っていきます。

下記のものをインストールしました。


  • Python3.7

  • cmake3.14.3 x64

  • ninja

  • gcc4.9

  • srecord

  • yotta


Python

バージョンが新しい分には問題ないようです。


cmake

yottaのページからリンクされています。

cmakeの公式ページからインストーラーをダウンロードします。

バージョンが新しい分には問題ないようです。

インストール後、cmake.exeのフォルダにパスを通しておきます。


ninja

yottaのページのリンクからダウンロードできます。

任意の場所に解凍し、パスを通しておきます。


gcc4.9

yottaのページのリンクからダウンロードできます。

インストーラーを実行するだけです。


srecord

micro:bit runtimeのページからリンクされています。

srecordの公式ページからダウンロードします。

任意の場所に解凍し、パスを通しておきます。


yotta

pip install yottaでインストールできます。

Pythonで仮想環境を作っておくと良いと思います。


コンパイル環境の確認

ソフト類を一通り入れたら、適当なプログラムを書いてコンパイルできるか確認しておきましょう。

※以降の説明では、作業フォルダをc:\hoge\の前提で記載します。

下記の構成となるようにmodule.json、main.cppというファイルを配置します。

c:\hoge\module.json

c:\hoge\source\main.cpp

module.jsonには下記のような内容を記述しておきます。


modue.json

{

"name": "testprogram",
"version": "0.0.0",
"description": "test desu",
"keywords": [],
"author": "",
"license": "Apache-2.0",
"dependencies": {
"microbit": "lancaster-university/microbit#v2.1.1"
},
"bin": "./source"
}

main.cppにはmicro:bit runtimeのページから適当なサンプルをコピペしておきます。

ファイルの準備ができたら、c:\hogeで下記コマンドを使ってコンパイルします。

yt target bbc-microbit-classic-gcc

yt build

コンパイルに成功すると、

c:\hoge\build\bbc-microbit-classic-gcc\source\ にMicro:bitのバイナリファイルが生成されます。

ファイル名は、module.jsonのnameで指定した名前に「-combined.hex」をつなげたものになります。

生成されたバイナリファイルをMicro:bitにコピーして、動作することを確認します。


■Neural Network Console関連のソースを準備する

SONYのNeural Network Consoleのページから、Neural Network Console Windowsアプリ版をダウンロードします。

アプリで任意のネットワークを作成してトレーニングしたら、トレーニング結果から「Export - NNB (NNabla C Runtime file format) 」を選びます。

c_sourceというフォルダにソースファイルが出力されるので、下記のものを c:\hoge\source\cruntime\ に配置します。


  • MainRuntime_inference.c

  • MainRuntime_inference.h

  • MainRuntime_parameters.c

  • MainRuntime_parameters.h

https://github.com/sony/nnabla-c-runtimeからソースをダウンロードします。

そのうち、

/nnabla-c-runtime/include/nnablart/ の内容を c:\hoge\source\nnablart\ に、

/nnabla-c-runtime/src/functions/ の内容を c:\hoge\source\functions\ に配置します。


■学習済みモデルを使ったプログラムを作成する

micro:bit runtimeのページと、Neural Network Consoleアプリが出力した MainRuntime_example.c あたりを参考に学習済みモデルを使ったプログラムを作成します。

作成したものは c:\hoge\source\main.cpp に保存します。

あとは前述と同じ方法でコンパイルし、生成されたものをMicro:bitにコピーすれば動作するはずです。

※コンパイル時にやたらwarningが出ますが、バイナリファイルが生成されていれば問題ありません。

c:\hoge\source\以下に不要なソースファイルがあるとコンパイルエラーになる場合があります。例えばmain.cppをコピーしたものがあるとダメです。


参考

Lancaster University micro:bit runtime

yotta

SONY Neural Network Libraries

CQ出版 Interface 2019年 1月号