最近iPadにもLiDARが実装されたということでLiDAR技術への注目がどんどん上がっているようですね.今回の記事ではそんなLiDARのみでの物体検出技術である「PointPillars」について実際に使えるようになるまで解説していきたいと思っています.
はじめに
さて最近研究が忙しくなりそうという雰囲気をひしひしと感じながらおよそ3ヶ月あったGW気分から抜けれずにいるロックです.
まぁそんな中いきなり研究に触れてしまうと消炭のように溶けてしまうことは目に見えていますので徐々に研究に触れていく必要があります.というわけで今回は実際に実装してみたとかではなく本当にyoutube片手にPointPillars界隈を調べてみたという記事になりますのでみなさんも是非リラックスして読んでみてください.
PointPillarsとは
PointPillarsはLiDARを使用した三次元物体検出技術です.2018年くらいに論文が発表されて最近様々なところで使用され出したようですね.ちなみにこのPointPillarsも一応DeepLearningを応用したアルゴリズムです.そのためPythonの実装が多いのが少しネックですね.
このアルゴリズムの特徴はなんといっても他の三次元物体検出技術よりも処理が圧倒的に速いということでしょう.今までのLiDARとカメラを複合させた物体検出の処理技術でも早くて20Hz程度だった処理速度がこのPointPillarsではLiDARのみで60Hz前後出るようです.LiDARの一般的な周期が10Hzですので60Hzも出たら十分以上実用に耐えられますよね.
しかもいわゆる鳥瞰図に対しても物体検出は対応しており,従来の手法と組み合わせる際に3Dでの物体検出と鳥瞰図からの物体検出のどちらがいいかも選べます.ふ,ふーん.なかなかやるじゃん.
ただ,そんなに早くても精度はどうやねんという方に是非論文に記載されているこの表を見て欲しいです.
まぁ何が言いたいかというとほとんどのアルゴリズムよりも精度が優れているということです.劣っている部分ももちろんありますがそれでもトップのスコアとそれほど変わらないという素晴らしさです.
さらには圧倒的に速度が速いので文句あるなら速度上げてからこいよと他のアルゴリズムに言えるほどの傲慢さです.傲慢の罪PointPillarsです.これにはクーガー兄貴もニッコリ.
というわけでとりあえず2018年に登場した真打とも言える物体検出アルゴリズムってわけですな.あとこんだけ速いならiPad Proでも動かせるのかもねということでPointPillarsについて調べ始めたわけですな.
PointPillarsを頭を使わず使いたい
さて,私たちがやりたいのは頭を使わずにこのアルゴリズムを使用することです.まさに気持ちは消費者でただ使うだけがいいという話ですよね.
これは全人類の総意だと思いますのでとりあえず使用するために必要なことをこの記事ではまとめていきたいと思います.
ちなみに使用する実装はAutowareさんの実装になります.これはまぁC++で実装されていて有名そうだったからという理由です.あと実行するだけならPythonよりも早そうと思ったからですね.
PointPillarsの実装に必要なもの
というわけでPointPillarsはAutowareさんのものを使用しようと考えていますが私の環境だとAutowareのbuildがうまくいかなかったので単独でPointPillarsを取り出すべく必要なものをリストアップしていきます.
- CUDA Toolkit v9.0 or later
- CUDNN
- TensorRT -> How to install
というわけでこの3つが必要のようですね.セットアップの手順などはこのREADMEによく書いてありますのでご確認ください.
https://gitlab.com/autowarefoundation/autoware.ai/core_perception/blob/5ef512c69046de76790cbebc3185f480b954d1b6/lidar_point_pillars/README.md
ちなみに私の環境ですと
- CUDA 10.2
- CuDNN 7.6.5
- TensorRT 6.0
PointPillarsをビルドする
時間ができたらこの部分についても追記していきたいと思います.とりあえずはAutowareをビルドしたと仮定して進めていきます.
PointPillarsを使用する
というわけで脳死でPointPillarsを使用すべく以下のコマンドを入力しましょう.
roslaunch lidar_point_pillars lidar_point_pillars.launch pfe_onnx_file:=/PATH/TO/FILE.onnx rpn_onnx_file:=/PATH/TO/FILE.onnx input_topic:=/points_raw
ちなみにこのonxxファイルについてですが以下のコマンドでcloneすればそのフォルダの中に入っているのでそれを使用すれば良いかと思います.
git clone git@github.com:cirpue49/kitti_pretrained_point_pillars.git
さいごに
というわけでこれでみなさんも脳死でPointPillarsを使えるようになったのではないでしょうか.今後もなんか研究に行き詰まった時にはこんな感じで記事にしていきたいと思っていますのでみなさんにも見ていただけますと幸いです.
0 件のコメント :
コメントを投稿