プログラミング不要!?たった30分で構築できる、組み込みAIアプリ

本当は簡単な、組み込みAI×IoTシステムのセットアップ方法

今回は「サーバと連携する顔認証アプリケーション(第5回)」のセットアップ方法を紹介いたします。本記事の要点は、VIA ALTA DS3のように「組み込みAIにより顔認証ができるデバイス」を活用することにより、組み込みAI×IoTのシステムも、お馴染みのサーバ・クライアント型システムと同じように、簡単に構築できる、ということです。

VIA ALTA DS3:組み込みAI開発プラットフォーム

組み込みAI✕クラウドの構成も考えてみよう

さらに本記事の後半では、Microsoft Azureをはじめとする「クラウド」と、組み込みAIを連携させる方法についても解説。製品のライフサイクルの要となるPoCやデプロイを意識した、より実践的な開発について考察します。是非、最後までお楽しみください。

▼目次

サーバと連携する顔認証アプリケーションのセットアップ

セットアップ手順は以下の通りです。組み込みAIの処理はAndroidアプリケーションとしてパッケージ化されていますので、一般的なアプリケーションと同じようにインストールできます。

なお、各ソフトウェアの入手方法は、VIA Technologies Japanへお問い合わせください。

  1. サーバのセットアップ(VIA ARTiGO A1250)
  2. IPカメラのセットアップ
  3. エッジのセットアップ(組み込みAI:VIA ALTA DS3)
  4. 顔登録用Android端末のセットアップ
  5. アプリケーションの設定

図
図1:システム構成

ハードウェア 用途 備考
VIA ALTA DS3 エッジノード(顔認証実行部) Android8.0、HDMIディスプレイを2台接続
VIA ARTiGO A1250 サーバ(顔認証用データベースの管理) Windows7
Android端末 顔画像の登録用端末 Android6.0
Wi-Fiルータ 各コンポーネント間の通信用 無線+有線
IPカメラ 撮影用(エッジノードと通信) PoEスイッチから給電、HD画質

図
図2:機材間の通信イメージ

サーバのセットアップ

本システムは、画像の解析結果をサーバ上で集計、顔認証情報を可視化します。サンプルアプリケーションでは、VIA ARTiGO A1250をサーバとして利用しています。ARTiGO A1250は、Windows系のOSをサポートした、小型フォームファクタPCです。

VIA ARTiGO A1250:小型フォームファクタPC

まず、固定IPアドレスを設定します。このIPアドレスは、組み込みAIがサーバへリクエストを送信する際に、指定する値です(例: 192.168.12.185)。

次に、サーバ機能を提供するアプリケーション「MagicView FA Server(MGV FA Server)」をインストールします。FA Serverは、HTTP通信にて受信した人物情報を取得、データベースへ格納し集計、統計情報Webページを配信できるアプリケーションです。設定が完了すると、デスクトップに起動成功のメッセージが表示されます(図3)。

図
図3:MagicView FA Serverの起動に成功した状態

IPカメラのセットアップ

本システムはIPカメラ(図4)により室内を撮影します。接続する2台のIPカメラには、それぞれ以下の内容を設定します。

● IPカメラ1台目 「Front Door」

  • IPAddr:Port=192.168.12.32:554
  • ユーザ名Admin、パスワード1234
  • 配信形式:H.264

● IPカメラ2台目 「Back Door」

  • IPAddr:Port=192.168.12.12:554
  • ユーザ名Admin、パスワード1234
  • 配信形式:H.264

図
図4:IPカメラと給電用のPoEスイッチ

エッジのセットアップ(組み込みAI:VIA ALTA DS3)

本システムでは、VIA ALTA DS3上にて、組み込みAIによる顔認識アプリケーション(VIA FACE)と、顔登録アプリケーション(ISC East)を実行します。まず、VIA ALTA DS3へ、下記のAndroidアプリケーションをインストールします(図5)。

