SPRESENSEを使ってエッジAIを試してみた
こんにちは、カシオでソフトウェア開発を担当している草野です。
最近、私はエッジAIに興味を持ち、その中でも手軽に体験できるSonyのSPRESENSEというIoT用ボードコンピュータを試してみました。
IoTエッジデバイスとして、SPRESENSEは非常に優れた性能を持っています。
今回は、SPRESENSEを活用したエッジAIのシステム構築について紹介したいと思います。
SPRESENSEの特徴
【主要機能】
ARM Cortex-M4Fを6つ搭載した低消費電力マルチコアCPU搭載
ニューラルネットワークコンソールに対応したAI機能
ハイレゾリューションオーディオ機能内蔵
カメラインターフェース搭載
GPS、みちびき、GLONASSに対応したGPSモジュール内蔵
LTE低消費電力通信(LTE-M)に対応(LTE拡張ボードが必要)
SPRESENSEは、Arduino IDEを使用して簡単にプログラミングでき、マルチコアプログラミングも可能です。最も注目すべき特徴はAI機能です。
学習したニューラルネットワークをSPRESENSEで動作させて、推論を行うことができます。
Neural Network Consoleを活用したエッジAIシステム構築
ニューラルネットワークは、Sonyの「Neural Network Console」というAI開発ツールを使います。スクラッチのようなGUI上で操作するビジュアルプログラミングみたいな感覚でネットワークを設計できるほか、ネットワークの学習(Train)や評価(Evaluate)も簡単に実行できます。
このツールとの連携により、エッジAIシステムを簡単に構築することができます。
プロジェクト: 「グー、チョキ、パー」判定
SPRESENSEの目玉であるAIを活用し、「グー、チョキ、パー」判定をやってみたいと思います。Neural Network Consoleを使って、手の形を学習させ、SPRESENSEに組み込んでいきます。
手の形の学習
グー、チョキ、パーの手の形を学習させるため、それぞれの画像をたくさん用意します。
ニューラルネットワークの設計
次に、ニューラルネットワークの設計です。ニューラルネットワークはいくつかの構成要素の組み合わせで実現されており、この構成要素を理解することで、ニューラルネットワークを最適化できます。
私はニューラルネットワーク設計の知識がないので、今回はサンプルを利用します。これが分かるようになると面白そうです。
学習と評価
学習を実行させると、下記のような学習曲線が表示されて学習状況を確認できます。グー、チョキ、パーを判別する学習済みモデルができました!
曲線がきれいに収束されていれば、正常に学習できています。
ツール上で、グー、チョキ、パーの形のテスト画像を使って、このモデルの評価もできます。学習済みモデルの性能については、Accurary(精度:0~1の比率)の指標を見るのがよいです。
今回は、Accuracyの正解率が1となっているので、すべてのテスト画像において正常に認識できているということになります。
SPRESENSEに組み込んだ「グー、チョキ、パー」判定
この学習済みモデルデータ(nnb)をSPRESENSEに組み込んで、SPRESENSEのカメラから読み取った手の形が、「グー、チョキ、パー」どれなのかの判定します。
システム構成はこんな感じです。
LCDディスプレイに、カメラで映し出した手の形を認識してリアルタイムに認識結果と確からしさの値を表示します。
判定結果
画面下部に認識結果(p:パー、r:グー、s:チョキ)とその確からしさ(0~1)を数値で表示しています。
パーとグーは認識率が高い一方で、チョキの認識率がやや低い結果となりました。確からしさもすこし低く出ています。
この辺りは画像データをさらに収集して再学習させたり、ニューラルネットワーク設計を見直したりして精度向上していく必要がありそうです。AI画像認識の応用で、手のジェスチャーで何か動作させたりすることもできます。
他にも、LTE拡張ボードと組み合わせることで、例えば監視システムとして活用し、異常を検知した際にスマホに通知するなど、まだまだ可能性が広がりそうです。
【参考書籍】
・SPRESENSEではじめるローパワーエッジAI
【カシオのソフトウェア採用についてはこちら】