機械学習の初心者にとっても専門家にとっても大いに魅力があるSTM32のエコシステム
機械学習、特にTinyMLは、組み込みシステムの設計や構築の方法を大きく変える可能性を秘めています。従来、これらのシステムには、開発者の経験に基づく手続き的なアルゴリズムが用いられてきました。機械学習は、手続き的なアルゴリズムとは異なる、現実世界の観察やデータに基づくアプローチを提供します。環境のデータが変化した場合でも、機械学習モデルはすぐにデータから再学習することができます。これは、ハンドコードソリューションを使用しているケースだと、書き換えが必要になるところです。
この記事では、STMicroelectronics STM32マイクロコントローラファミリでサポートされる組み込みシステム用の機械学習プラットフォーム/ツールについて説明します。
STM32マイクロコントローラファミリにおける機械学習のサポート
機械学習は、組み込みシステムの開発者にとって強力なツールとなり得ます。しかし、開発者は、「機械学習のアルゴリズムはあまりにも高い処理能力を必要とするか、あるいはアルゴリズムのサイズが大きすぎて、一般的なマイクロコントローラに収まらない」と一般に思っています。実際には、使用するマイクロコントローラの選択は、各マイクロコントローラによる機械学習のサポート状況よりも、ユーザーが機械学習で何をしようとしているかによって決まります。
たとえば、図1は、機械学習をサポートしているSTM32マイクロコントローラファミリのラインアップを示しています。このラインアップは、48MHz(メガヘルツ)で動作して最大256Kバイト(キロバイト)のフラッシュと32KバイトのRAMを持つSTM32F0から、216MHzで動作して最大2Mバイト(メガバイト)のフラッシュと512KバイトのRAMを持つSTM32F7まで、多岐にわたっています。
図1:開発ツールSTM32Cube.AIとNanoEdgeで機械学習をサポートするSTM32マイクロコントローラ(画像提供:STMicroelectronics)
このように、かなりの数のマイクロコントローラが機械学習をサポートしています。現実問題として、機械学習プラットフォームは、広範な開発者をうまくサポートする必要があります。たとえば、機械学習の専門家が組み込みソフトウェアのチームに在籍していることは、まれです。このため、機械学習の専門家の代わりに、組み込みソフトウェアの開発者が、従来のスキルセットに含まれていない機械学習に精通することを余儀なくされます。そのため、機械学習の専門家がいるチームといないチームを両方ともサポートできるプラットフォームが必要とされているのです。この問題を解決するのに役立つのが、STM32機械学習エコシステムのツールチェーンです。
機械学習の専門家がいない組み込みソフトウェア開発チームに対するサポート
確かに、機械学習アルゴリズムの設計や育成は、大変な作業に思えるかもしれません。開発者は、データの取得およびモデルの設計と育成を行ってから、そのモデルを最適化して組み込みシステムに展開できるほど十分に適合することを確認する必要があります。
通常、機械学習モデルはTensorFlow Lite、PyTorch、Matlabなどを使って作成されています。ところが、これらのツールは、組み込みソフトウェア開発者の快適な作業領域や経験の範囲外であることが多いのです。これらのツールを使いこなして正確な結果を出すまでには、時間とコストがかかります。
STM32の機械学習エコシステムにあるNanoEdgeというツールは、機械学習の専門知識や経験のない開発者が機械学習アプリケーションを育成し、デバイスに展開できるように支援するものです(図2)。
たとえば、異常(値)検出、分類、回帰などの用途に対応した機械学習ライブラリを簡単に作成することができます。作成後、STM32マイクロコントローラに展開することができます。
図2:開発者は、NanoEdgeを使用することで、機械学習の開発プロセス全体をステップバイステップで学習することができます。(画像提供:STMicroelectronics)
では機械学習の専門家がいる組み込みソフトウェア開発チームはどうでしょうか?
開発チームに機械学習の専門家がいる場合は、チームメンバーが、STM32マイクロコントローラ用の機械学習モデルを開発するために、より幅広い種類のツールを利用できるようになります。たとえば、それらの専門家からTensorFlow LiteやPyTorch、Matlabなどのツールの使用方法を教えてもらうことでモデルを作成できるようになります。よく起きる問題は、これらのツールによって生成されるライブラリが、最適化されていないため、マイクロコントローラ上であまり効率的に実行されないことです。
STM32ファミリを使用する場合には、開発者はSTM32Cube.AIプラグインを活用することで、機械学習モデルをインポートし、STM32マイクロコントローラ上で効率的に実行されるように最適化することができます。つまり、このツールにより、開発者は、開発した機械学習モデルをチューニングし、ターゲットとなるマイクロコントローラ上で実行できるわけです。そのための手順はまず、図3に示すように、開発したモデルをツールチェーンにインポートすることです。次の手順は、モデルの変換、およびネットワークの解析と検証を行うことです。これらの手順を完了したら、STM32CubeIDEを使ってコードを生成し、モデルを取り巻く機械学習フレームワークを作成するだけで、組み込みソフトウェア開発を行うことができます。
図3:正弦波発生器の機械学習モデルをSTM32CubeIDE.AIにインポートしている様子(画像提供:Beningo Embedded Group)
組み込みソフトウェア開発者は、機械学習モデルへの適切な入力と、結果を確認するためのコードを提供しなければなりません。結果に対してアクションを実行することもできれば、結果の平均値を取ったり、アプリケーションにとって意味のある任意の方法で結果を操作することもできます。図4は、モデルの実行と結果を確認するための簡単なアプリケーションループを示したものです。
図4:機械学習モデルを取り巻くメインループ(画像提供:Beningo Embedded Group)
まとめ
機械学習は、TinyMLのお蔭もあって、急速に組み込みアプリケーションに浸透しつつあります。機械翻訳の開発を成功させるには、プラットフォームを活用する必要があります。ほぼ毎日、プラットフォームに新しい選択肢が登場しているようですが、STM32のエコシステムは、開発者にシンプルでスケーラブルなソリューションパスを提供します。
このエコシステムを使用すると、機械学習の経験がある開発者は、従来のツールとSTM32CubeIDE.AIプラグインを使って、ソリューションの最適化とチューニングを行うことができます。一方、機械学習の専門知識・専門家を持たないチームでも、NanoEdgeを活用することで、簡単に機械学習ライブラリを開発し、迅速かつコスト効率よくソリューションを稼働させることができるのです。
Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum


