<Gravioユースケース>ONVIF対応のネットワークカメラを利用して“密”を検知する ―Gravio Basic以上に内蔵されている「TensorFlowによる画像推論機能」を使ってみよう―
こんにちは、Gravio事業部のタルミです。
先日、Gravioで新しいオリジナルCO2センサーの提供開始と、その機能を活用した“密の検知”をアナウンスさせていただきましたが、カメラを使った場合はどうなるの?というお問い合わせも引き続き多く頂戴しています。
ご想像のとおり、「密」情報を取得したい場所、時間、人数などによって、いろいろなセンシング方法が考えられます。“One solution does not fit all”と良く言われますが、状況に応じて、CO2センサーで取ったり、人感センサーで取ったり、トイレなどは開閉センサーでもデータは取れます。まぁ個室に多人数で入られるとちょっと難しいですが。また、カメラはそういった場所には設置しにくいですよね。したがって、ケース・バイ・ケースで情報の収集方法を選んでいただくのが一般的です。
今回は、ご要望の多い「カメラによる人数検知」をご紹介します。
GravioはBasic以上ですと、正面を向いた人の顔から検知をすることができる推論と、横や後ろを向いていても「人だな」と検知することができる推論、更には窓の内側にカメラを設置することで、天候を判断する推論と、大きく分けて3種類の学習済み推論モデルが標準で提供されています。これらを使うことで、カメラの画像から、あたかも物理的なセンサーが検知したかのごとく、画像データを基に推論を行ない、数値としてのデータを提供できるような仕組みが搭載されています。この機能を弊社では「ソフトウェアセンサー」と呼んでおります。
今回行なうこと
ネットワークカメラの画像をもとに、エリア内の人数を推論を用いて数値化する。
※数値化したあとのデータは他のブログをご参照ください。◯人以上になったらLINEを飛ばす、ライトを赤にする、人数の推移をグラフにする、などなど、おおよそできますw
用意するもの
- Gravioが動作するハードウェア一式
Windows 10、Mac、Raspberry Pi 4 など - Gravio Basic以上のご契約
ONVIFカメラの接続と推論の実行に必要です - ネットワーク環境
カメラによって異なります。ONVIF対応カメラはPoE接続の製品が多いので、LANの見直しが必要になる場合があります - ONVIF対応ネットワークカメラ
アイ・オーデータ社Qwatch TS-NS220/NA220/220S、SONY SNC-CX600シリーズなど
※最新のONVIF対応ファームウェアをご利用ください
セットアップ手順
- ネットワークカメラをネットワークに接続させる
- Gravioをセットアップする
- Gravioでネットワークカメラを検出し、センサーとして使うためのセットアップをする
- Gravioのデータビューワで推論結果がデータとして蓄積されているか確認する
こちらが大まかな流れとなります。
では、早速作って行きましょう。
1. ネットワークカメラをGravio HubKitが動作しているネットワークに参加させましょう。
今回は192.168.1.xxxという「よくある」自宅のネットワークに参加させています。
設置環境により異なりますが、通常、カメラは電源を入れネットワークにつなぐとDHCPで自動的にネットワークに参加します。カメラ自体にUser名とPasswordを必要としますので、こちらはメモにとっておいてください。
殆どの作業はブラウザーベースで行います。カメラによっては設定が多岐にわたるものがありますが、上記ご紹介のカメラであれば、デフォルトでも問題ないと思われます(絞り、ホワイトバランス、自動補正機能など)。
推論、分析に使う場合は「見た目に美しい画像」より「リアルに近い画像」の方が良い結果が得られますので、自動補正系の機能はDisableにすると、推論結果が良いケースが多いです。
カメラに接続し、ブラウザー経由で、画像が確認できていれば、第一段階は終了です。
オートフォーカス、固定フォーカス以外の、ピント合わせが必要なカメラの場合、この時点でピントを合わせておいてください(大体ライブ画像が見れるようにブラウザーに表示されていると思います)。
2.Gravioセットアップ
他ブログに記事がございますので、こちらでは割愛します。
3. Gravioで、当該のカメラを「ソフトウェアセンサー」として使えるようにセットアップしていきます。
まずはじめに、利用可能な画像推論モデルをダウンロードしておきます。
Gravio Studioの「設定」を開くと、「画像推論モデル」の選択が可能ですので、こちらを「配置」することで、お使いのGravio Hub(HubKit)に学習済み推論モデルがダウンロードでき、利用できるようになります。
今回は比較的狭めのエリアで使うCongestion(混雑状況)の16フィート用と、次のブログで利用するWeather(天候推論)の学習済み推論モデルを配置しています。
必要に応じて適切なモデルをダウンロード(配置)していただきます。
ちなみに、NumberOfPeopleがカメラに正対している顔の数をもとに人数を検知するためのモデルで、Congestionの32/48フィートはより広い部屋でカメラに映る遠い人まで推論の対象とするモデルです。状況にあった推論モデルをご利用ください。
さて、推論モデルを配置したら、実際にGravioのセンサーとしてカメラを登録していきます。詳細はこちらのマニュアルに記載されていますので、マニュアルを読みながら設定していってください。なお、一つだけ重要なポイントがあるので、こちらは説明を加えさせていただきます。
センサーの登録と同じく、エリアを設定し、そこにレイヤーとして「PictureOnvifDevice」を設定し、デバイスの追加でGravioが自動的に検知してきたネットワークカメラ(IPアドレス表記が出ます)を割り当てることで、登録ができます。
その次が重要です。
割り当てたカメラの推論間隔などを設定(iマークを押すと設定画面が開きます)していきます。設定画面イメージはこのようになります。
この中の5が重要です。先にカメラを設定したときのユーザー名とパスワードを入力する必要がありますので、忘れずに。
あと、キャプチャー形式を「動画」にしてしまうと、推論ができません。
イメージとしては◯秒に1回、カメラからの画像を静止画として確認し、その画像に推論を行う、という仕組みとなります。人の動きが早すぎる場合は1秒以下の検出ができませんので難しいですが、待合室や会議室などでの利用であれば、問題ないかと思います。
実際に画像をもとにした推論はこのように画像データとして保存されます。
もちろん、プライバシー保護のため、この画像保存を停止することもできます。
この場合、1名検出していますね。
※テレワーク中のため、拙宅でやっております。お見苦しい画像ですが、ご容赦を。
4. データを確認する
Gravio Studioのデータ(ビューワ)を覗いてみましょう。
カメラを通して、人数が数値データとして蓄積されているはずです。
※うまくデータが来ない場合は、一度Gravio Studio上で、デバイスの「カメラ」をOn-Offしてみる、もしくはGravio HubKitを再起動して頂くと復旧します。
以上で、設定は終了です。
カメラを通して映る人数が推論→データ化できれば、あとはGravioの豊富な機能をご利用いただき、アクションと「つなぐ」だけですね。特定の人数を閾値に、警告を出す、メッセージアプリと連携する、赤色ライトを点灯する、LaMetricTimeなどに数値を表示する、などなど。
もちろん、逐次データをCloud側のExcelやGoogle SpreadSheetなどと連携して傾向をグラフ化するのも簡単です。
また、CO2センサーや人感、開閉センサーのデータと組み合わせてお使い頂くのも良案ですね。
ソーシャルディスタンス・密の回避だけでなく、社員食堂や会議室など、あらゆる「人の集まるところ」でGravioをご利用いただき、空間の「可視化」と通知の「自動化」をしていくことで、スペースの安心かつ快適な活用にチャレンジしてみてください。