LoginSignup
20
18

More than 3 years have passed since last update.

マイコン(Arduino)でTensorFlowを動かしてみた!

Last updated at Posted at 2020-01-26

この記事の目的

最近、個人的にTensorflow Liteを使ってIoTエッジデバイスで機械学習モデルを実行してみたいと
思って調べている中で、ArduinoでもDeepLearningモデルが簡単に実行できると知り、実際に試してみました。

ArduinoでTensorflow Liteを動かしてみたので、その流れを書いてみたいと思います。
基本的には、公式ページの内容を試した形になっています。

この記事で使用したもの

  • Arduino Nano 33 BLE Sense ※購入ページ
  • 開発用PC ※私の場合は、macOS Catalina バージョン10.15.2 で行いました。
  • Arduino IDE 1.8.10

開発環境のセットアップ

Tensorflow Liteをマイコンで実施するには、公式ページに記載されている通りいくつか選択肢があります。
今回は、一番上に記載されているArduino Nano 33 BLE Senseというマイコンを使用しました。

Arduino Nano 33 BLE Sense の特徴

デバイス詳細はこちらをご確認ください。

  • デバイス概要
    • 機械学習モデルが実行できるBLE搭載のArduino Nano。
  • 特徴、スペック
    • 9軸慣性センサー、温湿度センサー、気圧センサー、マイク
    • ジェスチャ、近接、光の色、光強度センサー
  • 価格
    • 約$30

Arduino IDEの設定

サンプルスケッチをCompileするためのArduino IDEの設定を行います。

  • Arduino IDEをインストール
    • Arduinoのページから、ご使用のOSに合わせてインストールを行ってください。
  • ボードをインストール
    • Tools -> Board -> Boards Managerを選択してください。
    • Arduino nRF528x Boards(Mbed OS)をインストールしてください。
  • ライブラリをインストール
    • Sketch -> Include Library -> Manage Librariesを選択してください。
    • Arduino_TensorFlowLite by TensorFlow Authorsをインストールしてください。
  • ボードの選択
    • Tools -> Board から Arduino Nano 33 BLEを選択してください。

サンプルスケッチの実行

TensorflowLiteのサンプルスケッチがいくつか用意されています。参考

  • hello world
    • sine関数の波形を生成し、LEDの点灯もしくはディスプレイへの描画を行うサンプル
    • 実行結果
      • サイン関数に従って、LEDが点灯しています。
      • arduino_tflite_hello_world.gif
  • magic wand
    • 簡単なジェスチャ認識をするサンプル。
    • Arduino_LSM9DS1 というライブラリが別途必要になりますので、インストールをしておいてください。
    • 実行結果。
      • W, O, Lのジェスチャを識別できるはずなのですが、なかなかうまく認識できなかったです。シリアルモニターに下記のように認識結果が出ます。
  • micro speech
    • yes、noといった簡単な音声認識するサンプル。
    • 実行結果
      • yes, noが認識できました。ただし、精度はあまりよくはなく、誤認識が多かったです。自分の発音にも問題があるかもしれませんが;;
  • person detection
    • カメラで人検出するサンプル。
    • Arducam Mini 2MP Plusが別途必要になりますので、今回は実行できませんでした。

注意事項

  • 私のMacはOSがCatalinaだったため、コンパイルで下記のようなエラーが出ていました。Arduino IDE 1.8.0から1.8.10にアップデートすることで、エラーは解消されました。
    • コンパイルエラー:bad CPU type in executable...

終わりに

  • 意外につまることなく、サンプルが実行できました。ただ、コードやライブラリは理解できていないので、オリジナルモデルを使って、カメラモジュールを使った独自の検出機能を作ったら理解も進んで面白そうだなーと思いました。時間があればやってみようと思います。
  • 先日、Tensorflow User Groupに参加した時の感想ですが、エッジデバイスモデルの軽量化、デバイスへの組み込みについては奥が深く、個人ではなかなか手が出せない部分なので、このように簡単に試せるようになっていることに感動しました。

参考文献

20
18
3

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
  3. You can use dark theme
What you can do with signing up
20
18