[Python]PointPillarsを使って3次元点群での人物検出と侵入検知を試してみる
実現したいこと
・センサーで取得した点群データを処理して、検出した人物が指定エリアに侵入したことを検知する
・検出したオブジェクトの個数、時間、バウンディングボックスの位置をフレーム毎に出力する
PointPillarsとは
PointPillarsは、LiDARなどの3D点群データから物体を検出するためのディープラーニング手法です。2018年に提案され、従来の手法と比較して高い精度と高速な処理能力を兼ね備えています。
この手法では、3D点群を垂直方向の柱(pillar)に分割し、各pillar内の点群情報を特徴量として抽出します。その後、これらの特徴量を2Dの疑似画像(pseudo image)として表現し、2D畳み込みニューラルネットワーク(CNN)を用いて物体検出を行います。これにより、3Dデータを直接処理するよりも計算効率が向上し、リアルタイムでの物体検出が可能となります。
処理概要
・物体検出
PointPillarsを使用
→Lidarで取得した点群から人物を高速で検出可能
*PointPillarsの検出例
参考:https://github.com/zhulf0804/PointPillars
・侵入検知
3次元で定義したエリア内で人物が検出された人物のみバウンディングボックスで囲んで可視化
Quick hullを実装し、人物の点群と定義エリアの頂点を用いて内外判定を行う
Quick hull についてはこちらの記事で紹介しています。
実装結果
侵入検知デモ
青色で囲まれたエリアが侵入検知をするエリアであり、
エリア内で検出された人物だけが黄色のバウンディングボックスで囲まれて表示されているのが分かる。
csvの出力
・フレームごとのカウント出力
frame0: Pedetrian:1, Cyclist:0, Car:0
frame1: Pedetrian:2, Cyclist:0, Car:2
Gitはこちら
ディスカッション
コメント一覧
まだ、コメントがありません