『半導体業界の第一人者,AI業界を行く!』 Vol.16:Spresenseでスマートエッジデバイス

こんにちは,HACARUS 東京R&Dセンター所属のエッジ・エバンジェリスト 田胡治之です.この連載では,半導体業界で長年知識や情報を得てきた私,田胡がこれまでと異なるAI業界に飛び込み,そこから感じる業界のニュースやトピックを独自の視点で紹介したいと思います.今回は,Spresense をエッジデバイスとして使って模型モータ回転音の正常・異常の判別にトライします.

Edge Deviceでの模型モータ回転音の正常・異常の判別

本blog にて,Sony製Spresenseを使い,LASSO でボストン住宅データを分析しました[1].今回は エッジのスマートデバイスとしてSpresense を使い.模型モータ回転音を正常音か異常音かをリアルタイムに判別する実験を行いました.こちらのビデオは,試作したリアルタイムサウンドアナライザ(Realtime Sound Analyzer)を使って,工場騒音の中で,模型モーター回転音が正常音の範囲か,または正常範囲を逸脱して異常音か?をリアルタイムで判別しているシーンです.

▼動画

 

リアルタイムサウンドアナライザの概要,Spresenseへの実装,実験結果について述べます.

Edge Device でのサウンド処理のメリット

モータ回転音などのサウンドを分析するとき,よく使われるのは周波数分析です.周波数分析をクラウドで行うケースと,エッジデバイスで行うケースでデータ転送速度を比較します(Figure 1).

Figure 1 クラウドへのサウンドデータ転送量の比較

生のサウンドデータをクラウドに upload すると,データ転送速度704kbit/s が必要になります.これに対し,エッジデバイスでサウンドの周波数分析を行ってスペクトルデータを算出しクラウドに送れば,データ転送速度はわずか 1.231kbit/s ですむ計算です.571倍の差があります.もちろん対象音の性質に依存し,音楽のような常時変動する音には使えませんが,モーター回転音のようなほぼ定常音であれば使えるケースもあると考えます.更に,エッジデバイスで現在のスペクトルを正常音スペクトルと比較して,異常音発生時のみクラウドに通知すればデータ量は更に劇的に減り,クラウド処理の負担も下げられます.Spresenseは,音楽CDと同程度のサンプル速度 48,000回/秒でサウンドを取り込め,高速なFFT(Fast Fourier Transform)を使った周波数分析ができるので,この用途に向いていると考えます.

リアルタイムサウンドアナライザの概要と実験ステップ

試作したリアルタイムサウンドアナライザ(Realtime Sound Analyzer)と実験装置を Figure 2 に示します.

Figure 2  リアルタイムサウンドアナライザと実験装置

リアルタイムサウンドアナライザは,Spresense, Spresense に接続した Microphone と Operation Panel から構成されます(Figure 2 下部).分析対象音は,Model motor 回転音にPCスピーカーから流れる工場騒音が重畳された音です.模型モータと電源間に挿入された抵抗値を変えて,モータにかかる電圧を四段階(2.88V, 2.28V, 2.00V, 1.58V)に変化させます.4種の回転音の内,2.28V時の回転音を基準サウンド,即ち正常音とします.残り3種の回転音を異常音(Anormal sound)として検出できるか,を実験します.

リアルタイムサウンドアナライザは,基準サウンド取得モード(Reference sound capture mode)と,サウンドテストモード(Sound test mode)を持ち,モードスイッチで切り換えます.各モードの処理フローを Figure 3 に示します.最初に,モードスイッチを基準サウンド取得モードにセットし,基準サウンド取得ボタン(Reference sound capture switch)を押して,基準サウンドを取得します.このとき取得された基準サウンドに FFT(Fast Fourier Transform)をかけて周波数スペクトラムを計算します(Figure 3 左).それを Spresense 拡張ボード上の micro SDカードに書き込みます.これが基準音のスペクトラムモデルです.次にモードスイッチをサウンドテストモード(sound test mode)に切り替え,検査対象サウンドを分析します.このときSpresenseは, (1)対象サウンドの取得,(2)FFTで対象サウンドの周波数スペクトラム計算,(3)基準サウンドスペクトルと(2)との差の計算,(4)差を 正常/異常の判断基準値と比較し結果を LED に表示,のループを繰り返します(Figure 3 右).

Figure 3  リアルタイムサウンドアナライザの処理フロー

Spresense への実装 ーサウンド処理に強い Spresenseー

Sprensense ハードウェアは,サウンド入出力処理機能と電源制御機能を持つ CXD5247 チップと,ARM® Cortex®-M4Fを6コア持つ CXD5602 チップを中心とした構成です(Figure 4)[2].ソフトウェア開発環境は.Spresense Arduino 1.8.13 を使いました.コア間とサウンド入力機能間の通信をサポートする ASMPフレームワーク(ASsymmetric MultiProcessing)が提供されています[3][4].Spresense は,マイク入力を持っており,本実験ではアナログマイク1チャンネルを使いました.

Figure 4  SPRESENSE™ 搭載LSI (CXD5602/CXD5247) 仕様 [1]

Spresense での処理フローを Figure 5 に示します.MainCore のメインプログラムが,(1) CXD5247 でのサウンド取得(録音),(2) SubCore1 の FFTプログラムとASMP Framework [4] を使って通信しながら,同時並行的に処理を進めます.ASMPプログラミングに関しては,Spresense サンプルプログラム Sound Detector [5] を参考にさせて頂きました.1024点FFT一回の実行時間はわずか約0.065秒で高性能です.FFTを十回行いスペクトルを平均化することで安定性を向上させました.それでもサウンド分析サイクル時間は約0.65秒であり,判別結果の遅れは目立ちません.

Figure 5 Spresense processing flow

実験結果

冒頭ビデオの実験条件シナリオ(Test sound Step1 → Test sound Step2 ,,  → Test sound Step7)を Figure 6 に示します.モーター印加電圧 2.28V時の回転音を基準サウンド(Reference sound),即ち正常音とし,それ以外の条件を異常音と判断すべきもの,としました.

Figure 6: ビデオの実験条件シナリオ

正常音と異常音の判断には,基準サウンドスペクトルとテストサウンドスペクトルの差を使いました.分布の差を表す指標には様々なものがあります.本実験では機械学習で使われるクロスエントロピー(Cross Entoropy)[6] をベースにした独自指標を使ってスペクトルの差を計算し,あらかじめ定めた基準値と比較して正常(Normal)か異常(Anormal)を判別しました.Figure 7 は,横軸にビデオ経過時間,縦軸に測定点毎のスペクトル差をプロットしたものです.緑色枠で囲った点は正常音と判断されたもの,赤色枠で囲った点は異常音と判断されたものです.実験条件シナリオの予測(Figure 6)と一致した結果であることがわかります.

Figure 7  Spectrum differences of test Step1~7 sounds

まとめ

  1. スマートなエッジデバイスとして Spresense を使い,リアルタイムサウンドアナライザを試作しました.目的は,エッジデバイスでサウンド取得,周波数分析,正常音/異常音の判別を行うことで,クラウドへのデータ転送量の劇的削減とクラウドの処理負荷低減を実現するためです.
  2.  模型モータ回転音に工場騒音が重畳した音を対象に,正常音と異常音を判別する実験を行いました.
  3. 四段階に変化させた模型モーター回転音に対し,基準サウンド間とのサウンドスペクトルの差(独自指標)を使い,正常音と異常音を正しく判別できました.

参考文献

[1] 『半導体業界の第一人者,AI業界を行く!』 Vol.8:Spresense でエッジAI -LASSOでボストン住宅データを分析-

https://hacarus.com/ja/ai-lab/20210506-spresense/

[2]  ソニー Spresense 製品情報

https://www.sony-semicon.co.jp/products/smart-sensing/spresense/

[3] Spresense Arduino Library Developer Guide

https://developer.sony.com/develop/spresense/docs/arduino_developer_guide_en.html

[4] 5.7. ASMP Framework

https://developer.sony.com/develop/spresense/docs/sdk_developer_guide_en.html#_asmp_framework

[5] Spresense Arduino Examples & Tutorials, SoundDetector

https://developer.sony.com/develop/spresense/docs/arduino_tutorials_en.html#_sounddetector

[6] Cross entropy

https://en.wikipedia.org/wiki/Cross_entropy

ニュースレター購読Newsletter

登録はこちら