「叩く」から「洞察」へ - AutoMLとZephyr®を活用したTinyMLにより、ドリアンの熟度を検出する
質問
ドリアンの熟度は、人が叩いた音によって判断できます。では、エッジのデバイスで同じことを確実に行うには、なぜマイクとモデルを用意するだけでは不十分なのでしょうか?
回答
「叩く」という行為は、物理的な入力にすぎず、それだけで、熟度を判断するための完全かつインテリジェントな処理を構築できるわけではありません。信頼性の高いエッジAIのシステムを実現するには、異なる音響応答に基づいて安定した判断を下せる機能を実装する必要があります。叩く力、叩く位置、背景ノイズ、個々の果実ごとのばらつきは、いずれも信号に影響を及ぼす可能性があります。そのため、単純な特徴量を対象として、適切な閾値を設定することは困難です。本稿で紹介するシステムでは、信号処理によって未処理のオーディオ・データから周波数成分の時間的な変化を特徴として抽出します。また、AutoMLにより、量子化されたTinyMLのモデルとして配備するのに適したコンパクトなCNNアーキテクチャの探索を支援します。更に、Zephyrを採用していることから、オーディオ・データの取得、特徴の抽出、推論、表示の機能を統合するための組み込みソフトウェア・フレームワークが得られます。最終的なエッジ側のパイプライン・システムは、単に叩いた音を聴き取るモデルではなく、物理信号を信頼性の高いリアルタイムの判断に変換する機能を提供します。

