特别推荐读读这个。 https://blog.youkuaiyun.com/m0_37605642/article/details/128987547
参考链接(一)OpenPCDet 详细完整复现(Pointpillars、Pointrcnn、Second)进行训练,并进行评估和推理可视化
ubuntu20.04安装OpenPcdet,(CUDA版本11.8,显卡4090)(CUDA版本12.1,显卡3060)
一、环境搭建
1、安装Anaconda
sudo sh Anaconda3-2024.10-1-Linux-x86_64.sh
// 键入密码、按空格、License——>yes、路径选择/home/username/anaconda3、yes
source gedit ~/.bashrc
// 加入路径:export PATH="/home/username/anaconda3/bin:$PATH"
// 激活环境变量
source ~/.bashrc
conda list
// 进入虚拟环境
source ~/anaconda3/bin/activate root
2、cuda版本
torch与cuda对应安装:Previous PyTorch Versions | PyTorch
这里面都没有12.0,但是有12.1,尽量安装官网有的版本。
sudo apt install nvidia-driver-570 #实测520版本各种报错。
# 先查看nvidia-smi硬件型号。找到适合的cuda版本。显示最高版本是12.8。经查最低cuda11.8
nvcc -V # 10.1
当前版本不支持,先删除 环境配置之cuda的卸载(ubuntu)
sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvidia*"
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get remove cuda
sudo apt-get remove cuda*
sudo dpkg -l | grep cuda # 这里显示的所有残存都通过下面指令删除
sudo dpkg -P 残留文件
然后,手动删除CUDA的安装目录(通常是/usr/local/cuda-10.1):
sudo rm -rf /usr/local/cuda-10.1
如果之前设置了CUDA的环境变量(如PATH和LD_LIBRARY_PATH),也需要在.bashrc或.profile文件中将其删除或更新。
Ubuntu安装GPU驱动+CUDA+cuDNN的安装方法 - 小白跃升坊 - 博客园
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo service lightdm stop
sudo sh cuda_12.1.0_530.30.02_linux.run
因为上面已经安装了570,所以在黑屏下,不要在选择安装525的驱动了。12.1对应530,按照530来装。
然后添加环境变量。
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
就可以nvcc -V了。
3、安装cuda
重新下载安装cuda。CUDA Toolkit 11.8 Downloads | NVIDIA Developer
CUDA Toolkit Archive | NVIDIA Developer
选择自己对应的系统,然后选择哪种安装方式:在线
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8
离线
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda-repo-ubuntu2004-12-8-local_12.8.1-570.124.06-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2004-12-8-local_12.8.1-570.124.06-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2004-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-toolkit-12-8
以上都没用。
安装一定要在黑屏下操作。
【环境搭建】Python、PyTorch与cuda的版本对应表
torch与cuda对应安装:Previous PyTorch Versions | PyTorch
锁定pytorch2.1.0,python=3.9
3、配置cuDNN库
CUDA Deep Neural Network (cuDNN) | NVIDIA Developer
sudo apt-get -y install cudnn-cuda-12
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
sudo cp cudnn-linux-x86_64-8.9.4.25_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.1/include
sudo cp -P cudnn-linux-x86_64-8.9.4.25_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64/
sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*
cat /usr/local/cuda-12.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
4、创建虚拟环境
conda create -n pcdet python=3.9
conda activate pcdet
5、安装pytorch
# CUDA 12.1
conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia
检验:
python
import torch
torch.cuda.is_available()
6、安装spconv
pip install spconv-cu121
检验
import spconv
7、下载OpenPCDet
git clone https://github.com/open-mmlab/OpenPCDet.git
cd OpenPCDet
pip install -r requirements.txt #安装环境
python setup.py develop #安装pcdet
8、运行
python demo.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml --ckpt ../pointpillar_7728.pth --data_path ../../data/data_object_velodyne/training/velodyne/000006.bin
二、训练
1、下载 KITTI 数据集
从 KITTI 官方网站下载以下数据:
-
点云数据:
data_object_velodyne文件夹,包含.bin格式的点云数据。 -
标注信息:
data_object_label_2文件夹,包含目标的标注信息。 -
校准信息:
data_object_calib文件夹,包含相机和激光雷达的校准参数。 -
图像数据(可选):
data_object_image_2文件夹,包含彩色图像数据。
2、准备数据
2.1 数据格式转换
如果点云数据不是 .bin 格式,需要将其转换为 .bin 格式。例如,如果数据是 .pcd 格式,可以使用以下 Python 脚本进行转换:
import os
import numpy as np
def pcd2bin(pcdfolder, binfolder, start_idx, end_idx):
ori_path = pcdfolder
des_path = binfolder
if not os.path.exists(des_path):
os.makedirs(des_path)
for idx in range(start_idx, end_idx + 1):
filename = f"{idx:06d}"
velodyne_file = os.path.join(ori_path, filename + '.pcd')
if os.path.exists(velodyne_file):
pl = read_pcd(velodyne_file)
pl = pl.reshape(-1, 4).astype(np.float32)
velodyne_file_new = os.path.join(des_path, filename + '.bin')
pl.tofile(velodyne_file_new)
else:
print(f"File not found: {velodyne_file}")
def read_pcd(filepath):
lidar = []
header_passed = False
with open(filepath, 'r') as f:
for line in f:
line = line.strip()
if line.startswith('DATA'):
header_passed = True
continue
if header_passed:
linestr = line.split()
if len(linestr) == 3:
linestr_convert = list(map(float, linestr))

最低0.47元/天 解锁文章
1842

被折叠的 条评论
为什么被折叠?



