本サンプルは、Azure IoT Edge対応デバイスに接続されたマイクデバイスから、音をキャプチャーし、キャプチャーした音データを、WAVファイルとCSVファイルで保存する、Azure IoT Edge Module と、そのモジュールを使って、クラウドへのファイルアップロードや、アップロードされた音データを基にしたAI構築と学習済みAIモデルの利用、及び、学習済みAIモデルの、Azure IoT Edge対応デバイスへのデプロイと活用までを例示する。
本サンプルは、以下のステップで作業を進める。
- 実施に必要な下準備
- マイクデバイスから音をWAVファイル、CSVファイル形式でキャプチャーし、クラウドにアップロードする
- クラウド上での音データを使ったAIの構築と、学習済みAIの利用
- 学習済みモデルを Azure IoT Edge 上に配置
本サンプルを実際に試す場合には、まず、以下の環境を整えること。
※ ここで紹介している以外のハードウェアを利用する場合には、各自の環境において、IoT Edge Module の配置設定や、Module Twins のパラメータを調整してください(コントリビューションしてくれるとありがたし
- Raspberry Pi 3 Model B+ 以上 - Azure IoT Edge のセットアップを参考に、Azure IoT Edge Runtimeをセットアップすること
- ReSpeaker Mic Array V2. - そこらによくあるUSBマイク等でもOK(のはず)
※ ReSpeaker は、6_channels_firmware.bin のファームウェアを利用すること
- Azure Subscription - 無料お試しでも可
- Azure IoT Hub - Azure で IoT を実現するためのコアサービス
- Azure Container Registry - プライベートDocker Hub
- Azure Storage Blob - クラウドでとりあえずファイルを保持するならこれ
- Azure Machine Learning
- PC(Windows PC、MAC、Linux何でも可)
- Git
- Docker Engine
- VS Code
- Azure IoT Edge Module 開発環境 - IoT Edge 開発チュートリアルを参考にセットアップ
このステップでは、以下の構成を構築する。
詳細は、docs/step1.md を参照のこと
Step 1 でキャプチャーした音データを成形し、クラス分けをするCNNモデルの作成とトレーニングを行います。 詳細は、SOundAI/notebook を参照のこと
※ 本サンプルは、ギターコードの Major/Minor を分類することを前提として説明やサンプルデータを用意しているが、data|test-label-range.csv には、その依存性が無く、2分類という縛りも実はない。各自の分類したい事象に合わせて、data|test-label-range.csv を定義していただきたい。 ※ 音のキャプチャーのためのHWが手元にない場合は、各自のAzure Blob Storageに'egsounds'という名前でコンテナ―を作成し、Sound Sample Dataでダウンロード(2020/6/30まで可能)したデータをアップロードし試みていただきたい。
このステップでは、Step 2 で学習したモデルを Azure IoT Edge Module に組込み、Edge 側での分類を可能にします。
詳細は、docs/step3.md を参照のこと
※ 動作テスト未実施につき御免