2021年9月22日水曜日

複雑なMLも簡単に実装-Google TensorFlow Lite

 


テクノロジーの進歩の歴史を振り返ってみると、別々に進化したテクノロジー同士がやがて一つに融合し、世界を一変させるという事例に事欠きません。原子力とジェットエンジンとの融合は、原子力空母を生み出し、20世紀の戦争の様相を一変させました。コンピュータと無線通信技術との融合は、スマートフォンの誕生をもたらし、それによって、人とテクノロジーとのつながり方、さらには人と人とのつながり方までもが大きく変わりました。今、次に時代を変える技術融合として期待が高まっているのが、組み込み機器とAI(人工知能)です。ここでは、この融合がどのような進化を遂げているのかについて見ていきたいと思います。

 

エッジコンピューティングの登場

AIという概念は、古くは古代ギリシャ時代の文献にも見られまが、20世紀前半になるまで、実際にテクノロジーとして本格的なAI開発が行われることはありませんでした。基本的にAIは、デジタル技術がまるで人間の脳のように、アナログ世界と効率的にやり取りすることを可能にします。現実の世界でAIを実用化するためには、自動運転車にように、多数の動的入力を処理しながら、電子機器と物理的世界とのやり取りがほぼ瞬時に行われる必要があります。幸いにも、組み込み電子システムは、機械学習アルゴリズムの開発とともに進化を遂げてきました。この2つが出会ったことから、エッジコンピューティングという概念が生まれました

 

エッジコンピューティングは、これまでクラウド上の強力な処理能力をもつハードウェアでしか達成しえなかった処理能力を物理/デジタル・インターフェイスのエッジにあるローカル機器にもたらします。さらに、マイクロコンピュータやセンサなど、低価格ながらも優れた組み込み部品の普及によって、規模と機能の両面において、自動化技術に革命を起こしています。 

 

TensorFlow Lite:小さなハードウェア大きな機械学習アルゴリズム

TensorFlowは、複雑な数値計算アルゴリズムや機械学習 ML)をプロジェクトに簡単に導入するための、Googleによって開発されたオープンソースソフトウェアライブラリです(1)。Googleによると、このライブラリは、Python(すべてのプラットフォームでPython 3.7以降)とC言語に対して安定したアプリケーションプログラミングインターフェイスを提供し、また、 C++GoJava JavaScriptに対しては下位互換性を保証しないAPIを提供しています。さらに、AppleSwift言語にはアルファ版がリリースされています。


1GoogleTensorFlow Lite for Microcontrollerウェブサイト (画像:Google

TensorFlowは、ディープニューラルネットワーク(Deep Neural NetworkDNN)の開発と活用に向けて、いわゆるエンドツーエンドの機械学習サポートを提供します。DNNは、パターン認識や物体の検出と分類を得意とするMLの実装の1つです。TensorFlowライブラリは、学習と推論という機械学習プロセスの両フェーズをサポートします。学習フェーズでは、ディープニューラルネットワーク(DNN)を訓練しますが、これにはサーバーグレードのハードウェアやGPU(グラフィックスプロセッシングユニット)などによく見られるような大きな計算能力が必要です。最近では、学習をサポートするために特定用途向け集積回路TPUTensor Processing Unit)が開発されました。2番目の推論フェーズでは、訓練されたDNNを実世界で使用し、新たな入力について学習したモデルに基づき分析を行いそれに基づき推奨を行います。このフェーズは、組み込み製品の開発者にとって非常に興味深いものとなるはずです。

TensorFlow Lite for Microcontrollers TensorFlowライブラリのサブセット)のリリースは、ほとんどの組み込みシステムアプリケーションでよく見られるメモリに制約のあるデバイス上で推論を実行することを特に目的としています。新しいネットワークを学習させることはできません。それにはやはりハイエンドのハードウェアが必要になります。

 


機械学習のユースケース

人工知能、ニューラルネットワーク、機械学習という言葉を聞くと、SFか特別な専門用語を想像する人が多いと思います。では、これらの新しいテクノロジーは実際に何を意味するのでしょうか。

組込みシステムで実行されるAIアルゴリズムの目的は、センサから収集された実世界のデータを、従来の手続き型またはオブジェクト指向のプログラミング手法では実現できなかった効率的な方法で処理することです。おそらく最も注目されているユースケースは、従来の自動車から、車線逸脱警報や衝突防止などの自動運転支援機能を搭載した自動車、さらには人間による制御を必要としない完全自動運転を目指す自動車の進化に見られます。ただし、これ以外にもあまり目立たないところでディープラーニングがすでに多く活用されています。スマートフォン音声認識やAmazonAlexaのような仮想アシスタントに、ディープラーニングアルゴリズムが採用されています。そのほかにも、セキュリティアプリケーションの顔検出や、Zoomのような遠隔会議システムでのグリーンスクリーンを使わない背景の置換など、さまざまなユースケースがあります。

 

IoTデバイスのように、機械学習アルゴリズムとインターネット接続の両方を活用するデバイスの大きな利点の1つは、簡単な無線ファームウェア更新で、時間の経過とともに製品が新しいモデルやより優れた学習モデルを統合できるという点です。つまり、新しいモデルとファームウェアがハードウェアの物理メモリと処理能力の範囲内である限り、製品は時間とともに賢くなり、その機能も製造時に提供されていたものに制限されることはありません。

 

2 TensorFlowモデルを、マイクロコントローラなどのメモリ制限のあるデバイスで使用できるバージョンに変換する。(画像: NXP

 

ワークフロー

TensorFlow Lite for Microcontrollersに提供されているドキュメントによると、開発ワークフローは5つの主要なステップに分けられます(2)。ステップは次のとおりです。

  1. TensorFlowモデルを生成/取得する: モデルは、変換後、ターゲットデバイスに収まるよう小さくする必要があり、サポートされている操作のみ使用が可能です。現在サポートされていない操作を使用したい場合は、カスタム実装を行うことができます。

  2. モデルをTensorFlow Lite FlatBufferに変換する: TensorFlow Liteコンバータを使用して、モデルを標準のTensorFlow Liteフォーマットに変換します。 量子化されたモデルを出力すると、サイズが小さく、実行効率が向上します。

  3. FlatBufferCバイト配列に変換する: モデルは、単純なCファイルの形式で読み取り専用プログラム メモリに格納します。標準ツールを使用すれば、FlatBufferCバイト配列に変換することができます。

  4. TensorFlow Lite for MicrocontrollersC++ ライブラリを統合する: データを収集し、C++ライブラリを使用して推論を実行し、結果を処理できるようマイクロコントローラ・コードを記述します。

  5. デバイスにデプロイする: プログラムをビルドし、デバイスにデプロイします。

 

TensorFlow Liteライブラリと互換性のある組み込みプラットフォームを選択する際に、開発者が注意すべき点は次のとおりです。

 

  1. Arm Cortex-MプロセッサやESP32ベースシステムなどの32ビット・アーキテクチャに基づいています。

  2. メモリサイズが数十キロバイトで測定されるシステムで実行可能です。

  3. TensorFlow Lite for MicrocontrollersC++ 11で記述されています。

  4. TensorFlow Lite for Microcontrollersは、Arduinoライブラリとして利用できます。また、フレームワークは、Mbedなどの開発環境のプロジェクトも生成できます。

  5. オペレーティングシステムのサポート、動的メモリ割り当て、標準のC/C++ライブラリは必要ありません。

 

次のステップ

Googleでは組み込みプラットフォームで実行できるサンプルとして、 事前に訓練された4つのモデルを提供しています。これらのモデルはわずかな変更を加えるだけで、さまざまな開発ボードで使用することができます。サンプルは次のとおりです。

  • Hello World: TensorFlow Lite for Microcontrollersの基本的な使い方を実演します。

  • Micro-Speech: マイクロフォンで音声を取り込み、"yes""no"という単語を検出します。

  • Person Deflection: イメージセンサでカメラデータを取り込み、人の在/不在を検出します。

  • Magic Wand: 加速度データを取り込み、3つの異なるジェスチャーに分類します。


これから数ヶ月にわたり、これらのモデルを次のさまざまなマイクロコントローラプラットフォーム(3)上で実行させる方法について、順を追って説明していきたいと思います。

 

  


3: 本プロジェクトシリーズで使用する開発ボード:  (左上から時計回りに) NXP i.MX RT1060Infineon XMC 4700 RelaxSiLabs SLSTK3701A EFM32 GG11 スターターキット、Microchip SAM E54 Xplained Pro。(画像:マウザー)

 

★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★


著者

 


マイケル・パークス

 

マウザー・エレクトロニクスの寄稿ライター。カスタム電子機器設計スタジオ・技術コンサルタント会社Green Shoe Garage(米国メリーランド州)の経営者でもある。科学的・技術的トピックに対する社会の意識向上に向けてS.T.E.A.M. Power Podcastを制作。メリーランド州プロフェッショナルエンジニア(P.E.)資格を取得、ジョンズ・ホプキンス大学にてシステム工学で修士号を取得。

 

デジタル治療でヘルスケアの未来が変わる

  医療ヘルスケアの未来   「あのう、先生、こうすると痛むんですが」。「その症状に関するアプリは、もうダウンロードしてみましたか」。医師と患者との間で こ んな会話が、不整脈、うつ病、パーキンソン病など、多くの病気について交わされるようになるのは、もうそんなに遠い先...