前提環境の要件
3D点群ベースの物体検出フレームワークであるOpenPCDetを安定して稼働させるためには、GPUドライバおよびCUDAツールキットのバージョン整合性が必須です。検証済みの推奨構成は以下の通りです。
- CUDA: 11.3
- cuDNN: 8.2.1
- Python: 3.8
- PyTorch: 1.11.0 (CUDA 11.3対応ビルド)
- Sparse Convolution: spconv 2.3.6
- CMake: 3.26.3 以上
システム側では nvidia-smi コマンドを実行し、表示されるCUDAバージョンが11.3以上であることを事前に確認してください。
依存環境の構築手順
独立した仮想空間を作成し、必要なランタイムを初期化します。
conda create -n pcdet_workspace python=3.8 -y
conda activate pcdet_workspace
リポジトリのルートディレクトリへ移動後、ベースとなるパッケージ群を一括導入します。
pip install -r requirements.txt
次に、CUDA 11.3に厳密に対応したPyTorchスタックを指定URLから取得してインストールします。
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 \
--index-url https://download.pytorch.org/whl/cu113
点群処理の核となる疎畳み込みエンジンおよびビルド支援ツール、データ可視化ライブラリを追加します。
pip install spconv-cu113 cmake open3d av2 kornia
ソースコードのビルドと統合
依存パッケージが整った状態で、プロジェクトのカスタムCUDA演算子をコンパイルします。開発者モードを使用することで、インストールディレクトリへのシンボリックリンクが作成され、リアルタイムでのデバッグが可能になります。
python setup.py develop
ビルドプロセスが正常に終了した後、 pip list | grep pcdet を実行し、ライブラリが正しく認識されているか検証します。
推論デモの実行
事前学習済みウェイトを用いて、推論パイプラインの動作確認を行います。KiTTIフォーマットのデータおよび設定ファイル、チェックポイントファイルは公式ドキュメントから取得済みであることを前提とします。
cd tools
python demo.py \
--cfg_file cfgs/kitti_models/pv_rcnn.yaml \
--ckpt ../pretrained/pv_rcnn_8369.pth \
--data_path /datasets/kitti/velodyne/sample_0000.bin
コマンドが正常に実行されると、指定された点群データに対する3Dバウンディングボックスの推論結果がコンソールに出力され、Open3Dバックエンドによる可視化ウィンドウが起動します。
コンパイルエラーの対処法
ビルド直後またはモデルロード時に、以下のシンボル未定義エラーが出力されるケースがあります。
ImportError: ... undefined symbol: _ZN3c104impl23ExcludeDispatchKeyGuardC1ENS_11DispatchKeyE
この事象は、PyTorchのABIバージョンとカスタムC++拡張モジュールのコンパイル環境が一致していないか、前回のビルドキャッシュが残存していることによって引き起こされます。仮想環境の再構築が困難な場合、ビルド成果物の完全削除とクリーンコンパイルで解消します。
rm -rf build/ dist/ *.egg-info
python setup.py develop
build ディレクトリ内の中間オブジェクトファイルを削除せずに再実行すると、コンパイラが古いキャッシュを再利用し、バージョン不一致が固定化されるため、必ずディレクトリ削除手順を先頭で実行してください。