エッジにおけるtinyMLの3つの用途

機械学習(ML)は、クラウドの多くの分野に浸透しており、Linuxを実行する比較的強力なプロセッサで実行されるエッジに進出してきております。これらのシステム上で動作する従来のMLは電力プロファイルが大きすぎるため、それらプロセッサシステムがバッテリ駆動のエッジデバイスとしてそれまでの作業を「切断」してMLの作業を実行することはできないという問題があります。エッジにおけるMLのトレンドおよび未来は、tinyMLを使うことです。tinyMLとは、Arm Cortex-Mプロセッサをベースにしたマイクロコントローラなど、リソースに制約のあるデバイスにMLアルゴリズムを導入することを目的とした小型のML搭載チップです。

このブログでは、エッジで使用するマイクロコントローラベースのデバイスにおけるtinyMLの最も一般的な用途を探ります。

用途1:キーワードスポッティング

tinyMLは、キーワードスポッティングで使用されることで初めて知られるようになりました。キーワードスポッティングとは、「やあ、Siri」、「Alexa」、「こんにちは」などのキーワードをデバイスが認識する機能です。キーワードスポッティングは、エッジデバイスで多く使用されています。たとえば、低電力のプロセッサを使用して特定のキーワードを監視し、そのキーワードを検出したら、より強力なプロセッサを起動させることができます。また、組み込みシステムやロボットを制御するような使い方も考えられます。マイクロコントローラで「forward(前進)」、「backward(後退)」、「stop(停止)」、「right(右)」、「left(左)」などのキーワードを解読して、ロボットの動きを制御している例を見たことがあります。

tinyMLを使ったキーワードスポッティングは、一般的にマイクロフォンを使って入力された音声信号を取り込むことで行われます。音声信号は、時系列における電圧として記録されてから、デジタル信号処理によりスペクトルグラフに変換されます。スペクトログラフとは、時系列でプロットされる入力信号の周波数です。このスペクトログラフをニューラルネットワーク(NN)に入力して、tinyMLのアルゴリズムに特定の単語を認識するように学習させることができます。そのプロセスを図1に示します。

図1:入力された音声信号をデジタル処理することで、キーワードを検出するようにNNに学習させるためのスペクトログラフを作成します。(画像提供:Arm)

一般的な実装では、一定範囲の音声をNNに入力します。次いで、ニューラルネットワークは、対象となるキーワードのいずれかが発話された確率を評価します。たとえば、誰かが「Yes」と言った場合、NNは「Yes」だった確率が91%、「No」だった確率が2%、「On」だった確率が1%と報告します。

音声で機械を制御する機能は、多くのデバイスメーカーが綿密に検討していて、今後数年のうちにデバイスに強化したいと考えている用途です。

用途2:画像認識

tinyMLの2番目の用途は、画像認識です。画像認識を行えるエッジデバイスには、非常に多くの用途があります。既にご存じの方もいらっしゃるかもしれませんが、玄関に人がいるか、荷物があるか、あるいは何もないかを検知することができます。他にも、古いアナログメータの監視、芝生の健康状態の検知、鳥の種類のカウントなど、様々な用途に活用できるはずです。

画像認識というと、深入りするには難しい分野のように思われがちです。しかし、開発者がすぐに利用を開始できるように支援する低価格のプラットフォームがいくつか販売されています。その中でも、手早く仕事を済ませることができるので私が気に入って使っているのが、OpenMVです。

OpenMVは、統合開発環境(IDE)、Pythonで書かれたライブラリフレームワーク、Seeed Technologyカメラモジュールなどを含むオープンなマシンビジョンプラットフォームであり、開発者がマシンビジョンアプリケーションを構築するのを支援します(図2参照)。

図2:OpenMVのカメラモジュールを使用すると、画像認識を行えるほか、Pythonを使った簡単なIDEで開発を行うことができます。(画像提供:Beningo Embedded Group)

上記のカメラモジュールは、STMicroelectronicsSTM32H7 Cortex-M7プロセッサをベースにしています。このプロセッサは、オンボードの拡張ヘッダによって拡張することができます。バッテリ駆動が可能で、カメラモジュールの交換も可能です。入門用の例として好適なのは、CIFAR-10データセットとArm CMSIS-NNライブラリを用いて画像認識を行う方法です。この例は、YouTube(https://www.youtube.com/watch?v=PdWi_fvY9Og)でご視聴いただけます。

用途3:予知保全

最後に紹介するtinyMLの用途は、予知保全です。予知保全は、統計解析やMLなどのツールを用いて、以下に基づいて装置の状態を予知するものです。

  • 異常検出
  • 分類アルゴリズム
  • 予測モデル

たとえば、工場には製品を生産するためのモータ、ファン、ロボット装置などが並んでいます。企業であれば、ダウンタイムを最小にして、生産できる製品の数を最大にしたいと思うでしょう。ロボット装置にセンサがあり、その読み取り値をMLなど前述の技術で解釈すれば、装置が故障状態にに近づいていることを検知することができます。このような環境の例を図3に示します。

図3:tinyMLの3番目の一般的用途は、予知保全に使用されるスマートセンサです。(画像提供:STMicroelectronics)

tinyMLは、スマートセンサと低電力のマイクロコントローラを接続できるので、役に立つ様々な用途に活用することができます。たとえば、空調機の監視、エアフィルタのチェック、モータの不規則な振動の検出など、様々な用途に対応することができます。これにより、予知保全・予防保全がより組織的に行われるようになるので、コストのかかる事後対応から解放され、より最適な保全スケジュールを立てることができるようになります。

まとめ

エッジでtinyMLを使用できる用途の候補は、非常に数多くあります。今回は、今流行っているものを紹介しましたが、用途はほぼ無数です。tinyMLは、ジェスチャの検出、誘導、コントロールなど、様々な用途に利用できます。多くのエッジデバイスがtinyMLの色々な機能を活用し始めた暁には、エッジでtinyMLを何の目的に使うのかが真に問われるようになるでしょう。

著者について

Image of Jacob Beningo

Jacob Beningo氏は組み込みソフトウェアコンサルタントで、現在、製品の品質、コスト、市場投入までの時間を改善することで、ビジネスを劇的に変革するために数十か国以上のお客様と作業しています。同氏は、組み込みソフトウェア開発技術に関する200以上の記事を発表しており、引っ張りだこのスピーカーでありテクニカルトレーナです。ミシガン大学のエンジニアリングマスターを含む3つの学位を取得しています。気楽にjacob@beningo.comにメールするか、彼のウェブサイトwww.beningo.comから連絡してみてください。そして毎月のEmbedded Bytes Newsletterにサインアップしましょう。

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum