はじめに
三菱総研DCSのAI・IoTエンジニアの日野です。
社員食堂にカメラを設置して室内の混雑度を計測する取り組みについて、全2回でご紹介しています。
今回は、食堂出入口に設置した深度カメラを用いて流入計測および混雑度の可視化を行った箇所について解説します。
第1回 デモアプリの概要、深層学習によるトラッキング方法について
第2回 深度カメラによるトラッキング方法について(本記事)
検証の概要
本記事で解説するのは、以下のシステム構成のうち赤枠の範囲となります。
図1.システム構成図
出入口の計測においては以下2通りの手法を試しました。
前回の記事では深層学習による物体検出を用いた手法を解説しましたが、TensorRTを用いた推論処理の最適化を行ってもエッジ端末上での処理速度が平均4FPS程度であり、対象が早歩きの場合などに十分な精度が出ない課題がありました。
手法 | エッジ機器 | カメラ |
深層学習による物体検出 | Edge AI Box (Jetson TX2) |
USBカメラ |
画像処理 | Jetson Nano | 深度カメラ (Intel RealSense Depth Camera D435i) |
そこで今回は、負荷が高い深層学習を用いた物体検出は使用せず、深度カメラと画像処理だけでどの程度トラッキングができるかを検証しました。
使用した深度カメラについて
検証で使用したIntel RealSenseシリーズは、オープンソースのIntel RealSense SDK 2.0を利用することができ、研究用途で人気の高い深度カメラになります。RGBでの通常のカメラ撮影に加え、2台の赤外線カメラを備えており、その視差から奥行情報の計測が可能になります。また、深度情報については夜間も撮影可能というメリットがあります。
図2.取得可能な画像イメージ(左 RGB情報、右 深度情報)
実際に食堂の出入口に設置した深度カメラから取得された画像イメージを図2に示します。RGBカメラと深度カメラで画角が多少違いますが、深度情報では、カメラに近い物体ほど明るく、遠い物体ほど暗く表示するようにしており、正しく深度情報が取れていることが確認できると思います。
処理詳細
深度カメラを使った画像処理で流入計測を行う際は、画像内のオブジェクトの1点をトラッキングポイントとして設定し、そのポイントの座標の変化量をもとに各フレーム間で同一オブジェクトかどうかの紐づけ(トラッキング処理)を行います。
具体的には以下の流れで処理を行っていきます。
① 深度情報のフィルタリングとノイズの除去
② トラッキングポイントの決定
③ トラッキング処理
深度情報のフィルタリングとノイズの除去
まずは前処理としてノイズの除去と距離によるフィルタリングを行います。
深度カメラから取得した情報はそのままだとノイズを含んでおり、例えば、図3のように、西日や床からの反射などにより強い赤外線の照射がある場合(赤枠箇所)や、陰になり赤外線の計測ができなかった範囲(青枠箇所)に黒く欠損が現れます。
図3.深度情報(グレースケール)
そのため、2値画像のオブジェクトの膨張と収縮を繰り返してノイズを除去する手法である、モルフォロジー変換を行いました。また、ある特定のピクセルだけ輝度が高くなることがないように、ガウシアンフィルタを用いて輝度を平滑化しました。
図4.フィルタリングとノイズ除去後の画像
トラッキングポイントの決定
今回トラッキングポイントは「オブジェクト領域の中で最も輝度が高い(カメラからの距離が近い)点」の座標としました。ここで、「1枚の画像内から最も輝度が高い点」としてしまった場合、画像内に複数の通過者がいた場合に対応することができません。そのため、まずは画像内で領域の範囲を決定し、そのうえで各領域の中で最も輝度が高い点を取得するようにしています。また、除去しきれなかったノイズが画像内で領域として表示されてしまうことがあるため、一定以上の面積を持つ領域にのみトラッキングポイントを設定しています。
図5.通過者の領域とトラッキングポイントの決定
トラッキング処理
次に、各フレームから取得したトラッキングポイントをもとに、フレーム間のオブジェクトのトラッキングを行います。今回は各フレームのトラッキングポイントのうち、最も距離が近いポイントを同一のオブジェクトとみなすことでトラッキングを行いました。
図 6. トラッキング処理のイメージ
通過判定については、深層学習を使った手法と同様、室内と外の境界線を定義したうえでトラッキングポイントと境界線の交差判定、および出入口のどちら側へ通過したかを判定しています。
以上の処理を行った状態でのトラッキング処理の様子は以下の通りです。
図 7. 加工前データ
図 8. 加工後データ
表示画像では、画面の下半分が壁を撮影している状態ではありますが、高い精度で入退出を計測することが出来ています。
また、今回の手法では深層学習を使った推論処理を行っていないため、処理が軽いという特徴があります。FPSは15程度出ており、深層学習を使った場合には精度が低下した小走りのケースでも、対応することができていました。1台のJetson Nanoに対して2台の深度カメラを接続した場合でも処理遅延が起きなかったため、出入口の距離が近い場合であれば、エッジデバイス数の削減が可能となります。(出入口の距離が10m以上離れている場合には、USBケーブルの電圧低下や通信の遅延が原因でエラーが発生する恐れがあります)
まとめ
今回は全2回にわたり出入り口の計測による混雑度可視化について、RGBカメラと深層学習を使った手法と深度カメラを使った手法についてご紹介しました。それぞれの手法について精度、コスト、設置の柔軟性で整理した表を以下に示します。
手法 | 精度 | コスト | 設置の柔軟性 |
深層学習による 物体検出 |
△(早歩き、複数人通行時の精度に課題) | △(GPUエッジ端末が必要) | 〇(斜めからでも計測可能) |
深度カメラ | 〇 | 〇 | △(俯瞰での撮影が必要。 障害物がある場合は考慮が必要) |
深層学習を使った手法では、斜めからの計測も可能であり、設置の柔軟性が高い反面、今回採用したアルゴリズムとデバイスでは処理の遅延による精度低下が発生していまいました。一方で深度カメラと画像処理を用いた手法では、処理速度、精度共に満足いくものでしたが、カメラの設置条件が厳しいという特徴があります。
また、今回ご紹介した手法以外でも、赤外線センサーを使った方法や、重量センサー付きのマットを使った方法もあり、それぞれ設置場所の制約やコスト感が異なります。そのため、計測したいシチュエーションに合わせて最適な手法を選択していくことが重要となります。
最後まで読んでいただいてありがとうございます。