OKI AIエッジコンピューター「AE2100」のスターターキットにバンドルされているAI Dynamicsの行列人数カウントAIを試してみた

## 要約
- この記事は、OKI AIエッジコンピューター「AE2100」のスターターキットにバンドルされているAI Dynamics Japanの行列人数カウントAIアプリの解説記事です。
- IPカメラとAE2100を使用して行列人数をカウントする推論アプリについて解説します。

## はじめに
OKIのAE2100は、IntelのOpenVINOツールキットを動かす環境が用意されており、OpenVINOツールキットに付属する様々なAIモデルのサンプルやデモプログラムが含まれています。
また、OKIではIPカメラとAE2100をセットし、OpenVINOや様々なAIベンダーのお試し版アプリがバンドルされているスターターキットを提供しています。

ここでは、このAE2100スターターキットにバンドルされているAI Dynamics Japanの行列人数カウントAIのお試し版アプリを使用した動作方法を紹介していきます。

ちなみに、AI Dynamics Japanでは、様々なAIアルゴリズムをパッケージにした「Package20」を提供しています。
[AI Dynamics Japan「Package20」](https://aidynamics.jp/services/package20)

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

ここでは、AI Dynamics Japanの行列人数カウントAIアプリをダウンロードします。
ファイル名：AE2100_StarterKit_Trial_PeopleLineCounter.zip

なお、行列人数カウントAIアプリはお試し版のため、推論の実行時間が連続30分間の制限があります。ただし、アプリを再起動すれば再度30分間の推論実行ができます。

## お試し版のインストール
事前準備として、スターターキットのIPカメラやAE2100のセットアップは、以下の記事を参照してください。
[OKI AIエッジコンピューター「AE2100」のスターターキットを使って、IPカメラの映像をライブでAI推論してみよう。(1)](https://qiita.com/shimatak/items/62f7c87c72a6a8a03acb)

それでは、WindowsPCからAE2100のWebUIへアクセスし、お試し版アプリをインストールします。

AE2100のWebUIの、「アプリケーション」の「アプリ管理」をクリックすると別タブでアプリ一覧が表示されるので、画面左上の「アプリ管理メニュー」の「インストール」を選択します。
以下の画面のように、ローカルに保存したアプリファイル（**people_line_counter.zip**）を指定してインストールを行います。
![AIDynamics_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/7d9bba42-6358-a0d1-f116-baf310ad8e3e.jpeg)
インストールが完了したら、画面左上の「アプリ管理メニュー」の「アプリ起動」メニューを開き、起動するアプリを指定してアプリ起動します。
![AIDynamics_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/387a16b3-ee3a-c907-57d6-7f74b1c47e0f.png)
正常にアプリがインストール・起動すると、「アプリ一覧」に「People Line Counter」のアプリが表示されます。
![AIDynamics_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/3b9a754d-ca39-08bc-454c-2a6e0eddfcc3.png)

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

```console:実行中のDockerコンテナ
root@ae2100:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
4d940a46a83a        6383a3757007        "/bin/bash"              11 minutes ago      Up 11 minutes       0.0.0.0:5555->5555/tcp     ppl_line_cntr
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
```
行列人数カウントアプリである「ppl_line_cntr」のコンテナが起動していることを確認します。

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

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

お試し版アプリのスクリプトは、デモ用フォルダ「/root/app」に格納されています。

```console:デモスクリプト確認
root@4d940a46a83a:~/app# ls
Dockerfile                   requirements.txt
common                       ssd_mobilenet_v2_coco.bin
people_line_counter.py       ssd_mobilenet_v2_coco.labels
people_line_counter_demo.sh  ssd_mobilenet_v2_coco.mapping
pytransform                  ssd_mobilenet_v2_coco.xml 
```

WindosPCのIPアドレスが192.168.100.2以外の場合は、このフォルダにある、shファイルを編集して「IP_ADDR」のIPアドレスを書き換えてください。
（viがインストールされていませんので、apt-get install vimでインストールしてください。）

## 動作確認
デモ起動のシェルスクリプトに実行権限を付与します。
```console:シェルスクリプトの実行権限の付与
root@4d940a46a83a:~/app# chmod a+x people_line_counter_demo.sh
```

あらかじめ[こちら](https://qiita.com/TWAT/items/2ad6c7329c6e0e29a00d)の記事を参考にして、WindowsPCでXLaunchを起動しておきます。
推論の実行は以下のコマンドを実行します。

```console:お試し版アプリの起動
root@4d940a46a83a:~/app# ./people_line_counter_demo.sh
[setupvars.sh] OpenVINO environment initialized
Initializing Inference Engine...
Loading network...
To close the application, press 'CTRL+C' here or switch to the output window and press ESC key
```

なお、このアプリではIPカメラのRTSP(Real Time Streaming Prococol)ストリームを入力として、推論エンジンを動かし、その結果の動画をXLaunchで画面表示させます。

## 動作結果
お試し版アプリの起動をすると、PCにIPカメラの映像が表示されます。（静止画）
![AIDynamics_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/c505af2b-77a6-fc37-9310-e3816a387b6f.png)
最初に表示される映像で、行列検知する行列線を設定します。
![AIDynamics_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/56f07a58-f4ae-5afb-6b4e-567225cf3628.png)
マウス操作で、行列線（赤線）を設定します。
この例では、通路に沿って2本の行列線を設定しています。
設定後、任意のキー入力でリアルタイムの推論を開始します。
![AIDynamics_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/5090737d-8a54-f066-7d03-ff5690dbe0e2.png)
推論実行中は、行列線（この例ではLine0とLine1）毎に何人認識しているかが画面左上に表示されます。
![AIDynamics_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620261/cf3d46d9-908c-5d56-4365-3cb30c9605f8.png)
また、設定した人数以上を人物を認識した場合、混雑アラートを表示することができます。
この例では3人以上を混雑として認識し、左上の人数に「TOO MANY」と表示されています。

なお、お試し版のアプリの設定として以下の項目を設定することができます。
設定を変える場合は、people_line_counter_demo.shに記載されている設定値を書き換えてください。

```console:people_line_counter_demo.shの設定項目
## アプリ専用設定
#ライン当たりの人数が4人を越えた場合、混雑判定
MAX_PEOPLE=3
#2回連続で混雑判定された場合、画面にアラート表示
MAX_TIMES=1
#10秒おきに混雑判定
INTERVAL=10
```
## まとめ
AE2100を使って、AIベンダーのAIアプリをエッジで動かしてみました。
列に並んでいる人数を人手をかけずにAIでカウントできるので、イベントの行列や店舗のレジ待ちなどの状況を手軽に数値化して混雑状況をリアルタイムで把握ができますね。
AIの知識や費用面でAI活用のハードルが高いと感じられている方でも手軽にAIを試すことができます。