[3D 検出シリーズ - PointRCNN] PointRCNN コードを再現し、事前トレーニング重みのダウンロード リンクを含む PointRCNN 3D ターゲット検出の視覚化を実現します (0 から開始し、さまざまなエラー ソリューション)

【3D検出シリーズ-PointRCNN】PointRCNNコードを再現

1. コードをダウンロードする

2. データセットを準備する

(1) 公式サイトが提供するデータセット形式を使用する

(2) ソフト接続を使用する

3.試験結果

4. 結果の視覚化

(1)LiDARのみ表示

(2) LiDARと画像の表示

 (3) LiDARと画像を特定のインデックスで表示

(4) 変更された LiDAR ファイルの追加の点群ラベル/マーカーを 5 次元として含む LiDAR を表示します


まず環境設定をアタッチします。

Ubuntu 18.04

Python3.6

pytorch 1.8.0 トーチビジョン 0.9.0 cuda 11.1

(これらを急いでインストールしないでください。後でチュートリアルがあります) Mayavi 4.7.1 vkt 8.2.0 traits 6.2.0 traitsi 7.2.1 PyQt5 5.15.2


1. コードをダウンロードする

https://github.com/sshaoshuai/PointRCNN

 Pytorch バージョンのコードは github から直接ダウンロードできるため、この手順についてはあまり説明する必要はありません。

ダウンロード方法がわからない場合は、ターミナルを直接開いてコードを入力できます。

git clone https://github.com/sshaoshuai/PointRCNN

知らせ!

ダウンロード後のコードが不完全です。

それ以外の場合、次のエラーが報告されます: No module names 'iou3d_cuda'

    pointnet2_lib を開くと空になっていますが、このとき github でこのフォルダーを別途開いて中身をダウンロードし、ローカルの code フォルダーに置く必要があります。次に、次のコードを実行していくつかのツールをインストールする必要もあります。

sh build_and_install.sh

エラー 1:

エラー: コマンド 'gcc' が終了ステータス 1 で失敗しました

解決策: ディレクトリを入力します: ~/pointnet2_lib/pointnet2/src/ -----> ファイル内のすべての cpp ファイルの THCState_getCurrensStream(state) を c10::cuda::getCurrentCUDAStream() に変更します。

エラー 2:

 

解決策: 次のディレクトリを入力します: ~/lib/utils/roipool3d/src/roipool3d.cpp ----->ファイル内の AT_CHECK を TORCH_CHECK に変更します。


2. データセットを準備する

(1) 公式サイトが提供するデータセット形式を使用する

まずKITTIのデータセットをダウンロードする必要がありますが、公式サイトに行くと全然ダウンロードできないので試す必要はありません。Baidu クラウド ディスクに直接アップロードしている偉い人がいて、そこからダウンロードできます。KITTI データセットのダウンロード (Baidu Cloud) (作者は簡単ではありません。他の人に「いいね!」やサポートを与えることができます!!)

公式Webサイトのデータセット構造は次のようになります。

 よく理解していない初心者もいるかもしれません(できるだけわかりやすく説明するように努めていますが、ご容赦ください。読み飛ばしても構いません)。次のように私のものを参照してください

(2) ソフト接続を使用する

    PointRCNN を実行する前に、最初に PointPIllars を実行したため、新しいコピーの作成を避けるために、ソフト接続を直接使用できます。PointPillars のデータセットをここに直接接続します。

PointRCNN の data/KITTI フォルダー内:

ln -s (PointPillars数据集的路径) object

    object は作成されたフォルダーの名前を表します。この名前を使用するのが最善です。そうしないと、コードを変更する必要があります。データセットのパスは、トレーニングとテストを含むルート ディレクトリです。するとオブジェクトファイルが生成されるのでOKです。

3.試験結果

作成者の事前トレーニング済みモデルを直接検出に使用し、そのモデルをツールの下に置くことができますが、このモデルを外部ネットワークからダウンロードすることはできません。CSDN にアップロードしました:---- PointRCNN 事前トレーニング重み-----

次に、テストを開始します。

python eval_rcnn.py --cfg_file cfgs/default.yaml --ckpt PointRCNN.pth --batch_size 4 --eval_mode rcnn --set RPN.LOC_XZ_FINE false

エラー 1:

TypeError:load() に必要な位置引数が 1 つありません:「Loader」

解決:

pip install pyyaml==5.1

 さぁ行こう!今すぐ待ち始めましょう!

 約 10 分間待った後、次のようになります。

 検出結果は次のパスに配置されます。

PointRCNN/output/rcnn/default/eval/epoch_no_number/val/final_result/

4. 結果の視覚化

クローン視覚化ツール:

git clone https://github.com/kuixu/kitti_object_vis.git

     クローン作成後、上記2.(2)と同様にデータファイルにソフトリンクを設定する必要があります。彼のオブジェクトを削除して、再度作成することができます。次に、いくつかの依存関係が必要になります: (ミラーを使用することを忘れないでください。そうしないと、非常に遅くなります!!!)

pip install opencv-python pillow scipy matplotlib pyside2

    次に、mayavi をインストールするには conda を使用する必要があります。pip は使用できません。理由はわかりません...しかし、ここで pip を使用すると、基本的に機能しません...理由はわかりません。

conda install mayavi

次に、kitti_object_vis ファイルでターミナルを開きます。

(1)LiDARのみ表示

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis

  現時点では、次のエラーが発生する可能性があります。

エラー 1: ModuleNotFoundError: 「vtkIOParallelPython」という名前のモジュールがありません

解決:

conda install jsoncpp=1.8.3
pip install pyface==7.3.0

コードを続行すると、次のインターフェイスが表示されます: (完了!!) ターミナルで Enter を 1 回押して、次の画像を表示します。

他にも以下のような表示方法がいくつかあります(詳しくは github kitti_object_visのソースコードをご覧ください  

(2) LiDARと画像の表示

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes

 (3) LiDARと画像を特定のインデックスで表示

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes --ind 1 

(4)modified LiDAR file追加の点群ラベル/マーカーを 5 次元として含む LiDARを表示

python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --pc_label


自分で書いたので少し複雑ですが、少なくともこれで完了です。最適化がある場合は、コメント欄で議論してください。

これで完了です。書くのは簡単ではありませんが、成功したらフォローまたはいいねをお願いします。ありがとう~~


おすすめ

転載: blog.csdn.net/Callme_TeacherPi/article/details/125963061