マルツTOP > APPLICATION LAB TOPページ おすすめ技術記事アーカイブス > 組み込みIoTノードで機械学習コードを実行してオブジェクトを簡単に識別する

組み込みIoTノードで機械学習コードを実行してオブジェクトを簡単に識別する

著者 Bill Giovino 氏
Digi-Keyの北米担当編集者 提供
2020-10-08

マルツ掲載日:2021-2-8


 動的環境で動作するIoTネットワークは、物体検出だけでなく、セキュリティ、環境モニタリング、安全性、産業用IoT(IIoT)などのアプリケーションでの視覚的なオブジェクト識別を含むように拡張されています。オブジェクトの識別は適応性があり、機械学習(ML)モデルを用いて行われるため、一から学習して効率的に実装することが難しい複雑な分野です。

 この難しさは、MLモデルがデータセットと同じ程度しか有効でないという事実に起因します。そして、正しいデータを取得したら、それに基づいて動作するようにシステムを適切にトレーニングしなければ実用レベルになりません。

 この記事では、GoogleのTensorFlow Lite for Microcontrollers MLモデルを、Microchip Technologyのマイクロコントローラに実装する方法を開発者に紹介します。次に、TensorFlow Liteで画像分類とオブジェクト検出学習データセットを使用して、最小限のカスタムコーディングで簡単にオブジェクトを特定する方法について説明します。

 続いて、開発者がMLの基本に慣れるには打って付けのAdafruit IndustriesのTensorFlow Lite MLスターターキットを紹介します。

組込みビジョンシステムのためのML

 広い意味でのMLは、コンピュータや組込みシステムに人間と同様のパターン認識能力を与えます。人間の感覚という観点からすると、これはマイクやカメラなどのセンサを使用して、聴覚や視覚の人間の知覚を模倣することを意味します。

 センサは音声や視覚データのキャプチャに簡単に使用できますが、いったんデータをデジタル化して保存したら、メモリに保存されている既知の音や物体を表すパターンと照合できるように処理する必要があります。

 ここでの課題は、たとえば、視覚的なオブジェクトに対してカメラで取り込まれた画像データが、メモリに保存されているオブジェクトのデータと正確には一致しないことです。オブジェクトを視覚的に識別する必要があるMLアプリケーションは、カメラによってキャプチャされたパターンをメモリに保存されたパターンに正確かつ効率的に一致させるようデータを処理する必要があります。

 センサで取り込んだデータを照合させるために使用するライブラリやエンジンにはさまざまなものがあります。TensorFlowは、パターンマッチングに使用されるオープンソースのコードライブラリです。

 TensorFlow Lite for Microcontrollersコードライブラリは、マイクロコントローラ上で実行するよう特化して設計されており、制約のあるハードウェアで実行するためのメモリ要件とCPU要件が軽減されています。具体的には、32ビットのマイクロコントローラが必要で、25Kバイト未満のフラッシュメモリを使用します。

 ただし、TensorFlow Lite for MicrocontrollersがMLエンジンであるとはいえ、システムには識別するパターンの学習データセットが必要です。MLエンジンがどれほど優れているかに関わらず、システムは学習データセットの良し悪しで成り立ちます。

 ビジュアルオブジェクトの場合、学習データセットの中には、多数の大きなモデルのために何ギガバイトものデータを必要とするものもあります。正確な一致を迅速に見つけるには、データが多いほど高性能CPUが必要になります。そのため、これらのようなアプリケーションは、通常、高性能コンピュータやハイエンドラップトップで実行されます。

 組込みシステムのアプリケーションでは、アプリケーションに必要な特定のモデルを学習データセットに保存するだけで済みます。システムが道具やハードウェアの認識向けの場合は、果物やオモチャを表すモデルは削除できます。

 これにより、学習データセットのサイズを小さくすることができます。その結果、組み込みシステムのメモリの必要量を減らすことができ、コストを削減しながら性能を向上させることができます。

MLマイクロコントローラ

 TensorFlow Lite for Microcontrollersを実行するために、Microchip Technologyは、Arm Cortex-M4FベースのATSAMD51J20A-AFTマイクロコントローラICを内蔵したマイクロコントローラでの機械学習を対象としています(図1)。これは、512Kバイトのフラッシュメモリと192KバイトのSRAMメモリを備え、120MHzで動作します。

 ATSAMD51J19A-AFTは、Microchip TechnologyのATSAMD51MLマイクロコントローラファミリの一員です。車載用AEC-Q100グレード1品質基準に準拠し、-40℃〜+125℃で動作するので、最も過酷なIoTやIIoT環境にも対応します。これは低電圧マイクロコントローラであり、120MHz時に1.71V〜3.63Vで動作します。


図1:ATSAMD51J19Aは、120MHz動作のArm Cortex-M4Fコアをベースにしています。これは、512Kバイトのフラッシュと192KバイトのSRAMを備えたフル機能のマイクロコントローラです。(画像提供:Microchip Technology)

 ATSAMD51J19Aネットワークオプションには、産業用ネットワーク用のCAN 2.0Bと、ほとんどの有線ネットワーク用の10/100 Ethernetが含まれます。これにより、マイクロコントローラをさまざまなIoTネットワークで機能させることができます。USB 2.0インターフェースは、ホストとデバイスの両方の動作モードをサポートし、デバイスのデバッグやシステムネットワーキングに使用することができます。

 4Kバイトの命令キャッシュとデータキャッシュを組み合わせることで、MLコード処理時のパフォーマンスを向上させます。浮動小数点演算ユニット(FPU)は、生のセンサデータの処理だけでなく、MLコードのパフォーマンス向上にも役立ちます。

