当前位置: 首页 > news >正文

PointPillars(一),跑通OpenPCDet中的demo

特别推荐读读这个。 https://blog.csdn.net/m0_37605642/article/details/128987547

PointPillar 3D目标检测模型详解-CSDN博客



参考链接(一)OpenPCDet 详细完整复现(Pointpillars、Pointrcnn、Second)进行训练,并进行评估和推理可视化

ubuntu20.04安装OpenPcdet,(CUDA版本11.8,显卡4090)(CUDA版本12.1,显卡3060)

Ubuntu安装GPU驱动+CUDA+cuDNN的安装方法

九步完成Pointpillars模型训练

一、环境搭建

1、安装Anaconda

Ubuntu安装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的环境变量(如PATHLD_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-12cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2tar -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 npdef pcd2bin(pcdfolder, binfolder, start_idx, end_idx):ori_path = pcdfolderdes_path = binfolderif 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 = Falsewith open(filepath, 'r') as f:for line in f:line = line.strip()if line.startswith('DATA'):header_passed = Truecontinueif header_passed:linestr = line.split()if len(linestr) == 3:linestr_convert = list(map(float, linestr)) + [1.0]elif len(linestr) == 4:linestr_convert = list(map(float, linestr))lidar.append(linestr_convert)return np.array(lidar)if __name__ == "__main__":pcdfolder = "/path/to/pcd/folder"binfolder = "/path/to/bin/folder"start_frame = 1end_frame = 35pcd2bin(pcdfolder, binfolder, start_idx=start_frame, end_idx=end_frame)

2.2 数据集目录结构

确保数据集目录结构如下:

kitti/
├── training/
│   ├── calib/
│   ├── image_2/
│   ├── label_2/
│   ├── velodyne/
├── testing/
│   ├── calib/
│   ├── image_2/
│   ├── velodyne/
├── ImageSets/
│   ├── train.txt
│   ├── val.txt
│   ├── trainval.txt
│   ├── test.txt

我实际的目录是:

.
├── argo2
│   └── ImageSets
├── kitti
│   ├── ImageSets
│   ├── testing
│   │   ├── calib
│   │   └── velodyne
│   └── training
│       ├── calib
│       ├── label_2
│       └── velodyne
├── lyft
│   └── ImageSets
├── once
│   └── ImageSets
└── waymo└── ImageSets

我实际的操作是:

  • data_object_velodyne 下的training和testing分别复制到OpenPCDet下的data/kitti下。
  • 把data_object_label_2 下的training和testing分别复制到OpenPCDet下的data/kitti下。
  • data_object_calib 下的training和testing分别复制到OpenPCDet下的data/kitti下。

2.3 配置训练文件

在 OpenPCDet 的配置文件中,指定 KITTI 数据集的路径和相关参数。例如,修改 tools/cfgs/dataset_configs/kitti_dataset.yaml 文件

DATA_PATH: /path/to/kitti

由于在上述四个kitti数据集中没有添加 ROAD_PLANE 数据集;故而,需要将要训练的yaml文件中的是否选择使用ROAD_PLANE;由True改成False

以kitti数据集为例:
将/OpenPCDet/tools/cfgs/kitti_models/pointpillar.yaml中代码改为

2.4 数据集预处理

对数据集进行处理;生成对应gt_database文件夹中的.bin格式文件和.pkl格式文件指令如下:

python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos ./tools/cfgs/dataset_configs/kitti_dataset.yaml
test sample_idx: 007516
test sample_idx: 007517
Kitti info test file is saved to /home/northlab/Downloads/test/OpenPCDet/data/kitti/kitti_infos_test.pkl
---------------Start create groundtruth database for data augmentation---------------
gt_database sample: 1/3712
gt_database sample: 2/3712......Database Pedestrian: 2207
Database Car: 14357
Database Cyclist: 734
Database Van: 1297
Database Truck: 488
Database Tram: 224
Database Misc: 337
Database Person_sitting: 56
---------------Data preparation Done---------------

3、训练

执行训练指令/OpenPCDet/tools目录下执行

python train.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml
python train.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml 2025-04-25 09:34:54,557   INFO  **********************Start logging**********************
2025-04-25 09:34:54,557   INFO  CUDA_VISIBLE_DEVICES=ALL
2025-04-25 09:34:54,557   INFO  Training with a single process
2025-04-25 09:34:54,557   INFO  cfg_file         ./cfgs/kitti_models/pointpillar.yaml
2025-04-25 09:34:54,557   INFO  batch_size       4
2025-04-25 09:34:54,557   INFO  epochs           80
2025-04-25 09:34:54,557   INFO  workers          4
2025-04-25 09:34:54,557   INFO  extra_tag        default
2025-04-25 09:34:54,557   INFO  ckpt             None
2025-04-25 09:34:54,557   INFO  pretrained_model None
2025-04-25 09:34:54,557   INFO  launcher         none
2025-04-25 09:34:54,557   INFO  tcp_port         18888
2025-04-25 09:34:54,557   INFO  sync_bn          False
2025-04-25 09:34:54,557   INFO  fix_random_seed  False
2025-04-25 09:34:54,557   INFO  ckpt_save_interval 1
2025-04-25 09:34:54,557   INFO  local_rank       None
2025-04-25 09:34:54,557   INFO  max_ckpt_save_num 30
2025-04-25 09:34:54,557   INFO  merge_all_iters_to_one_epoch False
2025-04-25 09:34:54,557   INFO  set_cfgs         None
2025-04-25 09:34:54,557   INFO  max_waiting_mins 0
2025-04-25 09:34:54,557   INFO  start_epoch      0
2025-04-25 09:34:54,557   INFO  num_epochs_to_eval 0
2025-04-25 09:34:54,557   INFO  save_to_file     False
2025-04-25 09:34:54,557   INFO  use_tqdm_to_record False
2025-04-25 09:34:54,557   INFO  logger_iter_interval 50
2025-04-25 09:34:54,557   INFO  ckpt_save_time_interval 300
2025-04-25 09:34:54,557   INFO  wo_gpu_stat      False
2025-04-25 09:34:54,557   INFO  use_amp          False
2025-04-25 09:34:54,557   INFO  cfg.ROOT_DIR: /home/northlab/Downloads/test/OpenPCDet
2025-04-25 09:34:54,557   INFO  cfg.LOCAL_RANK: 0
2025-04-25 09:34:54,557   INFO  cfg.CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
2025-04-25 09:34:54,557   INFO  ----------- DATA_CONFIG -----------
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATASET: KittiDataset
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATA_PATH: ../data/kitti
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [0, -39.68, -3, 69.12, 39.68, 1]
2025-04-25 09:34:54,557   INFO  ----------- DATA_SPLIT -----------
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATA_SPLIT.train: train
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATA_SPLIT.test: val
2025-04-25 09:34:54,557   INFO  ----------- INFO_PATH -----------
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.INFO_PATH.train: ['kitti_infos_train.pkl']
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.INFO_PATH.test: ['kitti_infos_val.pkl']
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.GET_ITEM_LIST: ['points']
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.FOV_POINTS_ONLY: True
2025-04-25 09:34:54,557   INFO  ----------- DATA_AUGMENTOR -----------
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['placeholder']
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'NAME': 'gt_sampling', 'USE_ROAD_PLANE': False, 'DB_INFO_PATH': ['kitti_dbinfos_train.pkl'], 'PREPARE': {'filter_by_min_points': ['Car:5', 'Pedestrian:5', 'Cyclist:5'], 'filter_by_difficulty': [-1]}, 'SAMPLE_GROUPS': ['Car:15', 'Pedestrian:15', 'Cyclist:15'], 'NUM_POINT_FEATURES': 4, 'DATABASE_WITH_FAKELIDAR': False, 'REMOVE_EXTRA_WIDTH': [0.0, 0.0, 0.0], 'LIMIT_WHOLE_SCENE': False}, {'NAME': 'random_world_flip', 'ALONG_AXIS_LIST': ['x']}, {'NAME': 'random_world_rotation', 'WORLD_ROT_ANGLE': [-0.78539816, 0.78539816]}, {'NAME': 'random_world_scaling', 'WORLD_SCALE_RANGE': [0.95, 1.05]}]
2025-04-25 09:34:54,557   INFO  ----------- POINT_FEATURE_ENCODING -----------
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z', 'intensity']
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity']
2025-04-25 09:34:54,557   INFO  cfg.DATA_CONFIG.DATA_PROCESSOR: [{'NAME': 'mask_points_and_boxes_outside_range', 'REMOVE_OUTSIDE_BOXES': True}, {'NAME': 'shuffle_points', 'SHUFFLE_ENABLED': {'train': True, 'test': False}}, {'NAME': 'transform_points_to_voxels', 'VOXEL_SIZE': [0.16, 0.16, 4], 'MAX_POINTS_PER_VOXEL': 32, 'MAX_NUMBER_OF_VOXELS': {'train': 16000, 'test': 40000}}]
2025-04-25 09:34:54,558   INFO  cfg.DATA_CONFIG._BASE_CONFIG_: cfgs/dataset_configs/kitti_dataset.yaml
2025-04-25 09:34:54,558   INFO  ----------- MODEL -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.NAME: PointPillar
2025-04-25 09:34:54,558   INFO  ----------- VFE -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.VFE.NAME: PillarVFE
2025-04-25 09:34:54,558   INFO  cfg.MODEL.VFE.WITH_DISTANCE: False
2025-04-25 09:34:54,558   INFO  cfg.MODEL.VFE.USE_ABSLOTE_XYZ: True
2025-04-25 09:34:54,558   INFO  cfg.MODEL.VFE.USE_NORM: True
2025-04-25 09:34:54,558   INFO  cfg.MODEL.VFE.NUM_FILTERS: [64]
2025-04-25 09:34:54,558   INFO  ----------- MAP_TO_BEV -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.MAP_TO_BEV.NAME: PointPillarScatter
2025-04-25 09:34:54,558   INFO  cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 64
2025-04-25 09:34:54,558   INFO  ----------- BACKBONE_2D -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.BACKBONE_2D.NAME: BaseBEVBackbone
2025-04-25 09:34:54,558   INFO  cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [3, 5, 5]
2025-04-25 09:34:54,558   INFO  cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [2, 2, 2]
2025-04-25 09:34:54,558   INFO  cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [64, 128, 256]
2025-04-25 09:34:54,558   INFO  cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2, 4]
2025-04-25 09:34:54,558   INFO  cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [128, 128, 128]
2025-04-25 09:34:54,558   INFO  ----------- DENSE_HEAD -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.ANCHOR_GENERATOR_CONFIG: [{'class_name': 'Car', 'anchor_sizes': [[3.9, 1.6, 1.56]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [-1.78], 'align_center': False, 'feature_map_stride': 2, 'matched_threshold': 0.6, 'unmatched_threshold': 0.45}, {'class_name': 'Pedestrian', 'anchor_sizes': [[0.8, 0.6, 1.73]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [-0.6], 'align_center': False, 'feature_map_stride': 2, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}, {'class_name': 'Cyclist', 'anchor_sizes': [[1.76, 0.6, 1.73]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [-0.6], 'align_center': False, 'feature_map_stride': 2, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}]
2025-04-25 09:34:54,558   INFO  ----------- TARGET_ASSIGNER_CONFIG -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder
2025-04-25 09:34:54,558   INFO  ----------- LOSS_CONFIG -----------
2025-04-25 09:34:54,558   INFO  ----------- LOSS_WEIGHTS -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2
2025-04-25 09:34:54,558   INFO  cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2025-04-25 09:34:54,558   INFO  ----------- POST_PROCESSING -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.1
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti
2025-04-25 09:34:54,558   INFO  ----------- NMS_CONFIG -----------
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.01
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096
2025-04-25 09:34:54,558   INFO  cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500
2025-04-25 09:34:54,558   INFO  ----------- OPTIMIZATION -----------
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 4
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.NUM_EPOCHS: 80
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.LR: 0.003
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.MOMENTUM: 0.9
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.MOMS: [0.95, 0.85]
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.PCT_START: 0.4
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.DIV_FACTOR: 10
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45]
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.LR_DECAY: 0.1
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.LR_CLIP: 1e-07
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.LR_WARMUP: False
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.WARMUP_EPOCH: 1
2025-04-25 09:34:54,558   INFO  cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10
2025-04-25 09:34:54,558   INFO  cfg.TAG: pointpillar
2025-04-25 09:34:54,558   INFO  cfg.EXP_GROUP_PATH: cfgs/kitti_models
2025-04-25 09:34:54,561   INFO  ----------- Create dataloader & network & optimizer -----------
2025-04-25 09:34:54,625   INFO  Database filter by min points Car: 14357 => 13532
2025-04-25 09:34:54,625   INFO  Database filter by min points Pedestrian: 2207 => 2168
2025-04-25 09:34:54,625   INFO  Database filter by min points Cyclist: 734 => 705
2025-04-25 09:34:54,635   INFO  Database filter by difficulty Car: 13532 => 10759
2025-04-25 09:34:54,637   INFO  Database filter by difficulty Pedestrian: 2168 => 2075
2025-04-25 09:34:54,637   INFO  Database filter by difficulty Cyclist: 705 => 581
2025-04-25 09:34:54,640   INFO  Loading KITTI dataset
2025-04-25 09:34:54,696   INFO  Total samples for KITTI dataset: 3712
/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /opt/conda/conda-bld/pytorch_1695392035629/work/aten/src/ATen/native/TensorShape.cpp:3526.)return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
2025-04-25 09:34:54,862   INFO  ----------- Model PointPillar created, param count: 4834888 -----------
2025-04-25 09:34:54,863   INFO  PointPillar((vfe): PillarVFE((pfn_layers): ModuleList((0): PFNLayer((linear): Linear(in_features=10, out_features=64, bias=False)(norm): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True))))(backbone_3d): None(map_to_bev_module): PointPillarScatter()(pfe): None(backbone_2d): BaseBEVBackbone((blocks): ModuleList((0): Sequential((0): ZeroPad2d((1, 1, 1, 1))(1): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), bias=False)(2): BatchNorm2d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(3): ReLU()(4): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(5): BatchNorm2d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(6): ReLU()(7): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(8): BatchNorm2d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(9): ReLU()(10): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(11): BatchNorm2d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(12): ReLU())(1): Sequential((0): ZeroPad2d((1, 1, 1, 1))(1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), bias=False)(2): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(3): ReLU()(4): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(5): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(6): ReLU()(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(8): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(9): ReLU()(10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(11): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(12): ReLU()(13): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(14): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(15): ReLU()(16): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(17): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(18): ReLU())(2): Sequential((0): ZeroPad2d((1, 1, 1, 1))(1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)(2): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(3): ReLU()(4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(5): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(6): ReLU()(7): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(8): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(9): ReLU()(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(11): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(12): ReLU()(13): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(14): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(15): ReLU()(16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(17): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(18): ReLU()))(deblocks): ModuleList((0): Sequential((0): ConvTranspose2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(2): ReLU())(1): Sequential((0): ConvTranspose2d(128, 128, kernel_size=(2, 2), stride=(2, 2), bias=False)(1): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(2): ReLU())(2): Sequential((0): ConvTranspose2d(256, 128, kernel_size=(4, 4), stride=(4, 4), bias=False)(1): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)(2): ReLU())))(dense_head): AnchorHeadSingle((cls_loss_func): SigmoidFocalClassificationLoss()(reg_loss_func): WeightedSmoothL1Loss()(dir_loss_func): WeightedCrossEntropyLoss()(conv_cls): Conv2d(384, 18, kernel_size=(1, 1), stride=(1, 1))(conv_box): Conv2d(384, 42, kernel_size=(1, 1), stride=(1, 1))(conv_dir_cls): Conv2d(384, 12, kernel_size=(1, 1), stride=(1, 1)))(point_head): None(roi_head): None
)
2025-04-25 09:34:54,863   INFO  **********************Start training cfgs/kitti_models/pointpillar(default)**********************
epochs:   0%|                                                                                                        | 0/80 [00:00<?, ?it/s2025-04-25 09:34:57,317   INFO  Train:    1/80 (  1%) [   0/928 (  0%)]  Loss: 3.386 (3.39)  LR: 3.000e-04  Time cost: 00:02/34:54 [00:02/46:32:02]  Acc_iter 1           Data time: 0.96(0.96)  Forward time: 1.30(1.30)  Batch time: 2.26(2.26)
2025-04-25 09:35:10,943   INFO  Train:    1/80 (  1%) [  49/928 (  5%)]  Loss: 1.838 (2.14)  LR: 3.000e-04  Time cost: 00:15/04:39 [00:16/6:32:45]  Acc_iter 50          Data time: 0.02(0.03)  Forward time: 0.31(0.28)  Batch time: 0.33(0.32)
2025-04-25 09:35:25,516   INFO  Train:    1/80 (  1%) [  99/928 ( 11%)]  Loss: 1.653 (1.93)  LR: 3.001e-04  Time cost: 00:30/04:12 [00:30/6:16:20]  Acc_iter 100         Data time: 0.02(0.03)  Forward time: 0.28(0.28)  Batch time: 0.30(0.30)
Fri Apr 25 09:42:04 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.05              Driver Version: 560.35.05      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| 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 RTX 4060 Ti     Off |   00000000:01:00.0  On |                  N/A |
| 33%   53C    P0             87W /  160W |    5971MiB /   8188MiB |     92%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      1228      G   /usr/lib/xorg/Xorg                             95MiB |
|    0   N/A  N/A     11991      G   /usr/bin/gnome-shell                           41MiB |
|    0   N/A  N/A    551092    C+G   /opt/todesk/bin/ToDesk_Session                223MiB |
|    0   N/A  N/A    572376      C   python                                       5576MiB |
+-----------------------------------------------------------------------------------------+

 训练结束:用一张4060TI 8G显卡,通过 5个半小时 完成了训练。单卡训练kitti数据。

2025-04-25 15:07:02,213   INFO  Train:   80/80 (100%) [ 687/928 ( 74%)]  Loss: 0.2662 (0.287)  LR: 2.467e-07  Time cost: 03:08/01:05 [5:32:07/01:05]  Acc_iter 74000       Data time: 0.01(0.02)  Forward time: 0.24(0.26)  Batch time: 0.25(0.27)
2025-04-25 15:07:15,216   INFO  Train:   80/80 (100%) [ 737/928 ( 79%)]  Loss: 0.3089 (0.287)  LR: 1.661e-07  Time cost: 03:21/00:52 [5:32:20/00:52]  Acc_iter 74050       Data time: 0.01(0.02)  Forward time: 0.30(0.26)  Batch time: 0.31(0.27)
2025-04-25 15:07:28,005   INFO  Train:   80/80 (100%) [ 787/928 ( 85%)]  Loss: 0.1848 (0.286)  LR: 1.042e-07  Time cost: 03:33/00:38 [5:32:33/00:38]  Acc_iter 74100       Data time: 0.01(0.02)  Forward time: 0.22(0.26)  Batch time: 0.23(0.27)
/bin/sh: 1: gpustat: not found
2025-04-25 15:07:28,035   INFO  
2025-04-25 15:07:41,415   INFO  Train:   80/80 (100%) [ 837/928 ( 90%)]  Loss: 0.2778 (0.286)  LR: 6.089e-08  Time cost: 03:47/00:24 [5:32:46/00:24]  Acc_iter 74150       Data time: 0.01(0.02)  Forward time: 0.22(0.26)  Batch time: 0.24(0.27)
2025-04-25 15:07:54,417   INFO  Train:   80/80 (100%) [ 887/928 ( 96%)]  Loss: 0.3030 (0.286)  LR: 3.627e-08  Time cost: 04:00/00:11 [5:32:59/00:11]  Acc_iter 74200       Data time: 0.02(0.02)  Forward time: 0.28(0.26)  Batch time: 0.29(0.27)
2025-04-25 15:08:04,368   INFO  Train:   80/80 (100%) [ 927/928 (100%)]  Loss: 0.3080 (0.286)  LR: 3.000e-08  Time cost: 04:10/00:00 [5:33:09/00:00]  Acc_iter 74240       Data time: 0.02(0.02)  Forward time: 0.19(0.25)  Batch time: 0.21(0.27)
train:   0%|                                                                                                                                                                       | 0/928 [04:10<?, ?it/s]
epochs: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 80/80 [5:33:09<00:00, 249.87s/it]
2025-04-25 15:08:04,458   INFO  **********************End training cfgs/kitti_models/pointpillar(default)**********************2025-04-25 15:08:04,458   INFO  **********************Start evaluation cfgs/kitti_models/pointpillar(default)**********************
2025-04-25 15:08:04,459   INFO  Loading KITTI dataset
2025-04-25 15:08:04,521   INFO  Total samples for KITTI dataset: 3769
2025-04-25 15:08:04,523   INFO  ==> Loading parameters from checkpoint /home/northlab/Downloads/test/OpenPCDet/output/cfgs/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth to GPU
2025-04-25 15:08:04,545   INFO  ==> Checkpoint trained from version: pcdet+0.6.0+0000000
2025-04-25 15:08:04,547   INFO  ==> Done (loaded 127/127)
2025-04-25 15:08:04,548   INFO  *************** EPOCH 80 EVALUATION *****************
eval:   0%|                                                                                                                                                                        | 0/943 [00:00<?, ?it/s]/home/northlab/Downloads/test/OpenPCDet/tools/../pcdet/ops/iou3d_nms/iou3d_nms_utils.py:66: UserWarning: The torch.cuda.*DtypeTensor constructors are no longer recommended. It's best to use methods such as torch.tensor(data, dtype=*, device='cuda') to create tensors. (Triggered internally at /opt/conda/conda-bld/pytorch_1695392035629/work/torch/csrc/tensor/python_tensor.cpp:83.)overlaps_bev = torch.cuda.FloatTensor(torch.Size((boxes_a.shape[0], boxes_b.shape[0]))).zero_()  # (N, M)
eval: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 943/943 [02:13<00:00,  7.07it/s, recall_0.3=(0, 16352) / 17558]
2025-04-25 15:10:17,959   INFO  *************** Performance of EPOCH 80 *****************
2025-04-25 15:10:17,959   INFO  Generate label finished(sec_per_example: 0.0354 second).
2025-04-25 15:10:17,959   INFO  recall_roi_0.3: 0.000000
2025-04-25 15:10:17,960   INFO  recall_rcnn_0.3: 0.931313
2025-04-25 15:10:17,960   INFO  recall_roi_0.5: 0.000000
2025-04-25 15:10:17,960   INFO  recall_rcnn_0.5: 0.862684
2025-04-25 15:10:17,960   INFO  recall_roi_0.7: 0.000000
2025-04-25 15:10:17,960   INFO  recall_rcnn_0.7: 0.618351
2025-04-25 15:10:17,961   INFO  Average predicted number of objects(3769 samples): 18.109
Traceback (most recent call last):
2025-04-25 15:10:17,961   INFO  Average predicted number of objects(3769 samples): 18.109
Traceback (most recent call last):File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/cudadrv/nvvm.py", line 139, in __new__inst.driver = open_cudalib('nvvm')File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/cudadrv/libs.py", line 65, in open_cudalibreturn ctypes.CDLL(path)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/ctypes/__init__.py", line 382, in __init__self._handle = _dlopen(self._name, mode)
OSError: libnvvm.so: cannot open shared object file: No such file or directoryDuring handling of the above exception, another exception occurred:Traceback (most recent call last):File "/home/northlab/Downloads/test/OpenPCDet/tools/train.py", line 233, in <module>main()File "/home/northlab/Downloads/test/OpenPCDet/tools/train.py", line 223, in mainrepeat_eval_ckpt(File "/home/northlab/Downloads/test/OpenPCDet/tools/test.py", line 123, in repeat_eval_ckpttb_dict = eval_utils.eval_one_epoch(File "/home/northlab/Downloads/test/OpenPCDet/tools/eval_utils/eval_utils.py", line 125, in eval_one_epochresult_str, result_dict = dataset.evaluation(File "/home/northlab/Downloads/test/OpenPCDet/tools/../pcdet/datasets/kitti/kitti_dataset.py", line 357, in evaluationfrom .kitti_object_eval_python import eval as kitti_evalFile "/home/northlab/Downloads/test/OpenPCDet/tools/../pcdet/datasets/kitti/kitti_object_eval_python/eval.py", line 6, in <module>from .rotate_iou import rotate_iou_gpu_evalFile "/home/northlab/Downloads/test/OpenPCDet/tools/../pcdet/datasets/kitti/kitti_object_eval_python/rotate_iou.py", line 18, in <module>def trangle_area(a, b, c):File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/decorators.py", line 131, in _jitdisp.compile_device(argtypes, restype)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/dispatcher.py", line 883, in compile_devicecres = compile_cuda(self.py_func, return_type, args,File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lockreturn func(*args, **kwargs)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/compiler.py", line 196, in compile_cudacres = compiler.compile_extra(typingctx=typingctx,File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler.py", line 744, in compile_extrareturn pipeline.compile_extra(func)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler.py", line 438, in compile_extrareturn self._compile_bytecode()File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler.py", line 506, in _compile_bytecodereturn self._compile_core()File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler.py", line 481, in _compile_coreraise eFile "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler.py", line 472, in _compile_corepm.run(self.state)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 364, in runraise eFile "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 356, in runself._runPass(idx, pass_inst, state)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler_lock.py", line 35, in _acquire_compile_lockreturn func(*args, **kwargs)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 311, in _runPassmutated |= check(pss.run_pass, internal_state)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/compiler_machinery.py", line 273, in checkmangled = func(compiler_state)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/typed_passes.py", line 466, in run_passlower = self.lowering_class(targetctx, library, fndesc, interp,File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/lowering.py", line 39, in __init__self.module = self.library.create_ir_module(self.fndesc.unique_name)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/core/codegen.py", line 574, in create_ir_moduleir_module = self._codegen._create_empty_module(name)File "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/codegen.py", line 365, in _create_empty_moduleir_module.data_layout = nvvm.NVVM().data_layoutFile "/home/northlab/.conda/envs/pcdet/lib/python3.9/site-packages/numba/cuda/cudadrv/nvvm.py", line 144, in __new__raise NvvmSupportError(errmsg % e)
numba.cuda.cudadrv.error.NvvmSupportError: libNVVM cannot be found. Do `conda install cudatoolkit`:
libnvvm.so: cannot open shared object file: No such file or directory

环境变量设置有问题:

echo $PATH

 查看环境变量时,出现两个cuda版本。删除不用的那个版本,然后编辑~/.bashrc,删除不用的路径。

安装:

conda install cudatoolkit
2025-04-27 09:33:06,963   INFO  Car AP@0.70, 0.70, 0.70:
bbox AP:90.6418, 89.2522, 87.9356
bev  AP:89.9796, 87.2635, 83.7364
3d   AP:85.5829, 76.5766, 72.4278
aos  AP:90.62, 89.03, 87.57
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.2599, 91.6314, 88.9747
bev  AP:92.2387, 88.1922, 85.5264
3d   AP:87.1086, 76.2278, 73.2124
aos  AP:95.23, 91.39, 88.60
Car AP@0.70, 0.50, 0.50:
bbox AP:90.6418, 89.2522, 87.9356
bev  AP:90.7472, 89.9649, 89.2076
3d   AP:90.7438, 89.8806, 89.0023
aos  AP:90.62, 89.03, 87.57
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:95.2599, 91.6314, 88.9747
bev  AP:95.4996, 94.4433, 93.4814
3d   AP:95.4659, 94.0998, 91.6416
aos  AP:95.23, 91.39, 88.60
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:65.9998, 61.3019, 58.2591
bev  AP:57.2505, 52.2800, 48.3284
3d   AP:50.2389, 44.4176, 40.1442
aos  AP:51.92, 47.95, 45.42
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:66.1529, 60.8869, 57.9689
bev  AP:57.0789, 50.8879, 46.6875
3d   AP:49.5027, 42.8520, 38.4644
aos  AP:50.26, 45.55, 43.03
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:65.9998, 61.3019, 58.2591
bev  AP:71.6627, 67.2751, 64.8829
3d   AP:71.4750, 67.0294, 64.6982
aos  AP:51.92, 47.95, 45.42
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:66.1529, 60.8869, 57.9689
bev  AP:72.6106, 68.0727, 64.8807
3d   AP:72.4042, 67.5711, 64.5940
aos  AP:50.26, 45.55, 43.03
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:85.0482, 73.6622, 69.8498
bev  AP:82.5451, 64.8697, 62.0130
3d   AP:80.9018, 62.7737, 58.6206
aos  AP:84.06, 71.26, 67.32
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:87.0750, 74.7558, 70.4033
bev  AP:83.1838, 65.7656, 61.5345
3d   AP:82.0442, 62.8353, 58.6378
aos  AP:86.00, 72.07, 67.66
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:85.0482, 73.6622, 69.8498
bev  AP:85.3858, 72.5705, 68.9060
3d   AP:85.3858, 72.2795, 68.8692
aos  AP:84.06, 71.26, 67.32
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:87.0750, 74.7558, 70.4033
bev  AP:88.6372, 73.5900, 69.6997
3d   AP:88.6309, 73.4494, 69.6359
aos  AP:86.00, 72.07, 67.662025-04-27 09:33:06,968   INFO  Result is saved to /home/northlab/Downloads/test/OpenPCDet/output/cfgs/kitti_models/pointpillar/default/eval/eval_with_train/epoch_80/val
2025-04-27 09:33:06,968   INFO  ****************Evaluation done.*****************
2025-04-27 09:33:06,984   INFO  Epoch 80 has been evaluated
Wait 30 seconds for next check (progress: 0.0 / 0 minutes): /home/northlab/Downl2025-04-27 09:33:37,013   INFO  **********************End evaluation cfgs/kitti_models/pointpillar(default)**********************

4、test测试 

python test.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml --batch_size 4 --ckpt ../output/cfgs/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth

 5、Demo可视化

python demo.py --cfg_file ~/Downloads/test/OpenPCDet/tools/cfgs/kitti_models/pointpillar.yaml --ckpt ~/Downloads/test/OpenPCDet/output/cfgs/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth --data_path ~/Downloads/test/OpenPCDet/data/kitti/testing/velodyne/000010.bin

三、工程实施

工程(三)——多激光雷达标定、融合、聚类

1、把当前跑通的conda环境复制出来。

conda activate pcdet
conda env export > environment.yml
​# 将这个yml文件拷贝到新的Anaconda环境中。然后基于这个文件,创建新的conda环境。
conda env create -f environment.yml
conda activate pcdet
conda list
conda env list

或者手动复制~/anaconda3/envs/myenv(Linux/Mac)

2、如何训练自己的训练集

3D目标检测(4):OpenPCDet训练篇--自定义数据集(二十五)实践出真知——OpenPCDet 制作pointpillars自定义数据集 - 梦里寻梦的文章 - 知乎

自动驾驶系统进阶与项目实战(十)基于PointPillars的点云三维目标检测和TensorRT实战(1)_tensorrt pointpillars-CSDN博客

3、只有激光雷达坐标系如何变换。

kitti这个标注,它是以相机2坐标系为基准的。

4、如何训练。

5、如何连续检测。

6、检测结果如何通过ros2的topic形式发送出去。

7、显示问题。如何把检测框体,通过汽车模型的方式替换掉。

8、如何筛选可行驶区域。

9、如何渲染整个环境。

10、地面问题处理。

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型) - 哔哩哔哩

相关文章:

  • C语言 之 【栈的简介、栈的实现(初始化、销毁、入栈、出栈、判空、栈的大小、访问栈顶元素、打印)】
  • 【多线程】六、基于阻塞队列的生产者消费者模型
  • AI赋能新媒体运营:效率提升与能力突破实战指南
  • 【云盘】使用阿里云盘托管项目大文件
  • Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]
  • 【Linux系统】线程
  • LOJ #193 线段树历史和 Solution
  • 腾讯云服务器:bgp服务器搭建要怎么做?bgp服务器的应用有哪些?
  • 初始化列表详解
  • GPT-4o 图像生成与八个示例指南
  • 算法技巧——打表
  • 数字智慧方案5860丨智慧机场整体解决方案(41页PPT)(文末有下载方式)
  • Java大师成长计划之第10天:锁与原子操作
  • PINNs案例——多介质分区温度场
  • Nacos使用
  • DeepSeek实战--Function Calling
  • [官方 IP] Utility Flip-Flop
  • 不小心误删了文件,找Windows数据恢复工具来帮忙
  • 泰迪杯特等奖案例学习资料:基于CLIP模型微调与知识蒸馏的多模态图文检索系统设计
  • Linux-常用监控工具
  • 三亚回应“买水果9斤变6斤”:反映属实,拟对流动摊贩罚款5万元
  • 青海大学常务副校长(正厅级)任延明已任省卫健委党组书记
  • 徐丹任武汉大学药学院院长:研究领域在国际上处领跑地位
  • 巴菲特执掌60年,伯克希尔市值如何增长5.5万倍?详解五大经典投资案例
  • 港股5月迎开门红,恒生科指涨3%,欧股开盘全线上扬
  • 五一假期首日,多地党政主官暗访督查节日安全和值班值守工作