みらいテックラボ

音声・画像認識や機械学習など, 管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

ピープルカウンタを考えてみる(1)

Code for Naraがらみで, 施設に出入りする人のカウント及びそのデータ分析などの実証実験を, とある場所(ヒ・ミ・ツ!!)の施設管理者に提案しようという話が持ち上がっている.


関連記事:
・ピーブルカウンタを考えてみる(1)
ピープルカウンタを考えてみる(2)


1. はじめに
施設出入口で通行人をカウントする方法として,
・ カメラ映像の解析
・ 赤外線センサ
・ マットセンサ
などいろいろとあるが, 今回カウント方法の1つとしてDepthカメラの距離画像によるカウントを検討している.
カメラで撮影した映像データを解析して人のカウントを行う場合, 個人情報の問題があり, 通常は解析後の映像データは保存せずに破棄するといった方法がとられる.
今回は, 更にDepthカメラを使用することで,
・通常のRGB画像に比べ距離画像は個人を特定しにくい.
・施設上部に設置することで, 背景(床面など)と人との識別がしやすいはず.
などのメリットもあると考えている.

また, ハイスペックのPCを使うなら, 今はやりのDeep Learning(例えば, YOLO v2 [1]など)を使って人物の検出を行いカウントする方法もあるが, 最終的に施設の出入口に複数設置することなども考慮するとそうもいかない.
組み込みボードやminiPC程度で処理し, 結果のみサーバにあげるような仕組みにしたい.

2. 技術調査
映像データの解析によるカウント方法について, ざっくりとした処理のイメージは持っているが, まずは少し調べてみることにした.
いくつかある説明記事の中で, 「People Counter with OpenCV Python - FEMB[2]はピープルカウンタの基本的な考え方や画像処理をチュートリアル形式で順に説明してくれている.

チュートリアルに掲載されているコードを試すと, 最終的には以下のようなピープルカウンタを動作させることができる.


Opencv Python - People Counter

処理の概要を少し説明する.
(1) 人物領域の抽出
OpenCV[3]にはいろいろな画像処理アルゴリズムが実装されており, その機能をうまく活用し, 下図のようなシンプルな処理で動いている人物の領域を抽出している.
f:id:moonlight-aska:20180210230534p:plain:w200

(2) UP/DOWNのカウント
検出した人物領域をトラッキングし, 下図のようなUP/DOWNエリアを完全に通過したか否かで, カウントしている.
f:id:moonlight-aska:20180210232643p:plain:w350

ここで紹介されている処理は, 当初イメージしていた処理内容に近いものであったが, 検出した人物領域をトラッキングしている部分については今後の参考になると思う.

今回チュートリアルを試してみたが, 実際にDepthカメラで人の検出を行うには, 以下の部分についていろいろと試す必要がありそう.
・カメラからの距離で, ある程度背景部分を除去し, 人の部分を抽出できると思うが, それだけでうまくいくか?
・Depth画像撮影に赤外線を使用しているので, 昼間太陽光が直接当たるような場所でも, 安定して距離画像が撮影できるか?
チュートリアルの輪郭抽出では, 複数人が固まって出入りした場合, 複数人を一つの領域として抽出してしまう可能性が高く, 何らかの工夫が必要.
などなど.

早くDepthカメラを入手して実データを見てみたいものだが, 現在検討しているDepthカメラは今年1月に発売されたばかりのIntel RealSense D415/435で, すでに初回ロットは売り切れており入手がいつになるかはっきりしない...

しばらくは, Kinectでも使って, できることから検討を進めていこう.

----
参照URL:
[1] YOLO: Real-Time Object Detection - Joseph Redmon
[2] People Counter with OpenCV Python – FEMB
[3] OpenCV Library




OpenCVによるコンピュータビジョン・機械学習入門 (KS情報科学専門書)

OpenCVによるコンピュータビジョン・機械学習入門 (KS情報科学専門書)


画像処理・機械学習プログラミング OpenCV 3対応

画像処理・機械学習プログラミング OpenCV 3対応


実践OpenCV 3 for C++画像映像情報処理

実践OpenCV 3 for C++画像映像情報処理


実践OpenCV 2.4 for Python―映像処理&解析

実践OpenCV 2.4 for Python―映像処理&解析