SONYのNeural Network Consoleで学習させたモデルをMicro:bit上で動作させたので、そのときの手順を紹介します。
私が実施した環境はWindows 10になります。
■全体の流れ
- Micro:bit オフラインコンパイル環境を構築する
- Neural Network Console関連のソースを準備する
- 学習済みモデルを使ったプログラムを作成する
■Micro:bit オフラインコンパイル環境を構築する
基本的にmicro:bit runtime、yottaのページに書かれている手順に従っていきます。
下記のものをインストールしました。
- 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には下記のような内容を記述しておきます。
{
"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月号