みらいテックラボ

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

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

Code for Naraがらみで, 今年の初めに施設に出入りする人のカウント及びそのデータ分析などの実証実験を, とある場所(ヒ・ミ・ツ!!)の施設管理者に提案しようという話が持ち上がった.
しかし, Intel Real Sense D415の入手が遅れるなど, 結局提案には至らなかった.

D415入手後, ぼちぼち開発してたPeopleCounterを12月に別の施設で実証実験させてもらえることになった.
先日(11/11), 本番に備えて施設で試し設置し, 設置方法の確認やテストデータを収集することができた. 
今回は, この事前確認で見つかった課題に対して, いくつか改善を行った内容をまとめておく.

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


1. システムの設置
施設には2か所の出入口があり, どちらも自動ドアとなっている.
当初1か所でカウント&データ収集を行う予定であったが, 協力いただいている方がもう1セットシステムを準備してくれたので, 2か所で行うことになった.

自動ドアの横の上部にカメラを設置し, システムは入り口横に設置させてもらえることになった.

f:id:moonlight-aska:20181118231239j:plain:w400

D415を通して, 入り口を見るとこんな感じに見えている.

f:id:moonlight-aska:20181119000052p:plain:w600
(注) カメラ位置ずれによるRGB画像とDepth画像のズレがあるが, 今回は特に補正していない.


2. 課題
カメラを設置し, ピープルカウンターの動作確認を行ったところ, いくつか大きな課題が見つかった.

2.1 自動ドアへの反応
自動ドアのフレームを人物領域として検知する.
f:id:moonlight-aska:20181119003700p:plain:w400

2.2 トラッキング誤り
重心位置で簡易トラッキングやっているが, 急にトラッキングに失敗する場合があった.
頻度が高いので, 当日までには改善が必須.
f:id:moonlight-aska:20181119003641p:plain:w400

2.3 複数人通過
Deep Learningなどによる人物検出ではなく, 簡単な画像処理のみでやっているので, テストする前から複数人が重なった場合はダメだろうと予想はしていたが, ヤッパリといった感じ.
f:id:moonlight-aska:20181119003726p:plain:w400


3. 対策案
それぞれの課題について対策案を検討し, 収集したデータで試してみた.

3.1 自動ドア対策
今回の会場の自動ドアは, 基本ガラスでフレームのアルミ部分のみが反応している.
これなら, カメラ画像ではフレームが斜めの細い領域として撮影されるので, 抽出した矩形領域の面積に対する抽出領域の面積比で人物でないと判断できそうである.

3.2 トラッキング改良
ラッキングは, 抽出領域の重心と前のフレームで検出されている抽出領域の重心の距離が閾値内であれば, その抽出領域が移動したものと判定していた.
そこで, 閾値を厳しくするとともに, 重心間の距離が最小の抽出領域を選択するように変更することで, 改善されそうである.

3.3 複数人通過
こちらは, Deep Learningなど処理の重い人物検出を持ち込む予定はないが, 少しでも改善するためにカメラ取付位置をできるだけ高くすることで, 複数人物の重なりを減少させることとする.

3.4 改善結果
上記課題への対策を少し行った結果は以下の通り.


people counter3

ラッキング及び複数人通過については, 本番までにもう少し検討してみる予定.
本番のイベントでは, 結構大勢の方が来場すると伺っているので, どんな結果になるやら...

----



詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識


深層学習

深層学習


Pythonで学ぶ実践画像・音声処理入門

Pythonで学ぶ実践画像・音声処理入門