テクノロジーの進歩の歴史を振り返ってみると、別々に進化したテクノロジー同士がやがて一つに融合し、世界を一変させるという事例に事欠きません。原子力とジェットエンジンとの融合は、原子力空母を生み出し、20世紀の戦争の様相を一変させました。コンピュータと無線通信技術との融合は、スマートフォンの誕生をもたらし、それによって、人とテクノロジーとのつながり方、さらには人と人とのつながり方までもが大きく変わりました。今、次に時代を変える技術融合として期待が高まっているのが、組み込み機器とAI(人工知能)です。ここでは、この融合がどのような進化を遂げているのかについて見ていきたいと思います。
エッジコンピューティングの登場
AIという概念は、古くは古代ギリシャ時代の文献にも見られますが、20世紀前半になるまで、実際にテクノロジーとして本格的なAI開発が行われることはありませんでした。基本的にAIは、デジタル技術がまるで人間の脳のように、アナログ世界と効率的にやり取りすることを可能にします。現実の世界でAIを実用化するためには、自動運転車にように、多数の動的入力を処理しながら、電子機器と物理的世界とのやり取りがほぼ瞬時に行われる必要があります。幸いにも、組み込み電子システムは、機械学習アルゴリズムの開発とともに進化を遂げてきました。この2つが出会ったことから、エッジコンピューティングという概念が生まれました。
エッジコンピューティングは、これまでクラウド上の強力な処理能力をもつハードウェアでしか達成しえなかった処理能力を物理/デジタル・インターフェイスのエッジにあるローカル機器にもたらします。さらに、マイクロコンピュータやセンサなど、低価格ながらも優れた組み込み部品の普及によって、規模と機能の両面において、自動化技術に革命を起こしています。
TensorFlow Lite:小さなハードウェアに大きな機械学習アルゴリズムを
TensorFlowは、複雑な数値計算アルゴリズムや機械学習 (ML)をプロジェクトに簡単に導入するための、Googleによって開発されたオープンソースソフトウェアライブラリです(図1)。Googleによると、このライブラリは、Python(すべてのプラットフォームでPython 3.7以降)とC言語に対して安定したアプリケーションプログラミングインターフェイスを提供し、また、 C++、Go、Java、 JavaScriptに対しては下位互換性を保証しないAPIを提供しています。さらに、AppleのSwift言語にはアルファ版がリリースされています。
図1:GoogleのTensorFlow Lite for Microcontrollerウェブサイト (画像:Google)
TensorFlowは、ディープニューラルネットワーク(Deep Neural Network:DNN)の開発と活用に向けて、いわゆるエンドツーエンドの機械学習サポートを提供します。DNNは、パターン認識や物体の検出と分類を得意とするMLの実装の1つです。TensorFlowライブラリは、学習と推論という機械学習プロセスの両フェーズをサポートします。学習フェーズでは、ディープニューラルネットワーク(DNN)を訓練しますが、これにはサーバーグレードのハードウェアやGPU(グラフィックスプロセッシングユニット)などによく見られるような大きな計算能力が必要です。最近では、学習をサポートするために特定用途向け集積回路TPU(Tensor Processing Unit)が開発されました。2番目の推論フェーズでは、訓練されたDNNを実世界で使用し、新たな入力について、学習したモデルに基づき分析を行い、それに基づき推奨を行います。このフェーズは、組み込み製品の開発者にとって非常に興味深いものとなるはずです。
TensorFlow Lite for Microcontrollers (TensorFlowライブラリのサブセット)のリリースは、ほとんどの組み込みシステムアプリケーションでよく見られるメモリに制約のあるデバイス上で推論を実行することを特に目的としています。新しいネットワークを学習させることはできません。それにはやはりハイエンドのハードウェアが必要になります。
機械学習のユースケース
人工知能、ニューラルネットワーク、機械学習という言葉を聞くと、SFか特別な専門用語を想像する人が多いと思います。では、これらの新しいテクノロジーは実際に何を意味するのでしょうか。
組込みシステムで実行されるAIアルゴリズムの目的は、センサから収集された実世界のデータを、従来の手続き型またはオブジェクト指向のプログラミング手法では実現できなかった効率的な方法で処理することです。おそらく最も注目されているユースケースは、従来の自動車から、車線逸脱警報や衝突防止などの自動運転支援機能を搭載した自動車、さらには人間による制御を必要としない完全自動運転を目指す自動車の進化に見られます。ただし、これ以外にもあまり目立たないところでディープラーニングがすでに多く活用されています。スマートフォン音声認識やAmazonのAlexaのような仮想アシスタントにも、ディープラーニングアルゴリズムが採用されています。そのほかにも、セキュリティアプリケーションの顔検出や、Zoomのような遠隔会議システムでのグリーンスクリーンを使わない背景の置換など、さまざまなユースケースがあります。
IoTデバイスのように、機械学習アルゴリズムとインターネット接続の両方を活用するデバイスの大きな利点の1つは、簡単な無線ファームウェア更新で、時間の経過とともに製品が新しいモデルやより優れた学習モデルを統合できるという点です。つまり、新しいモデルとファームウェアがハードウェアの物理メモリと処理能力の範囲内である限り、製品は時間とともに賢くなり、その機能も製造時に提供されていたものに制限されることはありません。
図2: TensorFlowモデルを、マイクロコントローラなどのメモリ制限のあるデバイスで使用できるバージョンに変換する。(画像: NXP)
ワークフロー
TensorFlow Lite for Microcontrollersに提供されているドキュメントによると、開発ワークフローは5つの主要なステップに分けられます(図2)。ステップは次のとおりです。
TensorFlow Liteライブラリと互換性のある組み込みプラットフォームを選択する際に、開発者が注意すべき点は次のとおりです。
次のステップ
Googleでは組み込みプラットフォームで実行できるサンプルとして、 事前に訓練された4つのモデルを提供しています。これらのモデルはわずかな変更を加えるだけで、さまざまな開発ボードで使用することができます。サンプルは次のとおりです。
これから数ヶ月にわたり、これらのモデルを次のさまざまなマイクロコントローラプラットフォーム(図3)上で実行させる方法について、順を追って説明していきたいと思います。
図3: 本プロジェクトシリーズで使用する開発ボード: (左上から時計回りに) NXP i.MX RT1060、Infineon XMC 4700 Relax、SiLabs SLSTK3701A EFM32 GG11 スターターキット、Microchip SAM E54 Xplained Pro。(画像:マウザー)
マイケル・パークス:カスタム電子機器設計スタジオ・組み込みセキュリティ研究会社Green Shoe Garage (米国メリーランド州) の共同設立者。科学的・技術的トピックに対する社会の意識向上に向けてGears of Resistance Podcastを制作。メリーランド州プロフェッショナルエンジニア (P.E.) 資格を取得、ジョンズ・ホプキンス大学にてシステム工学で修士号を取得。