[チュートリアル 1/2] AITRIOS のデバイスで Object Detection してメタデータを取得してみた（① デバイスセッティング編）

::: note
この記事は過去記事のアーカイブです
:::

---

後編はこちら! 

https://qiita.com/SSS-AITRIOS/items/820f9648df23130606cb

---

こんにちは！
ソニーセミコンダクタソリューションズ の高橋と申します。

我々のプロダクトである AITRIOS の Qiita Organization 開設にあたり、さっそく AITRIOS と AITRIOS に対応したデバイス: SZP123S-001 を使ってみたという記事を投稿します。

なお、1 つの記事にまとめたところ、相当長くなってしまったので、前編 / 後編に分けております。

# この記事の要約
* AITRIOS と 対応デバイス: SZP123S-001 を使うと、機械学習の知識なしで Object Detection の AI モデルを作成して推論を実行+メタデータを取得できる
* この記事はデバイスを登録するところから、推論結果のメタデータを取得するまでを実際に行いながら説明します
* AITRIOSに興味がある～これから触る予定がある方をメインにした記事です

　

# はじめに
この記事では、AITRIOS の Developer Edition と SZP123S-001 を利用して、物体認識: Object Detection の AI モデルを AITRIOS 上で作成し、実際に SZP123S-001 で撮影+推論を実行し、推論結果のメタデータを取得するまでの作業をステップバイステップで紹介します。

**この記事は2024年02月29日時点の情報に基づいて作成されています。**

## そもそも AITRIOS って？
AITRIOS とは、`"エッジデバイスなどを活用したセンシングソリューションの効率的な開発・導入を可能にするエッジAIセンシングプラットフォーム"` です  
> 引用元: https://www.aitrios.sony-semicon.com/

AITRIOS の全体像などについて説明しているページもあるので、そちらもぜひ確認してください！  
https://www.aitrios.sony-semicon.com/services/edge-ai

　
ざっくり AITIORS の何が嬉しいかを説明すると、現状では、画像認識の推論を実行するには、一般的には画像を撮影し、その画像をクラウドに送信し、クラウド上で推論を実行することが中心ですが、AITRIOS とそれに対応したデバイスを活用すると、**クラウドに送信せずともエッジ側で画像認識の推論を実行して推論結果を得られるようになる**、というものです。

言い換えると、これまではカメラは光の信号を画像のファイルとして出力していましたが、AITRIOS に対応したデバイス(カメラ)では画像ファイルではなく**画像認識の推論結果のデータにして出力します**。

他にも、メタデータだけを取り扱えるのでプライバシーやセキュリティの観点でメリットがあったりするので、気になった方はたくさんお問い合わせください！

## 前提

まず、現時点(2024/02)では AITRIOS のサービスは法人様向けとなっております。ご了承ください。

続いて、本当にAITRIOSを初めて触れる場合、今回の記事に書いてある内容に加えて以下の作業やモノの購入が必要となりますが、今回こちらの記事では簡単な紹介にとどめます。

