入室した社員(左)をカメラで判別している様子。実装を終えた著者(右)
今回は、顔認証カメラAIを活用したソリューションを構築したいと思います。
このソリューションでは、カメラで撮影した人が来客者なのか社員なのかをAI画像推論を使って判別し、Slackへメッセージ通知します。社員の場合は、事前に顔画像を登録しておくことで、名前をSlackに表示することができます。
今回は、専門知識がなくてもノーコードでAI/IoTを構築できるミドルウェア「Gravio」を使用しました。Gravioを使えば、プログラミングのコードを書く必要もなく、インターン生の私でも簡単に実装できました。
今回使用するのは左側のONVIF対応のネットワークカメラ(ボックス型)です。
作業はGravio 公式ブログを参考にしながら進めていきます。流れは以下の通りです。
1.画像認識AI内の登録基盤(BAP)で顔画像の登録
2.画像認識AI(IVAR)で顔認証の設定
3.GravioとIVARとの連携設定
・Gravio Studioでエリアおよびレイヤー作成
4.Slackで専用のワークスペースを作成し、トークンを発行
5.Gravio StudioでSlack通知の設定
・アクション作成(社員の場合/来客者の場合)
・トリガー作成(社員の場合/来客者の場合)
マスクをつけた状態でも顔認証できる
まず、BAPに顔画像の登録をします。
BAPでは顔画像、表示させたい名前、グループ名の登録をします。顔画像は、顔正面を撮影した画像1枚でも十分な精度で顔認証が可能です。今回はより精度を高めるため2枚登録しました。
IVARの「IVA設定」に移動します。「BAPグループ名」にさきほど登録したグループ名を記入することで、設定が完了です。ほかにもさまざまな詳細設定が可能ですが、今回は初期設定のまま進みます。
IVARの「チャンネル」に移動すると、カメラに映った人物を認識し、BAPに登録した名前が表示されているのが確認できます。画像のようにマスクをつけた状態でも顔認証できています。
次に、GravioとIVAR連携の設定をします。
こちらの記事を参考にしながら、IVARにadminアカウントを使ってログインし、必要情報をメモします。Gravio Studioでエリアとレイヤーを追加します。レイヤーは「IVAR 顔認識」を選択します。メモした必要情報を「IVAR メッセージの設定画面」にペーストし、IVARの設定をします。その後、レイヤーにチャネルをバインドして、保存されたIVARのレイヤーを有効にします。
同じくこちらの記事を参考にしながら、Gorilla IVARでのGravioのSubscriptionを登録した後、Gravio Studioデータビューアを開き、IVARからイベントが送信されていることを確認します。
顔認証の推論結果をSlackに通知
今回はさらに、この結果をSlackに通知してみます。ここからはこちらの記事を参考に進めていきます。
事前にSlackのワークスペースを作成し、メッセージを投稿するためのトークンを取得してください。
基準(トリガー)を満たした時に行う挙動、今回はSlack通知である「アクションの設定」は、Gravio Studioでコンポーネントライブラリーから、事前に用意された「Slack Post Message」を選びます。
「チャンネル」にはSlackで作成したチャンネル名、「テキスト」にはSlack上で表示するメッセージ、「トークン」にはワークスペースのトークンを入力して設定は完了です。アクションは2種類、1)来客者(顔画像の非登録者)の場合は「不詳人物が侵入しました」と表示、2)社員(顔画像の登録者)の場合は登録した名前がメッセージ表示されるSlack設定を作成しました。
Slack通知のアクションを行う「基準」である「トリガーの設定」は、エリア、キーレイヤーには作成したエリアとレイヤーを選び、作成した2つのアクションうち実行させたいSlack通知を選択して保存します。トリガーは2種類、1)来客者(顔画像の非登録者)の場合、2)社員(顔画像の登録者)の場合を作成します。
トリガー設定を終了で、一通りの設定は終了となります。Slackでメッセージが届いているかどうかを確認してみます。
カメラに映った人が、社員の場合は名前を表示し、来客者の場合は「不詳人物が侵入しました」とSlack通知することができました。GravioではSlackのほか、LINE WORKS、LINE、Microsoft Teamsなどへのメッセージ通知も可能です。
今回はGravioを使い、顔認証カメラAIを活用したソリューションを実装してみました。AIを使った顔認証と聞くと、専門知識が必要だと感じましたが、Gravioを使えば簡単にたった約2時間で実装できました。
Gravioではカメラによる顔認証以外にも、二酸化炭素(CO2)の濃度のデータを送信する「CO2センサー」、温度・湿度・大気圧のデータを送信する「クライメートセンサー」など、豊富な種類のデバイスがあるので、アイデア次第でカメラAIとIoTセンサーを組み合わせたソリューションの実装が可能だと思います。
興味のある人はGravioの公式サイトをチェックしてください。