また、顔認識アプリケーションと顔登録アプリケーションをネットワーク通信にて連携させるための、固定IPアドレスを設定します(例: 192.168.12.102)。

● 顔認識アプリケーション

  • VIASecureIDConfig_3.02.apk(インストール名:VIASecureIDConfig)
  • VIAFace_1.0.10_1101.apk(インストール名:VIASecureID)

● 顔登録アプリケーション

  • ISCEast_1.0.1.apk(インストール名:ISCEast)

図
図5:VIA ALTA DS3にインストールされた各アプリケーション

アプリケーションの設定

顔認証アプリケーションの設定

VIA ALTA DS3上でVIASecureIDConfigを実行し、以下の設定を行います。設定後はUPDATEボタンにて設定を反映してください(図6)。

設定項目 設定値 説明
カメラの選択 MultiIPCamera IPカメラを利用する
ip camera 1 name Front Door 1台目カメラの識別名
RTSP_Url1 rtsp://Admin:1234@192.168.12.32:554/h264 1台目カメラの接続先
ip camera 2 name Back Door 2台目カメラの識別名
RTSP_Url2 rtsp://Admin:1234@192.168.12.12:554/h264 2台目カメラの接続先
最小 60 Cameraとの距離(遠距離も許容)
閾値 0.85 人物判定閾値(85%一致)
Emotion ON 表情推定ON
MgvFaceCounting ON 統計情報(サーバ連携)ON
Server Url http://192.168.12.185:80/face/report サーバのURL(MagicView FA Server)
Facereport Server Url http://192.168.12.102:5103/facereport/userinfo 顔登録アプリケーションのURL(ISC East)
FR ID Repeat Interval(s) 10 連続認識時間[秒]
Socket comm(ms) 1000 顔認証時間[ms]
Group Set DefaultGroup 顔認証登録グループ

図
図6:顔認証アプリケーションの設定画面

サーバへ送信するデータの設定

サーバとエッジ間の通信設定は、VIA ALTA DS3上にて行います。「VIA Secure ID」を実行し、次に「ISCEast」を実行すると、HDMI1側にFront Doorに設定したカメラの映像が、HDMI2側にダッシュボードが表示されます(図7)。ユーザ名「admin」、パスワード「admin」を指定し、ダッシュボードへログインします。ログインに成功するとダッシュボード(図8)が表示されます。

図
図7:ダッシュボードのログイン画面

図
図8:ダッシュボード画面(ログイン後)

次に、サーバへ送信するカメラ名を登録します(図9)。左のバーにある歯車(設定)アイコンをクリックし、上のプルダウンメニューからCameraを選択します。「+」マークをクリックし、Front DoorカメラとBack Doorカメラを登録します。Camera IDには「VIAFaceConfig」にて”ip camera1 name”を、Camera Nameにはダッシュボード画面に表示する名前を指定します。

図
図9:サーバへ送信するカメラ名の設定

顔登録用Android端末のセットアップ

顔登録用のAndroid端末をセットアップします。Android 5.1以降のAndroid端末をご用意ください。アプリケーション「VIAFace_20181023.apk(FaceID)」をインストールします(図10)。

図
図10:顔を登録するFaceIDアプリケーション

FaceIDを起動すると、図11のように接続先IPアドレスを求められますので、192.168.12.102(ISC EastのIPアドレス)を入力します。接続に成功すると、図12の撮影画面が表示されます。

図
図11:Android端末にてISC EastのIPを指定

図
図12:顔登録用の撮影画面(Android端末)

以上で「サーバと連携する顔認証アプリケーション」のセットアップは完了となります。

Microsoft Azure(クラウド)と組み込みAIを連携させるには

さて。製品のPoCやデプロイでは、組み込みAIを広域に分散させたい、情報を集計するサーバの信頼性をより高めたい、といった要望も多いでしょう。これらの要望に応える方法のひとつが、クラウドサービスの利用です。そこで、本記事の後半では、VIA ARTiGO A1250のサーバ機能を、Microsoft Azure(クラウドサービス)上へ移植する方法を紹介いたします。

クラウド化は、以下の手順で行います

  1. エッジとサーバ間の通信内容を採取する
  2. エッジとサーバ間の通信内容を理解する
  3. クラウドサービスにサーバの機能を移植する

エッジとサーバ間の通信内容を採取する

クラウド化の第一歩は、現在のエッジ(ALTA DS3)とサーバ(ARTiGO A1250)間の通信内容を理解することから始まります。パケットキャプチャツールWireSharkにて採取した、エッジからサーバへのリクエスト(顔認識結果の通知)を図13に、サーバからエッジへのレスポンスを図14に示します。

図
図13:エッジからサーバへのリクエスト(統計情報の更新要求)

図
図14:サーバからエッジへのレスポンス(統計情報の更新成功)

エッジとサーバ間の通信内容を理解する

エッジとサーバ間で交換されているリクエストとレスポンスは、HTTP通信の「application/json」と呼ばれる種類のデータです。JSON形式については、JavaScript Object Notationをご参照ください。本システムのサーバは、リクエストとして以下のデータを文字列として取得し、レスポンスの文字列を生成、返送しています。

●エッジからサーバへのリクエスト(JSON形式)

{"face":[{"tracking_status":2,"utctime":"2018\/12\/12 15:28:16","localtime":"2018\/12\/12 15:28:16","pcname":"localhost","distance":0.6444795727729797,"camera_name":"Front Door","age":70,"gender":0,"humanid":1544628486475,"stay_time":10}]}

●サーバからエッジへのレスポンス(JSON形式)

{"errno":0,"errmsg":"","data":"ok"}	

上記の内容と同じ動作をする機能をMicrosoft Azure上に実装することにより、サーバをクラウドに移すことができる、ということになります。

クラウドサービスにサーバの機能を移植する(Microsoft Azure:Logic Apps)

Microsoft Azureクラウドサービスの提供するAzure Logic Appsを利用することにより、JSONリクエストをトリガーとした処理シーケンスを構築できます。

なお、Microsoft Azure上でサービスを設計するにはライセンスが必要となりますが、2018年現在は12ヶ月間の試用プランもあります。

Microsoft Azure:Logic Apps

まずAzureのダッシュボードを開き、新規リソースの作成、統合機能、Logic Appsを選択し、Logic Appsアプリケーションを作成します(図15)。

図
図15:新しいLogic Appsの作成

次に、トリガとなるJSONを登録します。Azure Logic Appsには、JSONパーサ(切り出し処理)を自動生成する機能があります。WireSharkで収集したJSONを貼るだけで、トリガーの解析処理が自動生成されます(図16)。

図
図16:トリガーイベントの設定と解析

最後に、サービスがトリガーを検出した後、実行したいアクションを追加していきます。図17は、特にデータを処理しないでJSONレスポンスを返送する例です。

実際のアプリケーションでは、リクエストのフィールドにあわせて、統計データを更新するといったアクションを追加すると良いでしょう。

図
図17:レスポンスアクションの追加

クラウドサービスは様々な機能を提供しているため、全てを理解することは難しいですが、近年はグラフィカルな設計インタフェースが提供されていることから、比較的馴染みやすくもあります。是非、チャレンジしてみてください。

クイック スタート: Azure Logic Apps を使用して自動化されたワークフローを初めて作成する - Azure Portal

まとめ

今回は「サーバと連携する組み込みAI」をテーマとして、サーバとの通信や、クラウドサービスとの連携、活用方法について紹介いたしました。

本年(2018年)の組み込みAI講座は、一旦ここまでとなりますが、2019年は、いよいよAPSマガジンでも「AI特集号」を発行する予定です。是非、ご期待ください!