Azure Percept 基本 (一巡り)

エッジAIソリューションとしてIoTやエッジコンピューティングの知識がなくても本来の目的であるAIソリューションをエッジ側で運用できるプロトタイプを素早く開発できるAzure Percept基本について説明します。
Azure PerceptはハードウェアとソフトウェアそしてAzureサービスが一体化されています。Azure Percept DKという開発キットが販売中です。
[Azure Percept DK](https://www.microsoft.com/ja-jp/d/azure-percept-dk/8mn84wxz7xww)を買って箱を開けてから試して箱を閉めるどころまで説明します。
既にMicrosoft MVP 松岡さんが公開した記事がよくまとめられているので合わせて参考すれば良いと思います。

https://qiita.com/matsujirushi/items/407e21a42da561773469

# 事前準備

Azureへログインするアカウントのロールを確認してください。そしてAzure Perceptを試すResource Groupを作成してから進めた方が楽です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/c62c0539-77ab-4758-3ec9-e8539e48a490.png)
出荷時の設定にリセットする手順で使うUSB-C to USB-Aケーブルを用意します。USB-C to USB-Cでも大丈夫です。Auzre Percept DKの方がUSB-Cとなります。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/d6467a5b-3b85-4932-01f8-a3a41871f3d3.png"/>
1.5mmの六角レンジも必要です。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/4c2e41eb-25f6-f20d-a52c-64ca2528ee10.png"/>

# Azure Percept DKをセットアップする

公式ドキュメントを確認しながら進めます。
Azure Percept DKをネットワークに繋げ、Azure認証を通して事前準備で作ったResource Groupに対して新規Azure IoT Hubを作成します。

https://docs.microsoft.com/ja-jp/azure/azure-percept/quickstart-percept-dk-set-up

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/0335ab4d-0bf9-d6a2-bca8-f333b85e6c72.png)

## 注意事項

- SSH設定で設定したログイン情報を忘れないでください。出荷時の設定にリセットする手順でシェルでモード変更(USBモード)ができなくなるのでAzure Percept DK キャリアボードのDIPスイッチ設定でUSBモードに切り替えるしかないです。

# ノーコードでビジョンソリューションを作成する

ビジョンAIモデルを確認できます。公式ドキュメントを確認しながら進めます。
ビジョンAIモデルを作成するため、Azure Cognitive ServicesであるCustom Visionが作成されます。

https://docs.microsoft.com/ja-jp/azure/azure-percept/tutorial-nocode-vision

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/0a27bc9d-872b-0c88-b4a3-30d9d4203ed8.png)

## 注意事項

- 写真は1ラベルにつき、15枚を取った方がスムーズに進められます。
- Custom VisionリソースはPredictionとTrainingで分かれていますが、Azure PerceptではPredictionのCustom Visionは不要なので作られないです。
- “View device stream”をクリックする内容が書いてありますが、始めてデバイスストリーム画面を確認する際は、関連モジュールがデプロイされるため、少し時間がかかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/219d95ce-b22e-02c5-1b32-295002514b78.png)

## サンプルAIモデルも確認する

公式ドキュメントには書いてないですが、下記のイメージのようにサンプルAIモデルをデプロイして試すことも忘れないでください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/d81a041b-2497-e6ee-1ddc-ce8869128ac1.png)

# コンテナーモジュールを更新する

Azure Percept DK キャリアボードのモジュールを更新してみます。更新はAzure Percept Studioで対象デバイス画面からVideoとSpeechサーブメニューでワンクリックで最新バージョンで更新できます。（キャプチャした画面はボタンが見えないです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/c703ce86-9e97-888d-3df8-5030c902a6d9.png)
リリースノードの公式ドキュメントは参考レベルでみてください。

https://docs.microsoft.com/ja-jp/azure/azure-percept/azure-percept-devkit-container-release-notes

# ノーコードで音声アシスタントを作成する

[Azure Percept Audio](https://www.microsoft.com/ja-jp/d/azure-percept-audio/8r99nrz7l6wn)が手元にあれば確認できます。サンプルで確認できるのは英語のみですが、意外と面白いです。
公式ドキュメントを確認しながら進めます。

https://docs.microsoft.com/ja-jp/azure/azure-percept/tutorial-no-code-speech

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/ba1cfdd8-73c9-936d-d8fe-905147bee91f.png)

## 注意事項

- 作成されるリソースについては日本リージョンはないです。
- 日本語はサポートしてないです。
- サンプルで提供されるデモは四つですが、お勧めするにはHospitalityです。英語で発音しやすいのでサクサク動きます。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/0eb78c6b-bbf3-efe3-ee15-943490c2acc0.png"/>

# Azure Percept DKを出荷時の設定にリセットする

Azure Percept DK キャリアボードのソフトウェアを最新の状態に保つためにはUSB ケーブル経由の更新と無線(OTA)更新の2種類提供しています。 
更新内容が出荷時の設定にリセットするにはUSBケーブル経由での更新が推奨されてます。
まず、Azure Percept DK キャリアボードをUSBモードに切り替えないといけないですが、SSHを使用して切り替えた方が楽です。
公式ドキュメントと合わせて確認してください。こちらにはAzure Percept DK キャリアボードのDIPスイッチを変更してUSBモードに切り替えてリセットする手順を説明します。

https://docs.microsoft.com/ja-jp/azure/azure-percept/how-to-update-via-usb

## Azure Percept DKの分解

まず、1.5mmの六角レンジがないとAzure Percept DK キャリアボード、Azure Percept Vision、Azure Percept Audioをアルミフレームから外すことができません。特にAzure Percept DK キャリアボードのボルトを外すのがレベル高いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/7f346f4a-cd80-c37d-07b1-5d61bf4ee739.png)

## 更新プログラムパッケージ

更新は[NXPさんのアップデートツール](https://github.com/NXPmicro/mfgtools/releases)を使います。公式ドキュメントではMacOSの記載はないですが、MacOSも問題なく更新できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/67281018-eaa6-15f3-df3c-8aab362447bc.png)
ドキュメント上の更新順番はアップデートツールを実行してからUSB接続して更新するように書いてあります。
アップデートツールを実行すると下記の画面のように待機状態となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287622/5b73d879-2624-11b0-9e24-57af444dee03.png)

### 注意事項

- MacOSでuuu_macを実行すると下記の画面のようなエラーが発生する場合がありますので解決案も書いておきます。
```bash
dyld: Library not loaded: /usr/local/opt/libusb/lib/libusb-1.0.0.dylib
```
    
```bash
brew update
brew upgrade
brew install libusb
```    

# 終わり

Azure Perceptの基本について一巡りしてみました。
Azure PerceptはAzure IoT HubのAzure IoT Edgeをベースにして作られた統合サービスです。なのでこれから必要に応じてカスタマイズするにはAzure IoT Edge知識が必要になります。次はもう少し高度な使い方を紹介していきたいと思います。