Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

moto2g
ガジェットマニア 兼 システムエンジニア。 プライベートでは気ままに面白いものを作るのが好き。
https://majipon.jp/blog/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした