OKI AIエッジコンピューター「AE2100」のスターターキットを使って、IPカメラの映像をライブでAI推論してみよう。(2)

## 要約
- この記事では、OKI AIエッジコンピューター「AE2100」のスターターキットを使ったAI推論デモの解説です。
- この記事では、AE2100＋IPカメラを使用した推論デモ実行について解説します。

## はじめに
OpenVINOツールキットで使用できるOpenModelZooでは、最適化済み・オープンソースの学習済みモデルやパブリックモデルを無料で利用することができます。
AE2100スターターキットでは直ぐにデモを実行できるデモ用のアプリ(コンテナ)を提供しています。

## デモアプリの入手
AE2100のデモアプリは、AIエッジユーザーサイトからダウンロードできます。
AIエッジユーザーサイトへのアクセスにはライセンスIDが必要になりますので、注意が必要です。
[AIエッジユーザーサイト](https://www.oki-partner.net/aieu/)
※デモアプリは、AE2100スターターキット購入者限定で提供されています。

## デモアプリのインストール
WindowsPCからAE2100のWebUIへアクセスし、デモアプリをインストールします。

AE2100のWebUIの、「アプリケーション」の「アプリ管理」をクリックすると別タブでアプリ一覧が表示されるので、画面左上の「アプリ管理メニュー」の「インストール」を選択します。
以下の画面のように、ローカルに保存したアプリファイルを指定してインストールを行います。
![AE2100_アプリ管理1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/52e55d0f-3283-423d-f3a6-248631fac315.png)

インストールが完了したら、画面左上の「アプリ管理メニュー」の「アプリ起動」メニューを開き、起動するアプリを指定してアプリ起動します。
![AE2100_アプリ管理2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/dc6f2bc0-9314-8af8-4653-452cbd4e3eaa.png)

正常にアプリがインストール・起動すると、「アプリ一覧」にスターターキットのアプリが表示されます。
![AE2100_アプリ管理3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/658e86e4-6ed9-8b21-43e7-0cdfea811c5c.png)

## デモアプリの実行
WindowsPCからSSHでAE2100に接続し、起動しているコンテナを確認します。

```console:実行中のDockerコンテナ
root@ae2100:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
c75767bfd2a2        6774dbbfffe3        "/bin/bash"              10 minutes ago      Up 10 minutes                                  ae2100_demo
38db3fdfc248        appf-monitor:appf   "/tini -- node app.js"   7 weeks ago         Up 30 minutes                                  appf-monitor
841028cbfd02        appf-node:appf      "/tini -- node app.js"   7 weeks ago         Up 30 minutes       127.0.0.1:3000->3000/tcp   appf-node
```
「ae2100_demo」のコンテナが起動していると思います。

ここで「AE2100_demo」のコンテナに入ります。ここで自動的にOpenVINOで使用する環境変数が初期化されます。

```console:コンテナにログイン
root@ae2100:~# docker exec -it ae2100_demo bash
[setupvars.sh] OpenVINO environment initialized
```

デモ用のスクリプトは、デモ用フォルダ「/opt/ae2100_demo」に格納されています。

```console:デモスクリプト確認
root@c75767bfd2a2:/opt/ae2100_demo# ls
data                                interactive_face_detection_demo_camera.sh
human_pose                          log
human_pose_demo.sh                  object_detection
human_pose_demo_camera.sh           object_detection_ssd_demo.sh
interactive_face_detection          object_detection_ssd_demo_camera.sh
interactive_face_detection_demo.sh
```
:::note info
WindosPCのIPアドレスを192.168.100.2以外を設定した場合は、このフォルダにある、shファイルを編集して「IP_ADDR」のIPアドレスを書き換えてください。
:::

なお、本記事で紹介するIPカメラを使用したAI推論デモは、IPカメラのRTSP(Real Time Streaming Prococol)ストリームを入力として、推論エンジンを動かし、その結果の動画をXLaunchで画面表示させます。

## HumanPoseデモ(姿勢推定)
デモ用フォルダでHumanPoseデモを実行します。
あらかじめ[こちらの記事](https://qiita.com/TWAT/items/7398105a9e64178a84d7)を参考にして、WindowsPCでXLaunchを起動してください。
サンプル動画でのデモ実行は以下のコマンドを実行します。

```console:姿勢推定デモ実行(サンプル動画)
root@c75767bfd2a2:/opt/ae2100_demo# ./human_pose_demo.sh
```
WindowsPCに姿勢推論した結果の動画が表示されます。
画面には遅延時間とFPSが表示されます。約18FPSで推論が動作しています。
![姿勢推定デモ_サンプル動画.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/c939fee1-f678-5973-e876-334d43486430.png)
IPカメラを使用してライブでの姿勢推定の推論を実行するには、以下のコマンドを実行します。

```console:姿勢推定デモ実行(IPカメラ)
root@c75767bfd2a2:/opt/ae2100_demo# ./human_pose_demo_camera.sh
```
コマンドを実行すると、IPカメラのリアルタイムの映像をAE2100で推論させた映像が表示されます。
手元にあったAE2100マンガを映してみました。2次元キャラでもしっかり姿勢推定できているようです。
![姿勢推定デモ_IPカメラ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/1a34dd45-9893-926d-6210-75b5a2868cb6.png)
## Interactive Face Detectionデモ(顔認識・年齢/性別/感情推定)
続いて、Interactive Face Detectionデモを動かしていきます。
サンプル動画でのデモ実行は以下のコマンドを実行します。こちらは複数のモデルをロードするので、推論開始まで多少時間がかかります。

```console:顔認識デモ実行(サンプル動画)
root@c75767bfd2a2:/opt/ae2100_demo# ./interactive_face_detection_demo.sh
```
WindowsPCに顔認識した結果の動画が表示されます。
少し見づらいですが、性別、年齢、感情が表示されています。
![顔認識デモ_サンプル動画.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/d08441d3-4e73-f5e7-ae10-413b8fbed9a4.png)
このデモでは、顔認識をMyriad、性別・年齢・感情の推定をCPU内蔵のGPUで動作させていますが、FPSとしては4FPS程度で動作します。
どのリソースでどのモデルを推論実行するかはinteractive_face_detection_demo.shに記載しているオプションで変更することが可能です。

次にIPカメラを使用した推論を実行してみます。以下のコマンドを実行します。

```console:顔認識デモ実行(IPカメラ)
root@c75767bfd2a2:/opt/ae2100_demo# ./interactive_face_detection_demo_camera.sh
```
またしてもAE2100マンガを映してみました。
しっかりと性別と年齢を正確に(?)認識しています。こちらも2次元キャラ対応です。
![顔認識デモ_動画1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/e10425d5-3431-db9f-1137-76954074decc.png)

## Object Detectionデモ(物体認識)
最後になりますが、物体認識のデモを動かしていきます。
このデモではSSD(Single Shot Multibox Detector)という比較的高速な物体検知アルゴリズムを使用しています。

```console:物体認識デモ実行(サンプル動画)
root@c75767bfd2a2:/opt/ae2100_demo# ./object_detection_ssd_demo.sh
```
店舗の中で徘徊している複数の人物を同時に認識できています。
約36FPS出ているので、前の2つのデモより高速に動作していることがわかります。
![物体認識デモ_サンプル動画.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/1028229a-4322-7145-cc47-be387881c6cc.png)

IPカメラを使用してライブでの物体認識の推論を実行するには、以下のコマンドを実行します。

```console:物体認識デモ実行(IPカメラ)
root@c75767bfd2a2:/opt/ae2100_demo# ./object_detection_ssd_demo_camera.sh
```
テレワーク環境で使用している自分の机を映してみました。キーボードやマウスが認識されています。
![物体認識デモ_動画1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/303bd2a9-42da-3ade-709f-66fe44613711.png)
## まとめ
今回は、AE2100スターターキットを使用して、IPカメラの映像をサンプルのAIモデルを使って推論してみました。
OpenVINO(⁺OpenModelZoo)には、ご紹介したAIのデモ以外にも多数のAIモデルが用意されています。
また、サンプルのAIモデル(publicモデル)をベースに転移学習やファインチューニングを行ってカスタマイズすることもできますので、是非挑戦してみてください！
### 関連記事
[OKI AIエッジコンピューター「AE2100」のスターターキットを使って、IPカメラの映像をライブでAI推論してみよう。(2)](https://qiita.com/shimatak/items/62f7c87c72a6a8a03acb)