学習データセットの保存

 ATSAMD51J19Aは、外部プログラムやデータメモリの保存用にQSPIインターフェースも備えています。これは、オンチップフラッシュメモリの容量を超える学習データセットの追加データストレージとして役に立ちます。またQSPIは、外部高速プログラムメモリ拡張用のeXecute in Place(XiP)もサポートしています。

 ATSAMD51J19Aは、SD/MMCメモリカードホストコントローラ(SDHC)も搭載しており、MLコードと学習データセットのメモリスワップを簡単に行えるので、MLアプリケーションに非常に便利です。

 TensorFlow Lite for MicrocontrollersエンジンはATSAMD51J19Aの512Kバイトのフラッシュで実行できますが、学習データセットは定期的にアップグレードして改善することができます。学習データセットは、外部QSPIフラッシュまたはQSPI EEPROMに保存できます。

 また、ネットワーク構成によっては、ネットワーク経由でリモートアップグレードできます。ただし、システムによっては、メモリカードを、改良した学習データセットの別カードと物理的に交換するほうが便利な場合もあります。この構成では、開発者は、メモリカードをホットスワップするようにシステムを設計するか、それともIoTノードをシャットダウンするかを決定する必要があります。

 IoTノードのスペースが極端に限られている場合は、外部メモリを使用する代わりに、できるだけ多くのアプリケーションをマイクロコントローラのメモリに入れたほうが有利です。Microchip TechnologyのATSAMD51J20A-AFTは、ATSAMD51J19Aと類似しており、ピン互換ですが、1Mバイトのフラッシュと256KバイトのSRAMを備えており、データセットを学習するためのオンチップストレージが増えています。

TensorFlow Lite for microcontrollersを使用した開発

 Adafruit Industriesは、4317 TensorFlow Lite for Microcontrollers開発キット(図2)を使用してATSAMD51J19Aでの開発をサポートしています。このボードには2MバイトのQSPIフラッシュが搭載されており、学習データセットの保存に使用できます。キットには、ML音声認識用のマイク端子が付属しています。

 搭載されている1.8インチカラー160×128 TFT LCDは、開発とデバッグに使用できます。また、TensorFlow Lite for Microcontrollersを音声認識学習データセットと組み合わせて使用する場合には、音声認識のデモ用ディスプレイとしても使用できます。アプリケーションはさまざまな単語を認識し、それらを画面に表示することができます。

 また、Adafruit Industriesのキットには、8つの押ボタン、3軸加速度センサ、光センサ、ミニスピーカ、リチウムポリバッテリが搭載されています。ATSAMD51J19AのUSB2.0ポートは外に出されたコネクタで、バッテリの充電、デバッグ、プログラミングに使用できます。


図2:Adafruit Industriesの4317 TensorFlow Lite for Microcontrollers開発キットには、開発用のカラーTFT LCDが付属しており、MLの操作結果を表示できます。(画像提供:Adafruit Industries)

 Adafruitのキットには、TensorFlow Lite for Microcontrollersの最新版が付属しています。学習データセットは、USBポートを使用してATSAMD51J19Aマイクロコントローラの512Kバイトのフラッシュメモリにロードするか、2Mバイトの外部QSPIメモリにロードできます。

 画像認識評価には、TensorFlowオブジェクト検出学習セットを開発ボードにロードすることができます。開発ボードには、マイクロコントローラのパラレルポートとシリアルポートに接続するためのポートがあり、その多くは外部カメラに接続するために使用できます。

 マイクロコントローラに搭載されたオブジェクト検出学習セットにより、LCDを使用してオブジェクト検出ML処理の結果の出力を表示できるため、バナナを認識した場合、TFTディスプレイに認識した物体をパーセント付き信頼度とともに表示させることができるかもしれません。結果表示の例としては、次のように表示されるでしょう。

バナナ:95%
レンチ:12%
眼鏡:8%
くし:2%

 IoTオブジェクト検出アプリケーションの開発では、これにより誤った検出結果を診断するのに役に立ち、開発がスピードアップします。

結論

 ML(機械学習)は、マイクロコントローラのエンジンとモデルをゼロから開発し、エッジで効率的に実装するためには専門的なスキルを必要とする急成長中の分野です。ただし、低コストで高効率のマイクロコントローラや開発ボードで、TensorFlow Lite for Microcontrollersなどの既存のコードライブラリを使用すると、時間とコストを節約できます。その結果、IoTノード内のオブジェクトを迅速、確実、効率的に検出できる高性能なMLシステムを実現できます。



免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

 

このページのコンテンツはDigi-Key社より提供されています。
英文でのオリジナルのコンテンツはDigi-Keyサイトでご確認いただけます。
   


Digi-Key社の全製品は 1個からマルツオンラインで購入できます

※製品カテゴリー総一覧はこちら



ODM、OEM、EMSで定期購入や量産をご検討のお客様へ【価格交渉OK】

毎月一定額をご購入予定のお客様や量産部品としてご検討されているお客様には、マルツ特別価格にてDigi-Key社製品を供給いたします。
条件に応じて、マルツオンライン表示価格よりもお安い価格をご提示できる場合がございます。
是非一度、マルツエレックにお見積もりをご用命ください。


ページトップへ