* AITRIOS Portalへのアカウント登録
  * [AITRIOS Portal](https://portal.aitrios.sony-semicon.com/)
  * [アカウント登録のマニュアル](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/documents/portal-user-manual)
* 対応するデバイス/機器の購入
  * [対応デバイスリスト](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/devices/)
  * (SZP123S-001 の場合) PoE に対応したスイッチングハブなどが必要になります
* AITRIOS Portal 上で新規プロジェクト申請を実施
  * [プロジェクト申請のマニュアル](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/documents/portal-user-manual) の `"新規プロジェクトを申請する"` の項目
* Console Developer Edition / Enterprise Edition を購入
  * 各 Edition の差異については [こちら](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/system-overview#secondary-menu-desktop) をご覧ください
  * 本記事では **Developer Edition** を利用します


# 本文

## 0. 今回の作業の流れ

```
1. Console にデバイスを登録
2. デバイスのファームウェアを最新版に更新
------------- (↑ 前編 / ↓ 後編) --------------
3. Custom Vision で手持ちの画像を 15 枚(以上)使い Object Detection の AI モデルを作成し、デバイス用に変換 + 作成した AI モデルのデプロイ用の Config を作成
4. デバイス上で動作する Object Detection 用の Vision and Sensing App (Edge App) と、推論時のパラメータ指定する Command Parameterを入手し、Console に登録
5. AI モデル、Edge App をデバイス本体にデプロイ、Command Parameter をデバイスと紐づける
6. 撮影 + 推論の実施
7. 推論結果のメタデータのデコード、デシリアライズを実施
```

なお、基本的にプログラミングや AI の知識などは不要ですが、現状 7 番のメタデータのデコード/デシリアライズの部分については Git や Python などの知識が求められる点について、予めご了承ください。  

この前編の記事では AITRIOS の Console にデバイスを登録し、そのデバイスのファームウェアを更新するところまでを紹介します。


## 1. Consoleへのアクセス、デバイスの登録

:::note warn
**(2024/10 追記)**
最近追加された Provisioning Hub を利用するとよりデバイスの登録が直感的です！！

https://developer.aitrios.sony-semicon.com/edge-ai-sensing/documents/console-user-manual?progLang=#_Provisioning_Hub
:::

まずは購入したデバイスを Console に登録する作業を行います。
参考になるマニュアルは以下になります。

* [デバイス設定ガイド](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/documents/device-setup-guide)

上記のマニュアルに説明がありますが、大まかな手順は下記のとおりです。
```
1. ブラウザで AITRIOS Portal に接続し、Console を開く
2. `Enroll device` よりデバイス登録用の QR コードを生成する
3. 生成した QR コードをデバイスに読み込ませる
```

では、実際の手順を以下で補足説明します。

`1.`

[Portal](https://portal.aitrios.sony-semicon.com/) にログインして Console を開きます

ログイン後の画面  
![プロジェクト一覧](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/85c1c6dd-7d6f-67fe-9bbe-8f8228ecd2de.png)

左メニュー上部の `Console` を選択  
![プロジェクト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/2ed3f3c5-9de7-cea4-03ec-b89dedf375aa.png)

Console のホーム画面  
![Console](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/ad89c4f3-9cce-ec01-8fd9-5f2800a0d551.png)

　
`2. / 3.`

Console 左メニューの `Enroll device` をクリック  
![Enroll device](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/4af2bc76-2436-c118-8e46-dc64a34cbb90.png)

続いて、画面上部の `Setup Enrollment` をクリック
![Generate QR](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/e68ae2a3-4fc6-2431-ea58-bac2ac1e1d5b.png)

ここで、デバイスを Console に登録するための QR コードを作成します。作成した QR コードをデバイスに読み込ませることで、デバイスが Console に接続するための情報を取得することができます。  
QR コードを生成するには NTP サーバーの情報の入力が必要です。  

:::note warn
[追記 2024-07-24]
もし AIH-IVRW2 (Wi-Fiモデル) を利用している場合には、デバイスが利用する Wi-Fi の SSID と Password も入力してください。
:::

#### QR コードの生成、読み取りについての3つの注意  

**①** NTP サーバーは名前解決の結果 IPv6 のアドレスを返すものもありますが、SZP123S-001 は IPv6 に対応していないので、IPv4 を返す NTP サーバーを指定しましょう。  
私の場合には 1.jp.pool.ntp.org を入力しました。
　

**②** 購入直後の初期ファームウェアは DHCP でしか利用できないので、固定 IP を利用したい場合には、まずは DHCP でデバイスを登録した後に、ファームウェアのアップデートを実施してから固定 IP をご利用ください。  
> 購入直後もしくは、Factory Resetを実施したエッジAIデバイス (SZP123S-001、AIH-IVRW2) に固定IPを指定して接続するためには、一旦DHCPにてConsoleへ接続し、最新のデバイスファームウェアに更新する必要があります。
>
> *(引用元: https://developer.aitrios.sony-semicon.com/edge-ai-sensing/support | 1.19. エッジAIデバイスに固定IPを指定してConsoleと接続したい)*

NTP サーバーの情報を入力したのちに、`Generate` をクリックし、QR コードを生成しましょう。

　
**③** QR コードの読み取りにはコツが必要です。

[FAQ - Enrollment QRコード、Service QRコードが読み取れない](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/support?progLang=#_the_service_qr_code_cannot_be_scanned) にも記載がありますが、QR コードを読み取らせる場合には、 **1 辺 9 cm 程の QR コード** を **15 cm 離れた位置から読み取る** ことが想定されています。

私の場合ですが、QRコードを 14 インチのノートパソコンの画面いっぱいに拡大し、20 cm ほど離したうえで、10 秒ほどデバイスを QR コードに向けると成功することが多いので、ぜひお試しください。
　

デバイスが QR コードを読み取ると、オレンジ色で点滅していたデバイスがオレンジ色の点灯になったり、起動中を示す赤点灯x2の状態になります。

QR コードを読み取ってから 3~5 分ほど待って、緑点灯x2 の状態になれば、無事にデバイスの登録が成功したことになります。

なお、デバイス設定ガイドにもありますが、 Console 未接続を示す、緑+赤の状態になったとしても、`Manage Device` -> 登録したデバイスを選択 -> 右側の `"Preview"` をクリック、の手順を踏むと正常に接続された緑点灯x2の状態になることがあるのでお試しください。  
`"Preview"` のトグルスイッチをクリックし、カメラからの映像がブラウザに表示されたら、無事 Console への接続が完了した状態です！おめでとうございます！


#### QR コードを読み込ませたのに、ランプが緑赤の状態で止まる
こちらの FAQ を参照してください。  
https://developer.aitrios.sony-semicon.com/edge-ai-sensing/support?progLang=#_i_cant_connect_the_edge_ai_device_to_console

上記 URL でも紹介されていますが、チェックする観点としては一例として以下が挙げられます
* デバイスを接続している PoE スイッチなどに PC を接続して外部との通信が行えるか
* デバイスに対して Ping は通るか
* QR コードを読み込んで数分待機したか
* FW アップデート前に NTP 以外の情報を入力して QR コードを生成していないか
  * 経験談になりますが、古い FW は動作が安定していない場合があるため、FW のアップデートを行うまでは NTP サーバーの情報のみを入力して Console に登録されるかどうかをお試しください

また、少し離れ業になりますが、ポートミラーリングに対応したスイッチングハブと Wireshark(など)を利用して、デバイスがどのような通信をしているかを確認することはかなり有効です。  
名前解決ができていない、そもそもどこにも通信ができていない、などの状況が把握できるようになるため、トラブルシューティングの役に立ちます。


## 2. デバイスのファームウェアの更新

続いてはデバイスのファームウェアの更新を実施します。  
これにより、デバイスの安定性が高まるため、必ずこのタイミングで実施しましょう。

もし、何らかの事情でデバイスをファクトリーリセットした方も、Console 登録後のこのタイミングで必ずファームウェアを更新しましょう。

マニュアルは[デバイス設定ガイド](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/documents/device-setup-guide)の `5. エッジAIデバイスのファームウェア更新` を参照しましょう。  


上記リンク内にもありますが、ファームウェアは以下でダウンロード可能です。 
(※ダウンロードにはログインが必要です)  
https://developer.aitrios.sony-semicon.com/edge-ai-sensing/downloads

ファームウェア更新の手順は下記のとおりです。

```
1. デバイスのファームウェアをダウンロードし、解凍
2. `Version.txt` を確認し、ファームウェアの最新バージョンを確認
3. 2. で確認した最新のファームウェアが、プロジェクトの Console に登録されているかを確認
4. 3. で最新のファームウェアが Console に登録されていなければ、最新のものを Console に追加
5. 最新のファームウェアを登録したデプロイ用の Config を作成
6. 5. で作成した Config を利用して、デバイスへ最新ファームウェアをデプロイ
```

各手順について補足説明をします。

`3.`
プロジェクトに登録されているファームウェアのバージョンは、Console の `Settings -> Firmware` から確認することができます。以下は参考画像です。  
現時点(2024年2月)では、各ファームウェアの最新バージョンは以下のとおりなので、この例の場合はすでに最新のファームウェアが Console に登録されていることが分かります。


| FW | Version(2024/02) |
|:-|:-|
|MCU(AppFw)|070018|
|IMX500(Sensor)|010701|
|IMX500(Sensor Loader)|020301|


![FW Version List](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/5ba125c1-3d72-f447-9454-d2a33c4fab86.png)   

　
`4.`  
`3.` で確認した結果、最新のファームウェアが Console に登録されていなかった場合には、上記画像右下の `Import` をクリックして、ダウンロードしたファームウェアを登録します。

![Import FW](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/a9f5a04b-b208-74e3-b441-01218aba0787.png)

　
`5.`  
`Deploy to device -> New Config` より、以下の例のように最新のファームウェアを指定したデプロイ用の Config の作成をします。

![Create FW Config](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/aaf78422-3d6c-7f5b-d07c-62be6898ec19.png)

　
`6.`  
`5.` で作成した Config を選択し、右メニューの `Deploy` より、登録したデバイスを選択することで、ファームウェアをデプロイすることができます。  
なお、デプロイの状況は `Manage device` より自分のデバイスを選択し、右メニューの `Status -> Deployment` で確認できます。  
※ 画面は自動更新ではないので、画面上部の `Reload` を定期的にクリックして状況を確認しましょう。  

![Create FW Config](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724982/9075e541-27ab-063c-c3d1-0294cada8c23.png)

# 困った時は

もし、記事の途中でうまくいかなかった場合は、気軽にこの記事にコメントいただいたり、以下のサポートのページもご覧ください。  
コメントのお返事にはお時間を頂く可能性もありますがご了承ください。

- [Support (FAQ)](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/support)

なお、私はデバイス登録時などにうまくいかなかった場合、リセットボタンを 30 秒押してファクトリーリセットして、再度同じ手順を実行したら成功したこともあったので、どうしても困った際にはぜひお試しください。 

また、記事の内容以外で AITRIOS についてお困りごとなどあれば以下よりお問い合わせください。
- [Contact Us](https://developer.aitrios.sony-semicon.com/edge-ai-sensing/contact-us)


# おわりに

今回の記事ではデバイスの Console への登録、およびファームウェアのアップデートを実施しました。
後編では AI モデルを作ってデプロイし、推論を行ってメタデータを取得するまでをご紹介するので、ぜひそちらもご覧ください！

後編↓↓↓↓↓↓↓↓↓

https://qiita.com/SSS-NorimitsuTakahashi/private/b5f62607325d34aa40d7

AITRIOS についての最新情報は X、LinkedIn で配信中なのでこちらのフォローも何卒よろしくお願いいたします！  

https://twitter.com/AITRIOSbySony

https://www.linkedin.com/company/aitrios-by-sony/