準備
PointPillars のオープンソース コード パス
エラーの概要
1. ModuleNotFoundError: 「2 番目」という名前のモジュールがありません
エラー:
./sec パスに移動し、次のコマンドを実行します。
python create_data.py create_kitti_info_file --data_path=/data/sets/kitti_second/
エラーが報告されます。
ModuleNotFoundError: No module named ‘second’
この他にも多くの警告がありますが、現時点では警告内容を無視してください。
理由
モジュールをインポートするとき: import xxx 、デフォルトでは、Python インタープリターは現在のディレクトリ、インストールされている組み込みモジュール、およびサードパーティ モジュールを検索します。
ただし、「2 番目」モジュールは現在見つかりません。「2 番目」は上のディレクトリにあるため、プログラムが 2 番目を正常にインポートできるように、このパスを追加する必要があります。
解決
create_data.py の「from skimage import io as imgio」の後に追加します。
import sys
sys.path.append("..")
再コンパイルすると、このエラーは消えます。
2. /usr/lib/x86_64-linux-gnu/libcuda.so: ファイルが短すぎます
エラー:
./sec パスに移動し、次のコマンドを実行します。
python create_data.py create_kitti_info_file --data_path=/data/sets/kitti_second/
エラーが報告されます。
numba.cuda.cudadrv.error.CudaSupportError: Error at driver init:
Possible CUDA driver libraries are found but error occurred during load:
/usr/lib/x86_64-linux-gnu/libcuda.so: file too short
理由
環境はソースコードドキュメントで提供されている docker にインストールされますが、docker ではローカル GPU が使用できないため、nvidia-docker2 をインストールする必要があります。
nvidia-docker2 は GPU を使用できる docker です。nvidia-docker は、nvidia-docker-plugin を介して docker 上でパッケージ化され、その後 docker に呼び出されます。
解決
nvidia-docker2をインストールします。nvidia グラフィック カード ドライバーがこのマシンにインストールされていることを前提としているため、グラフィック カード ドライバーのインストール プロセスはここでは繰り返されません。
1.
インストール手順については、公式 Web サイトのリンクを参照してください。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
次のように進めます。
- リポジトリと GPG キーの安定バージョンをセットアップする
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- パッケージ リストを更新した後、nvidia-docker2 パッケージとその依存関係をインストールします。
sudo apt-get update
sudo apt-get install -y nvidia-docker2
Get:1 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 libnvidia-container1 1.10.0-1 [926 kB]
Get:2 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 libnvidia-container-tools 1.10.0-1 [24.1 kB]
Get:3 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 nvidia-container-toolkit 1.10.0-1 [1,961 kB]
Get:4 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64 nvidia-docker2 2.11.0-1 [5,544 B]
Fetched 2,917 kB in 1min 36s (30.3 kB/s)
- Docker デーモンを再起動します。
sudo systemctl restart docker
- 基本の CUDA コンテナを実行することで、動作するセットアップをテストできるようになりました
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
- コンソールの出力は次のようになり、nvidia-docker2 が正常にインストールされたことが示されます。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| N/A 54C P8 9W / N/A | 260MiB / 6070MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
2.
インストールが完了したら、次のコマンドを使用して新しい Docker に入ります。パラメータを追加しないと--rm
、終了後に Docker が消えます。
sudo docker run -it --gpus all smallmunich/suke_pointpillars:v1 /bin/bash
コマンドを入力してください
nvidia-smi
コンソールの出力は次のようになり、GPU が Docker で使用できることを示します。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| N/A 54C P8 9W / N/A | 260MiB / 6070MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
git を再度プルし、データ セットを準備し、create_data.py を再度実行すると、エラーが消え、操作が成功したことを示す次の情報が出力されます。
warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc))
Kitti info train file is saved to /data/sets/kitti_second/kitti_infos_train.pkl
Kitti info val file is saved to /data/sets/kitti_second/kitti_infos_val.pkl
Kitti info trainval file is saved to /data/sets/kitti_second/kitti_infos_trainval.pkl
Kitti info test file is saved to /data/sets/kitti_second/kitti_infos_test.pkl
3. FileNotFoundError: [Errno 2] そのようなファイルまたはディレクトリはありません: '/media/holo/B834B57734B538E8/kitti/data/kitti_dbinfos_train.pkl'
エラーを報告する
パスを/秒に切り替えて実行します
python ./pytorch/train.py train --config_path=./configs/pointpillars/car/xyres_16.proto --model_dir=/path/to/model_dir
エラー:
FileNotFoundError: [Errno 2] No such file or directory: '/media/holo/B834B57734B538E8/kitti/data/kitti_dbinfos_train.pkl'
理由
「設定ファイルの変更」ステップは、ファイル パスを変更する必要がある場所がわからないため、実行されません。
解決
ファイルを開く
vim second/configs/pointpillars/cat/xyres_16.proto
関連するパスを変更します (データ セットの場所がデータ セットと一致している場合、両方とも /data/sets/kitti_second/ に配置されます)。
train_input_reader: {
...
database_sampler {
database_info_path: "/data/sets/kitti_second/kitti_dbinfos_train.pkl"
...
}
kitti_info_path: "/data/sets/kitti_second/kitti_infos_train.pkl"
kitti_root_path: "/data/sets/kitti_second"
}
...
eval_input_reader: {
...
kitti_info_path: "/data/sets/kitti_second/kitti_infos_val.pkl"
kitti_root_path: "/data/sets/kitti_second"
}
他のいくつかの xyres_x.proto は、すでに正しいものなので変更する必要はありません。作成者が意図的に xyres_16.proto を変更し、データ セットのパスに従ってこの場所を変更する必要があることを他の人に知らせた疑いがあります。
opt/conda/conda-bld/pytorch_1565272279342/work/aten/src/ATen/native/IndexingUtils.h:20: UserWarning: dtype torch.uint8 によるインデックス作成は非推奨になりました。代わりに dtype torch.bool を使用してください。
4. 「ModuleNotFoundError: No module names 'OpenGL」を視覚化します。
エラーを報告する
kittiviewer を使用してプロセスを視覚化し、次のコマンドを入力します
python viewer.py
エラーを報告する
ModuleNotFoundError: No module named 'OpenGL'
理由
OpenGLがインストールされていない
AttributeError: 'NoneType' オブジェクトには属性 'glGetError' がありません
解決
-
ソースを変更します: ubuntu バージョンを確認し
cat /etc/issue
、オンライン方法に従ってソースを変更します。 -
OpenGL をインストールします。
apt-get install python3-opengl
5. Dockerインターフェースが表示できない
プロセス参照リンク
https://www.modb.pro/db/337891