Code for Naraがらみで, ピープルカウンタの開発に取り組んではや一年が過ぎた.
昨年12月に, 第5回「HUG²祭り2018」でプロトタイプによる実証実験をさせていただいたこともあり, 今年はCode for Naraに「HUG²祭り2019」で人数カウントをしてほしいとの要望が入り, 今回はYOLOv3を使ったシステムの実証実験をさせてもらうことにした.
関連記事:
・ピーブルカウンタを考えてみる(1)
・ピープルカウンタを考えてみる(2)
・ピープルカウンタを考えてみる(3)
・ピープルカウンタを考えてみる(4)
・ピープルカウンタを考えてみる(5)
・ピープルカウンタを考えてみる(6)
・ピープルカウンタを考えてみる(7)
・ピープルカウンタを考えてみる(8)
先週末(12/1)に, 「HUG²祭り2019」で実証実験やった内容を少し整理しておく.
1. 設置状況
今回は, Deep Learning(YOLOv3)を用いた人物検出を試すということで, ハードウェアは以下を準備した.
- NDIVIA Jetson Nano
- Intel RealSense D435
(D415は画角が少し狭く, 昨年より低い位置に設置したら撮影したい範囲が写らなかったので, D435と交換して設置)
大きなトラブルはなかったのだが, ちょい困ったことも....
Deep Learningの処理が重たいこともあり, 無線キーボードだとキーを受け付けてもらえないことがあった.
事前確認ではUSBキーボードだったので気付かなかったようだ!!
2. 測定状況
正面の入り口の測定状況はこんな感じでした.
モニタを見ながらカウント状況を確認していたが, 昨年の課題だった複数人の同時通行については, YOLOv3を使って人物検出を行ったことで, かなり改善されていた.
ところが, 新たな課題も見えてきた.
(a) 単独通過だが人物検出に失敗
昨年の画像処理による人物検出でも似たような症状があったのだが, 今年はYOLOv3で人物検出を行ったにもかかわらず, 通行の途中で人物検出&トラッキングに失敗してカウントできない場合が結構な頻度で発生した.
PeopleCounter(Hug2-2019-2)
そもそもYOLOv3で人物検出できていないのだろうか?
そんな感じには見えるのだが...
(b) 子供の検出に失敗
開発段階で, 子供の検出性能が少し低いことは分かっていた.
実証実験までに学習データが増えることで改善することを期待していたが, やっぱり検出できない場合が多かった.
今回は, "通行人"という1クラスのみで人物検出を行ったが, 学習データの大部分が大人の通行人で, 子供の通行人が少なかったことが原因の一つではないかと思う.
"子供"と"大人"の通行人の2クラスに分けて学習をすれば性能改善が可能なのではと思っているので, 今度試してみようと思う.
(c) 通過判定線付近に人物が停滞すると, 連続カウントup
今回, 通過判定線付近で入場者にビラを配っている人がいて, その人が判定条件を満たし連続でカウントアップする場合があった.
PeopleCounter(Hug2-2019-4)
現在カウントアップは, 特定の判定線を通過することで行っているが, 判定線でなく判定領域の通過とするような対策が必要かもしれない.
3. 測定結果
データを集計すると, INは1500名, OUTは1200名程度を記録していた.
時間帯毎のIN/OUTをグラフ化すると, 以下のようになった.
ステージの催しは午前中の子供さんたちがたくさん出演する演目があったこともあり盛り上がっていた感があったが, 来場者の結果でも午前中に多くの方が来られていることが分かる.
全体的に, 昨年と同じような傾向であった.
Deep Learningを活用したピープルカウンタの実証実験を通して, いくつかの成果もあったが, 新たな課題も見つかった.
今後, これらのデータを使って, 今回見つかった課題にもトライしてみたい.
----
OpenCV4基本プログラミング―さらに進化した画像処理ライブラリの定番
|
|
|