OJT2020:Vieureka を用いた 3D 人流モニタリング

はじめまして、リサーチャーの三宅と申します。 今年度の新人研修(OJT)において、Panasonic 様が提供する Vieureka *1というエッジ AI カメラデバイスを使用したアプリケーション開発を 2 か月間行いました。 tech.panasonic.com この記事では私たちのチームで開発した「Vieureka を用いた 3D 人流モニタリングシステム」の概要について紹介します。

本プロジェクトのテーマ

f:id:morphotech:20200901141435j:plain 本プロジェクトでは Vieureka を用いた 3D 人流モニタリングシステムを制作しました。人流モニタリングとは、例えば店舗の天井などに Vieureka を設置して、人の移動を可視化するシステムです。3D 人流モニタリングとは、俯瞰図上での人の移動を可視化し、実際の人物の動きがわかりやすくモニタリング出来るようにするシステムです。このような俯瞰図上の移動データは、購買行動などの人物の行動を解析するために非常に有用であると考えられます。既存の Vieureka アプリとして存在する人流モニタリングは、カメラの視野上に映った人物の動きをモニタリングするものでした。比較した表を以下のようにまとめてみました。既存のものを 2D でのモニタリングとするならば、俯瞰図を作成するという点で、本システムは 3D といえるでしょう。また、モニタリングできる範囲については、2D の場合だと個々のカメラに映った範囲でのモニタリングになっており、たとえば商品棚で死角が生じている場合には、人物が死角に入った段階でモニタリングが途切れてしまいます。一方で 3D モニタリングシステムでは、複数のカメラの情報を俯瞰図上に統合するので、死角に入っても他のカメラの情報を使ってモニタリングを継続させることができます。またこのことは、一つのカメラの視野には収まらない広い空間でのモニタリングが可能であることも意味しています。

Vieureka を用いた 3D 人流モニタリング

f:id:morphotech:20200901141453j:plain このようなシステムを構築するためには、主に以下の 2 つの処理が必要です。一つは、動画から人物を検出すること。もう一つにはカメラと検出した人物の立体的な位置関係、そしてカメラ同士の立体的な位置関係を求めることです。通常このような処理は多くの計算資源を必要とするので、動画をサーバーにストリーミングし、サーバーですべて行います。このとき、以下のようなことが問題になる場合があるかもしれません。一つには、通信データ量の問題です。カメラ映像をストリームするためには、1 台につき 10 Mbps 程度の通信ビットレートを必要とします。数台であれば問題ない程度ですが、大規模なシステムを構築するとネットワークを圧迫します。また、動画には個人情報が多く含まれており、インターネットに載せること自体がリスクとなります。顧客の動画を扱うというだけで、データの管理コストや漏洩による損害リスクが問題になるケースがあるでしょう。Vieureka のようなエッジ AI カメラデバイスを用いることで、上記のような問題点を解決することができます。取得した動画はすべて Vieureka 内で処理したあとすぐに破棄することができ、その後の下流処理に必要なデータだけを抽出してサーバーに送ることができるからです。我々のチームではこのような抽出されたデータをメタビデオと呼び、どこまでの処理を Vieureka で行い、何をメタビデオとして定義しサーバーに送るか、という点を技術的な論点と位置づけました。

システムの概要

f:id:morphotech:20200901141517j:plain 本システムの概要は以下の通りです。Vieurekaでは人物の検出を行います。人物検出の方法としては、昨今では深層学習による推論が高い精度を持つことが知られています。しかし、深層学習による推論には重い処理が要求されるため Vieureka のような IoT 機器で、一般的なフレームワークを動作させることは難しい現状です。そこで、エッジデバイスやモバイル端末で深層学習モデルを推論することを可能にする当社製品 SoftNeuro® を使用しました。SoftNeuro® を使用することで、Vieurekaに搭載された CPU 上で深層学習モデルを推論し、実用的なフレームレートで動画を処理することができます。一つ一つの Vieureka で独立に人物を検出し、あとで情報を統合するのに必要な特徴量を計算で求めた後、それらをまとめてサーバーに送ります。サーバーでは複数の Vieureka から送られてきたメタビデオをもとに、カメラと人物の位置関係、およびカメラ同士の位置関係を三次元上で復元します。同時に、俯瞰図を生成し、人物の俯瞰図上での動きのデータを生成します。これより先は未実装で、実際にどのような実装にするかはアプリケーションによって異なると考えています。基本的には 3D 人流モニタリングの結果をリアルタイムで表示するビューワーや、過去のデータを一括でダウンロードし、下流解析を行うポータルなどの開発が考えられます。

手法のアイデア

f:id:morphotech:20200901141535j:plain つぎに、簡単に手法のアイデアについて模式図を用いてご紹介します。Vieureka では、取得した画像から Softneuro® と深層学習モデルを用いて人物を検出します。その際、人物の大きさや位置、見た目の特徴量を抽出し、メタビデオのフレームとします。サーバーはメタビデオの断片を受信した後、そのデータから深度検出を行い、座標を 3 次元化します。このとき、カメラと人物の位置関係も同時に取得することができます。最後に、俯瞰図を作成し、人物の位置をプロットします。

f:id:morphotech:20200901141602j:plain 以上の処理を複数台の Vieureka でも同じように行います。サーバーでは別々のメタビデオを統合します。統合する際に、カメラと人物の位置関係を推定するのと同様のフレームワークで、カメラ同士の位置関係も推定することができます。この統合の処理により、モニタリングする範囲を拡張することができるようになります。すなわち、死角を補いあい、一部のカメラから見えていなくても継続してモニタリングを行うことができます。このシステムでは、サーバーで使える情報が少なく、また Vieureka での処理で生じたノイズも含まれています。カメラを増やして情報を統合することで、最終的なモニタリングの精度を向上させることが出来るというメリットもあります。

システムによるトラッキングのデモ

f:id:morphotech:20200901141551j:plain それではシステムによるトラッキングのデモをお見せします。デモの撮影には、対角視野角 124 度のワイドタイプのVieureka 3 台を使用しました。モルフォ本社の会議室の一つを使用しました。だいたい 20 人程度が収容可能な部屋です。そこの壁の隅に、このように Vieureka を設置しました。おおきな三脚で天井付近に固定したり、マグネットで壁に固定することができます。こうしてみると、非常に小型でかわいらしい感じになることがお分かりになると思います。

先ほど述べた通り、設定としては、カメラ 3 台を使用し、動画取得 FPS は 1 としています。また商品棚のような障害物を想定して、ホワイトボードにより死角を意図的に生み出しています。この部屋で、3 人の人物が歩き回っています。カメラの映像 3 枚が実際にVieurekaで取得した動画です。赤く囲まれた四角形が検出された人物です。今は分かりやすさのためにオーバーレイしていますが、実際にはこれらの情報は切り離され、四角形の情報だけがサーバーに送られます。右下の図が実際にカメラと人物の位置を俯瞰図上にプロットした図です。同じ色の点は同じ人を表しています。障害物があるので、各カメラで検出される人物は2人になってしまう場合でも、だいたい 3 点が表示されていることがわかります。また、一度見失っても、同じ色の点が復活するのがわかると思います。これは、メタビデオに含まれる情報が人物をある程度特定できる特徴量を含んでおり、それを統合しているためです。しかしよく見ると、異なる人物の四角形が重なってしまった後に、色が入れ替わってしまうことがあります。これは ID Switch と呼ばれ、この分野で根源的な問題のひとつです。ID Switch を取り除くことは我々のチームとしても今後の課題ということになります。また、位置のノイズも大きく、改善が求められると考えています。

まとめ

f:id:morphotech:20200901141615j:plain 最後に、今回のシステムで実現したこととメリットをまとめたいと思います。 本システムでは、複数台の Vieureka を用いた俯瞰図上の人流モニタリングを実現しました。このことにより人物の実際の動きがわかりやすいモニタリングが可能になりました。また、複数台のカメラを組み合わせたことにより、視野が拡張されて、一つのカメラには収まらない、広い空間でのモニタリングが可能になりました。また、障害物による死角を補い合うように Vieureka を設置すれば、死角をなくすことが可能になりました。また、カメラの位置を自動的に推定することを実現しました。店舗などの応用ではこの特性は重要ではないかもしれませんが、設営後すぐに稼働させることができ、またカメラの場所をいつでも変更可能なので、たとえば移動式のモニタリングシステムのようなアプリケーションが可能であると考えます。最後に、カメラとして Vieureka を用いたことで、エッジで動画を処理し、その場で破棄するようなシステムを実現しました。このことによって、通信するデータ量を節約することができ、動画等個人情報をインターネットに乗せないような安全なモニタリングが可能になりました。

*1:「Vieureka」および「Vieureka」ロゴはパナソニック株式会社の登録商標です。