はじめに
ドリアンは、東南アジアを中心に栽培されている大型の熱帯果実です。多くの場合、その熟度は、人が叩いた音を聴き取ることで判定されます。本稿では、エッジAIによる処理によってこの作業を代替するシステムを紹介します。そのシステムでは、ドリアンを叩いた際に発生する振動の信号の特性を解析します。熟度の異なるドリアンには、内部の果肉の物理的な状態に違いがあります。そのため、叩いたときの振動応答にも違いが現れます。その違いを分析し、個々のドリアンの硬さ、密度、水分量などを間接的に評価します。本稿で紹介するシステムでは、このことをドリアンの分類/判定の基本的な原理として使用します。
先述したように、本稿で紹介するシステムでは、周波数成分の時間的な変化を特徴として抽出します。そのような形で振動応答の特性を解析すれば、ドリアンを切り開くことなく、その熟度を判定できます。つまり、製品を無駄にすることなく、即座に解析結果が得られるので、大規模なスクリーニングに適しています。この技術は、農産物や生鮮食品の産地や小売店での選別/確認に利用されるようになっています。音響による農産物の品質評価に用いられる非破壊検査の代表的な例だと言えます。
従来の手法では、分類/判定の主要な指標としてスペクトル重心(周波数領域における信号のエネルギーの重心)を抽出していました。この方法は、制御された条件下においては有用です。ただ、スペクトル重心は、外部のノイズ、打撃の強さと位置、個体ごとのばらつき(例えば、果実の大きさ、果皮の厚さ、とげの形状)に対して非常に敏感です。そのため、ロットや環境が変わると測定の堅牢性が低下することが少なくありません。それに対し、AIを利用する手法では、周波数成分の時間的な変化を入力として使用し、軽量な畳み込みモデルや系列モデルについて学習します。それにより、識別能力と耐ノイズ性を備えた特徴表現を取得します。周波数成分の時間的な変化を抽出する方法としては、短時間フーリエ変換(STFT:Short-time Fourier Transform)やメル・スペクトログラムを使用します。それらの手法とデータ拡張/ドメイン適応を組み合わせることにより、各モデルでは、異なる状況に対する汎化性能が大幅に向上します。また、モデル量子化とニューラル・アーキテクチャ探索(NAS:Neural Architecture Search)を利用すれば、遅延と消費電力を抑えつつコンパクトなネットワークをエッジに配備できます。そうすれば、生産現場における選別や小売店における品質の検査に必要なスループットの要件を満たせます。つまり、AIによってドリアンの熟度を分類する方法を採用すれば、単一のスペクトル重心を閾値として使用する方法と比べ、現実の環境に配備する場合に優れた堅牢性とスケーラビリティが得られます。更に、不確実性の推定とオンラインの再較正を組み合わせれば、運用環境における長期的な安定性と保守性も確保できます。
システムのアーキテクチャ
図1に、本稿で紹介するシステム全体のアーキテクチャを示します。このシステムは、オーディオ・コーデック「MAX9867」、AIに対応するMCU「MAX78002」、TFT液晶ディスプレイ・モジュール(Sitronix Technology製のコントローラ/ドライバIC「ST7789V」がベース)の3つから成ります。具体的な使い方としては、まず金属製のナイフでドリアンを叩くことにより、振動の信号または音響の信号を発生させます。それらの信号を、ナイフの先端に取り付けたマイクと振動センサーによって収集します。それらのアナログ信号はMAX9867によってデジタル化され、I2SのフォーマットでMAX78002にストリーミングされます。それを受けた同MCUは、特徴を抽出するための信号処理のアルゴリズムとCNNによる推論を実行します。最後に、ドリアンの熟度の判定結果を液晶ディスプレイに表示します。
本稿で紹介するのは、ハードウェア、AutoML用のツール、システム・レベルのソフトウェア・サポートを組み合わせた完全なソリューションです。具体的には、MAX78002向けのAI開発ツール群「ai8x」によってモデルの探索と量子化の処理を実行します。また、Zephyrに対応するソフトウェア開発環境「CodeFusion Studio™」を使用することにより、統合の作業を簡素化し、配備を加速します。
データセットと信号のパイプライン
本稿の冒頭で説明したように、ドリアンの熟度は、それを叩いた際の振動の周波数応答から推定できます。そこで、この特徴を抽出するためにSTFTのアルゴリズムを適用します。図2に示したのは、信号処理用のパイプラインです。
まず、1秒間の音響信号を8kHzのレートでサンプリングします。次に、信号の強度の差を除去するために正規化の処理を適用します。続いてSTFTを実行し、信号の振幅(STFTスペクトル)を算出します。ここで、MAX78002のCNNアクセラレータがサポートする入力データの形状に合わせるために、STFTスペクトルにゼロ・パディングを施して折り畳んだ後、TinyDurianNetに入力して推論を行います。
このソリューションでは、STFTスペクトルをRGBの画像に変換し、データセットとして使用します。初期のデータセットに含まれるサンプルの数は105(完熟に近いものが35、完熟が35、未熟が35)です。そして、実際のスライディング・ウィンドウを利用したサンプリングの挙動を模擬するために、ウィンドウ内でSTFTスペクトルをランダムにスライドさせることでデータを拡張しました(図3)。その結果、データセットは1155サンプルになりました。そのうち20%をテスト用のデータセット、80%を学習用のデータセットとして使用します。
AutoMLによる量子化エッジ・モデルの自動反復
エッジのインテリジェンスの配備に向けては、ニューラル・ネットワークのモデルの設計が極めて重要です。通常、お客様はai8xのツールが提供するサンプルのモデルを選択することになります。あるいは、独自のネットワークのアーキテクチャを設計し、自身が所有しているデータセットを使用して学習/推論を行うこともあるかもしれません。しかし、後者の方法では、通常、満足できる学習結果が得られることはないでしょう。なぜなら、MAX78002の量子化モデルは低ビットの重み(INT8/INT4/INT2)を使用しており、各重みが保持できる情報量が非常に限られているからです。その結果、FP32(32ビット単精度浮動小数点)をベースとする従来のモデルについて学習する場合と比べ、安定して結果を収束させることが非常に難しくなります。また、ネットワークのアーキテクチャの設計に対する要求も厳しくなります。したがって、AutoMLを採用して最適なモデル・アーキテクチャを探索するのが有効なアプローチになります。
ai8xは、OFAと呼ばれるAutoMLによる学習用パイプラインを提供します。OFAの目的は、1つのモデル(supernet)について学習することで、それと同等の性能を備える複数の小規模なサブネット(subnet)を自動的に取得できるようにすることです。この処理は、大きく3つの段階に分けられます。以下、それぞれについて詳しく説明していきます。
supernetの学習
supernetは、より深い層、より大きな畳み込みカーネル・サイズ、より多くのチャンネルを備えた巨大なCNNです。FP32をベースとしており、本稿で例にとるドリアンの分類のタスクに向けて容易に過学習させることができます。しかし、MCUに直接配備することはできません。この分類のタスクでは、図4に示すように、逐次型CNNをベースとするsupernetを手作業で作成しました。OFAにおいて、supernetについて学習する際に主要な意味を持つ考え方は、知識蒸留(KD:Knowledge Distillation)と重み共有の2つです。上述したように、OFAの目的は、1つのsupernetを学習することで複数のsubnetを自動的に得ることです。言い換えれば、目的は最高の精度のsubnetを反復探索することではありません。その場合、最適な解の探索には多大な時間がかかるからです。ただ、探索中に見つかるどのsubnetについても、精度の偏差が大きくならないことが求められます。したがって、学習済みのsupernetは可能な限りロバストなものでなければなりません。KDは、studentモデル(通常は小規模のモデル)の出力をteacherモデル(通常は大規模のモデル)の出力に近づける機械学習の手法です。稿末に示した参考資料1は、OFAについて説明したオリジナルの文献です。それによれば、teacherモデルは対象となるsupernetであり、studentモデルはsupernetからサンプリングしたアーキテクチャ上のsubnetです。subnetのサンプリングはsupernetの可変構造によって可能になります。小規模なsubnetを形成する際には、カーネルのサイズ、深さ、幅を縮小できます。KDの各反復において、studentモデルはsupernetの重みを再利用し、更新されたパラメータはsupernetに直接書き戻されます。KDと重み共有を組み合わせることで、subnet間の精度と一貫性が確保されます。
NASの利用
ロバストなsupernetについて学習したら、NASを適用してTinyDurianNetと呼ばれる小規模なsubnetを自動探索します。OFAは、進化的探索戦略に基づいてsubnetのアーキテクチャを反復探索します。強化学習(RL:Reinforcement Learning)をベースとするNASやDARTS(Differentiable Architecture Search)2など、従来のNASの探索手法と比べて、OFAで使用する進化的探索では必要なGPUの数と所要時間を抑えられます。つまり、探索のプロセスが非常に効率的だと言えます。NASでは、精度は同程度でありながらアーキテクチャが異なる複数のsubnetを候補として出力します。対象とするハードウェアの性能と消費電力に対する制約に応じ、最終的なTinyDurianNetとして適切なsubnetを選択できます。例えば、精度を優先する場合、パラメータの数が多いsubnetを選択するとよいでしょう。一方、リソースが限られたデバイスや低消費電力のデバイスを使用する場合には、パラメータの数が少ない小規模なsubnetの方が適している可能性があります。図5に示したのは、NASのプロセスで得られたFP32ベースのTinyDurianNetです。
量子化認識学習(QAT)
参考資料1として示したOFAに関する文献によれば、NASによって選択したFP32ベースのサブモデルは、追加の学習を行うことなく配備できます。しかし、MAX78002のCNNアクセラレータがサポートする重みはINT1、INT2、INT4、INT8だけです。そのため、TinyDurianNetをMAX78002に適応させるには、量子化認識学習(QAT:Quantization Aware Training)が必要になります。QATでは、学習中に低ビットの量子化誤差をシミュレーション(Fake Quantization)することにより、モデルが順伝播と逆伝播における量子化ノイズを許容できるように学習を実施します。それにより、精度の低い数値形式を使用するハードウェアに配備した際にも精度を維持できるようにします。ai8xのQATでは、バック・プロパゲーションにSTE(Straight-through Estimator)ルールを適用します。図6にQATのワークフローを示しました。QATの実施後には、INT8ベースのTinyDurianNetが得られます。これは、MAX78002に直接配備できます。
AutoMLによる学習/性能の評価結果
AutoMLによる学習全体には、NVIDIA製のGPU(Graphics Processing Unit)「GeForce RTX 4090」を1つ使用しました。表1にOFAの学習に関する設定と所要時間の関係をまとめます。
| タスク | 学習率 | エポック数/反復回数 | 所要時間 |
| KD-Stage0(フルモデルの学習) | 0.001 | 200 | 1時間 |
| KD-Stage1(可変カーネル) | 0.001 | 3000 | |
| KD-Stage2(可変深度) | 0.001 | 2500 | |
| KD-Stage3(可変幅) | 0.001 | 9300 | |
| NAS | 50 | 10分 | |
| QAT-subnet1 | 0.001 | 300 | 8分 |
| QAT-subnet2 | 0.001 | 300 | |
| QAT-subnet3 | 0.001 | 300 |
OFAの手順により3つのsubnetについて学習し、そのうち1つをTinyDurianNetとして選択します。図7に、テスト・セットにおけるTinyDurianNetの推論精度を示しました。
実機によるテストの結果
次に、実機を用いて、設計したシステムのテストを実施しました。図8に示したのがテスト用のプラットフォームです。このプラットフォームは、MAX78002の評価用キット「MAX78002EVKIT」をベースとしています。このテストでは、ドリアンを叩いた際の振動の信号を予めいくつか記録しておきました。その信号のデータをWAVファイルに変換し、PCからオーディオ信号として出力します。その信号は、オーディオ・ラインを介し、ランダムなタイミングでMAX78002EVKITに入力されます。
図9に示したのが、テストの結果の例です。
ご覧のように、システムはドリアンを正しく分類しています。この結果は、システムのロバスト性の高さを表しています。表2に、システムの推論速度と消費電力についてまとめておきます。
| 指標 | 性能 |
| CNNの推論時間 | 約3.06ミリ秒 |
| 消費電力 | 約180mW |
AutoMLから配備までを支えるZephyr
ai8xを利用すれば、MAX78002上で動作するベアメタルのプロジェクトとして学習済みのモデルをエクスポートできます。また、CNNアクセラレータとやり取りするためのサンプル・コードも提供されます。それにより、お客様は推論用のパイプラインを迅速に構築できます。しかし、ニューラル・ネットワークによる推論は、完全なエッジAIのシステムを構成する要素の1つにすぎません。図1に示したように、オーディオ・ストリームはI2SとDMA(Direct Memory Access)を組み合わせたモードで転送されます。また、分類結果はGUIをサポートする液晶ディスプレイに表示する必要があります。つまり、実用的なシステムを構築するためには、ペリフェラルの制御機能、データフローの制御機能、液晶ディスプレイのユーザ・インターフェースも開発する必要があります。なお、本稿の例では、LVGL(Light and Versatile Graphics Library)を利用してユーザ・インターフェースを構築しました。サブシステムの数と並行性が増すにつれて、ベアメタルのアーキテクチャの複雑さと保守コストは大幅に増大します。例えば、複数のドライバやミドルウェアを手作業で移植/変更しなければなりません。この問題を回避するために、本稿で紹介したシステムではZephyrを採用しました。同OSのバージョン4.1は、デバイス・ツリーをベースとするハードウェアの抽象化機能、統一されたドライバ・モデル、マルチスレッドと同期プリミティブの機能、DMAを利用するペリフェラル・サブシステム、モジュール型のビルド/パッケージのアーキテクチャを提供します。
これらを利用することにより、MAX78002上でのI2Sデータの取得、STFTスペクトルの特徴の抽出、CNNによる推論、液晶ディスプレイの操作などに関する機能を迅速に統合できます。実際、そのために必要な作業は大幅に削減されます。また、アルゴリズムのレベルから実際に配備できるエッジAI製品までの移行を加速することが可能になります。
まとめ
本稿では、MAX78002をAutoML、Zephyrと組み合わせて構成したシステムの例を紹介しました。それを通して、元の信号の取得からTinyMLによる推論までを網羅する、完全かつ高効率なエッジAIのワークフローを実現できることを示しました。しかも、リアルタイム性能を高め、消費電力を抑え、モデル設計の作業を最小化できることも明らかにしました。本稿で紹介したソリューションは、お客様がセンサーをベースとするアプリケーションに機械学習を組み込むための実用的な道筋を示しています。
本稿で紹介したアーキテクチャは、信号処理と機械学習に対応するパイプラインをベースとする他のタスクにも迅速に転用できます。つまり、アナログ・デバイセズのエッジAI向けプラットフォームは高い汎用性を備えています。これを活用することにより、開発を加速しつつ、堅牢性が高い製品レベルのエッジ向けインテリジェンスを実現することが可能になります。
References
1Han Cai、Chuang Gan、Tianzhe Wang、Zhekai Zhang、Song Han「Once-for-All: Train One Network and Specialize it for Efficient Deployment(Once-for-All - 1つのネットワークについて学習し、効率的な配備に向けて特化する)」2020年4月
2Hanxiao Liu、Karen Simonyan、Yiming Yang「DARTS:Differentiable Architecture Search(DARTS - 微分可能なアーキテクチャ探索)」2019年4月

