LoginSignup
6

More than 3 years have passed since last update.

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月号

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6