基于容器训练OpenPCdet

2023-05-16

基于容器训练OpenPCdet

1.先拉取一个运行的镜像

docker pull djiajun1206/pcdet:pytorch1.6

2.基于镜像创建一个容器

nvidia-docker run -it --name pcdet --privileged --shm-size=15G -v
 /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix
 -e DISPLAY=unix\$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE 
-v /home/user/data/:/data b478940ec7f6 /bin/bash

3.拉取git代码编译安装

git clone https://github.com/open-mmlab/OpenPCDet.git

进入主目录,运行setup.py,编译指令如下:

cd OpenPCDet 
python setup.py develop

4.创建训练数据

在容器中进入OpenPCDet目录,在data子目录创建自己的数据集,点云应当是 .npy格式,标签应当是 .txt格式。标签内容如下:中心点,长宽高,航向角,类别名称

1.50 1.46 0.10 5.12 1.85 4.13 1.56 Vehicle
5.54 0.57 0.41 1.08 0.74 1.95 1.57 Pedestrian

数据放置位置如下,ImageSets目录放置训练和测试拆分文件

OpenPCDet
├── data
│   ├── custom
│   │   │── ImageSets
│   │   │   │── train.txt
│   │   │   │── val.txt
│   │   │── points
│   │   │   │── 000000.npy
│   │   │   │── 999999.npy
│   │   │── labels
│   │   │   │── 000000.txt
│   │   │   │── 999999.txt
├── pcdet
├── tools

5.配置训练参数

(1)修改tools/cfgs/dataset_configs/custom_dataset.yaml

主要修改点云范围,检测类别(如果你的训练集类别是['Vehicle', 'Pedestrian', 'Cyclist']就不用修改),训练数据名称,体素大小

DATASET: 'CustomDataset'
DATA_PATH: '../data/custom'

POINT_CLOUD_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4]

MAP_CLASS_TO_KITTI: {
    'Vehicle': 'Car',
    'Pedestrian': 'Pedestrian',
    'Cyclist': 'Cyclist',
}

DATA_SPLIT: {
    'train': train,
    'test': val
}

INFO_PATH: {
    'train': [custom_infos_train.pkl],
    'test': [custom_infos_val.pkl],
}

POINT_FEATURE_ENCODING: {
    encoding_type: absolute_coordinates_encoding,
    used_feature_list: ['x', 'y', 'z', 'intensity'],
    src_feature_list: ['x', 'y', 'z', 'intensity'],
}

DATA_AUGMENTOR:
    DISABLE_AUG_LIST: ['placeholder']
    AUG_CONFIG_LIST:
        - NAME: gt_sampling
          USE_ROAD_PLANE: False
          DB_INFO_PATH:
              - custom_dbinfos_train.pkl
          PREPARE: {
             filter_by_min_points: ['Vehicle:5', 'Pedestrian:5', 'Cyclist:5'],
          }

          SAMPLE_GROUPS: ['Vehicle:20', 'Pedestrian:15', 'Cyclist:15']
          NUM_POINT_FEATURES: 4
          DATABASE_WITH_FAKELIDAR: False
          REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0]
          LIMIT_WHOLE_SCENE: True

        - NAME: random_world_flip
          ALONG_AXIS_LIST: ['x', 'y']

        - NAME: random_world_rotation
          WORLD_ROT_ANGLE: [-0.78539816, 0.78539816]

        - NAME: random_world_scaling
          WORLD_SCALE_RANGE: [0.95, 1.05]

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.1, 0.1, 0.15]
      MAX_POINTS_PER_VOXEL: 5
      MAX_NUMBER_OF_VOXELS: {
        'train': 150000,
        'test': 150000
      }

(2)检测类别,在pcdet/datasets/custom.custom_dataset.py中也要做相应修改

create_custom_infos(
    dataset_cfg=dataset_cfg,
    class_names=['Vehicle', 'Pedestrian', 'Cyclist'],
    data_path=ROOT_DIR / 'data' / 'custom',
    save_path=ROOT_DIR / 'data' / 'custom',
)

6.创建训练数据集

自定义数据集制作如下

python -m pcdet.datasets.custom.custom_dataset create_custom_infos tools/cfgs/dataset_configs/custom_dataset.yaml

如想使用KITT公开集,可以去官网下载数据,或者网上有网盘地址,下载后创建以下目录,将数据解压到相应目录下:

root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/calib 
root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/velodyne 
root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/label_2 
root@04f4d304ce39:/data# mkdir OpenPCDet/data/kitti/training/image_2 

#解压 unzip velodyne_training_1.zip -d OpenPCDet/data/kitti/training/velodyne/ ....

制作数据集

python -m pcdet.datasets.kitti.kitti_dataset 
create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml

7.开始训练

#CUDA_VISIBLE_DEVICES=0 python train.py --cfg_file ${CONFIG_FILE} 
CUDA_VISIBLE_DEVICES=1 python train.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml

如果稀疏卷积库报错则重装spconv

git clone -b v1.2.1 https://github.com/djiajunustc/spconv spconv --recursive 
cd spconv 
python setup.py bdist_wheel 
cd ./dist 
pip install *.whl

开始训练

2022-12-08 09:36:45,180   INFO  **********************
Start training cfgs/kitti_models/pointpillar
(default)**********************
epochs:   0%|                                                                                                                                           | 0/80 [00:00<?, ?it/s2022-12-08 09:36:49,308   
INFO  epoch: 0/80, acc_iter=1, cur_iter=0/928, batch_size=4, time_cost(epoch): 00:03/49:01, time_cost(all): 00:04/65:22:11, loss=3.2621874809265137, d_time=1.18(1.18), f_time=1.99(1.99), b_time=3.17(3.17), lr=0.0002999999999999999
2022-12-08 09:37:13,825   
INFO  epoch: 0/80, acc_iter=50, cur_iter=49/928, batch_size=4, time_cost(epoch): 00:27/08:06, time_cost(all): 00:28/11:24:42, loss=1.8049968481063843, d_time=0.00(0.03), f_time=0.38(0.53), b_time=0.38(0.55), lr=0.00030001813839255174

8,可视化测试

python demo.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml --data_path kitti/testing/velodyne/ --ckpt pointpillar/default/ckpt/checkpoint_epoch_80.pth

问题1:

root@04f4d304ce39:/data/wyf/OpenPCDet# pip install torch==1.9 https://pypi.tuna.tsinghua.edu.cn/simple Collecting https://pypi.tuna.tsinghua.edu.cn/simple Downloading https://pypi.tuna.tsinghua.edu.cn/simple (24.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.7/24.7 MB 52.7 kB/s eta 0:00:00 

ERROR: Cannot unpack file /tmp/pip-unpack-cp2uotjr/simple.html 
(downloaded from /tmp/pip-req-build-b3e8cmaa, content-type: text/html);
 cannot detect archive format ERROR: Cannot determine archive format 
of /tmp/pip-req-build-b3e8cmaa 
root@04f4d304ce39:/data/wyf/OpenPCDet
root@04f4d304ce39:/data/wyf/OpenPCDet

# 解决方法:

pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com torch==1.9

问题2:

File "../pcdet/datasets/augmentor/database_sampler.py", line 498, in call

data_dict, sampled_gt_boxes, total_valid_sampled_dict, sampled_mv_height, sampled_gt_boxes2d

File "../pcdet/datasets/augmentor/database_sampler.py", line 372, in add_sampled_boxes_to_scene

sampled_gt_boxes, data_dict['road_plane'], data_dict['calib']

KeyError: 'road_plane'

将配置文件中数据增强部分的 USE_ROAD_PLANE 设置为 False

 DATA_AUGMENTOR:
        DISABLE_AUG_LIST: ['placeholder']
        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],
              }

问题3:

nvcc fatal : Unsupported gpu architecture 'compute_80' 是显卡算力与pytorch版本不匹配,升级pytorch

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于容器训练OpenPCdet 的相关文章

  • 软件设计原则:迪米特法则

    一 定义 迪米特法则 xff1a 要求一个对象应该对其他对象有最少的了解 xff0c 所以又叫做最少知识原则 二 法则内容 xff1a 1 不该有直接依赖关系的类之间 xff0c 不要有依赖 xff1a 即 xff0c 不和陌生人说话 xf
  • ElasticSearch最佳入门实践(六十二)type底层数据结构

    type xff0c 是一个index中用来区分类似的数据的 xff0c 类似的数据 xff0c 但是可能有不同的fields xff0c 而且有不同的属性来控制索引建立 分词器 field的value xff0c 在底层的lucene中建
  • 四轴的组成及参数评定

    电气工程及其自动化专业 xff0c 坐标广东湛江 xff0c 大一时期对专业上很感兴趣 xff0c 自学了许多东西 xff0c 但是只是停留在理论基础上而缺乏实践 xff0c 和学校在这方面的普及有点关系吧 xff0c 趁着国家有这方面的支
  • sudo rosdep init报错的解决方式

    Ubuntu16 04下安装ROS时 xff0c 执行到sudo rosdep init这一步时会遇到问题 xff0c 如下图所示 xff1a 尝试了很多办法 xff0c 都没有成功的 后来参考了https www ioiox com ar
  • VS版本和VC版本的对应【完整版】

    看到网上杂七杂八 xff0c 很乱 xff0c 索性自己发帖多版本开发福音 xff08 该帖不更新了 xff0c 请看参考里连接中的官方文档 xff0c 非常清楚 xff0c 还保持最新 xff09 MSC 1 0 MSC VER 61 6
  • 搭建运行激光slam环境中遇到的问题

    1 先是踩了一些坑 xff0c 重复安装了一些库 xff0c 因为ros noetic里面就自带了一些库 xff0c 所以安装的时候重复安装了 解决方法 xff1a 删掉重装 另外缺少一些库 xff0c 乱装一顿 xff0c 居然凑齐 Ub
  • mac上用VSCode搭建 c++ 工程,用于学习Opengl

    先下载VSCode安装c c 43 43 插件 xff0c 安装微软这个 创建一个文件夹作为项目 xff0c 然后用VSCode打开这个目录在这个文件夹中创建好四个目录 xff0c 分别是src xff0c lib include bin
  • 刷赞与评论

    网站自动刷帖 xff0c 刷赞 xff0c 刷评论等网络推广方式的基本实现 里面的思路有东西
  • 系统复制-快速重装系统

    ubuntu 直接把安装好常用软件和环境的系统打包成镜像 xff0c 用systemback安装 xff0c 便捷很多 之前那种 xff0c ubuntu安装都要好久 xff0c 少说也得20分钟吧 xff0c 之前就是等 xff0c 等它
  • 机器人 控制领域

    机器人 控制领域好像没太有很新很有用的工作 xff0c 还是依据Dynamic Model的Motion Planning更接近于任务层 其实 xff0c 感觉自己喜欢的不是控制 而是motion xff0c motion control
  • 树莓派电压过低 串口数据错误增多

    调试过程中 xff0c 树莓派串口读单片机上传的数据 的程序突然一堆checksum error 换一块满电的LiPo电池就大幅减少了报错 一开始猜测原因 可能是电压过低导致CPU运行慢了 xff08 可能叫做 降频 xff09 xff0c
  • 机器人知识体系

    纲 机电力算控感 知识体系体系各元素特点体系的建立和完善 机电力算控感 知识体系 机械 电子电气 力学 xff08 静力学与动力学分析 流体力学 材料力学等 xff09 计算 xff08 通用计算机和嵌入式计算机 xff09 控制理论 感知
  • OpenCV之imwrite()等基本操作

    参考 xff1a Opencv之imwrite 函数的用处 imwrite 函数用来保存图片 opencv3中的imwrite函数是用来输出图像到文件 xff0c 其声明如下 xff1a CV EXPORTS W bool imwrite
  • 麦克纳姆轮全向移动原理

    什么是麦克纳姆轮 在竞赛机器人和特殊工种机器人中 xff0c 全向移动经常是一个必需的功能 全向移动 意味着可以在平面内做出任意方向平移同时自转的动作 为了实现全向移动 xff0c 一般机器人会使用 全向轮 xff08 Omni Wheel
  • 卡尔曼滤波(KF)与扩展卡尔曼滤波(EKF)的一种理解思路及相应推导(1)

    前言 xff1a 从上个世纪卡尔曼滤波理论被提出 xff0c 卡尔曼滤波在控制论与信息论的连接上做出了卓越的贡献 为了得出准确的下一时刻状态真值 xff0c 我们常常使用卡尔曼滤波 扩展卡尔曼滤波 无迹卡尔曼滤波 粒子滤波等等方法 xff0
  • Qt Cmake添加*.qrc资源文件

    cmake minimum required VERSION 3 5 project Test LANGUAGES CXX 这里 file GLOB RECURSE QRC SOURCE FILES CMAKE CURRENT SOURCE
  • IOS 加载本地HTML

    web qtt以 folder形式添加到项目中 xff0c 注意是蓝色的颜色 创建swift项目 xff0c 写入如下代码 span class token comment span span class token comment Vie
  • C#实现:将十进制数转换为十六进制(含完整源码)

    C 实现 将十进制数转换为十六进制 含完整源码 在C 中 我们可以使用基础数据类型来存储整数值 如int long等 而十进制数是我们最常用的数制 但有些场景下需要将其转换为其它进制 如十六进制 本文将介绍如何使用C 来实现将十进制数转换为
  • 怎样用串口发送结构体-简单协议的封包和解包

    先说解决方案 xff0c 细节和实现代码都放在正文 下位机 xff1a 把结构体拆分成8位的整型数据 xff0c 加上数据包头和包尾 xff0c 然后按顺序单个单个地发出 xff1b 上位机 xff1a 把串口里的数据读取出来 xff0c
  • 计算机网络学习笔记——IP Header Checksum(校验和)的计算方法

    从TCP IP协议看到IP数据报 xff0c 看到Checksum的算法描述 xff0c 不甚了了 The checksum field is the 16 bit one s complement of the one s complem

随机推荐

  • 在Ubuntu18.04中更新指定python版本以及pip

    在Ubuntu18 04中更新指定python版本以及pip 更新指定python版本 xff08 eg python3 8 xff09 xff1a 参考 教你Ubuntu安装python3 7 xff0c 并更新python默认指向 xf
  • 【MATLAB数学建模编程实战】遗传算法求解最短路径(附代码及运行效果)

    欢迎关注 xff0c 本专栏主要更新MATLAB仿真 界面 基础编程 画图 算法 矩阵处理等操作 xff0c 拥有丰富的实例练习代码 xff0c 欢迎订阅该专栏 xff01 xff08 等该专栏建设成熟后将开始收费 xff0c 快快上车吧
  • stm32HAL库 串口接收不定长数据(DMA传输)

    相信大家很多初学者都会遇到串口接收不定长数据的情况 对于初学者可能看着有点难理解 xff0c 多看几遍就好 xff0c 亲测能用 话不多说上菜上菜 xff01 xff01 xff01 xff01 此代码是本人在具体工程应用 xff0c 实测
  • Flask - after_request 和 before_request

    目录 特殊的装饰器多个中间件怎么执行的 特殊的装饰器 64 app before request 在视图函数执行前执行 64 app after request 在视图函数执行后执行 span class token keyword fro
  • VScode 占用cpu风扇狂转, C/C++ IntelliSense Server for Visual Studio Code cpptools.exe占用cpu 30%

    点击下面那个红框中的东西 xff0c 然后选择暂停分析 cpu占用立马降下来了
  • 学习C++中遇到的各种问题

    拷贝构造函数到底是个是什么东西 xff1f 到底什么时候用const xff1f amp 是写在前还是写在后 xff1f 有区别 xff1f 为什么在析构函数中加了delete程序就会卡死 xff1f size t是个什么东西 xff1f
  • 【3D目标检测】稀疏卷积

    稀疏卷积实现部分 先说说实现部分 xff0c 对原理感兴趣的往后看 1 稀疏数据生成 这里的思路主要是先利用np meshgrid和np stack创建出稀疏数据补全后shape大小的点云坐标 xff0c 然后随机取前num points个
  • Unity3D之物体跟随鼠标移动和旋转

    void FixedUpdate if Input GetMouseButton 0 Vector3 aimPos 61 Camera main ScreenToWorldPoint new Vector3 Input mousePosit
  • 【寒武纪】视觉算法MLU220硬件适配(1)

    1 xff0c 环境搭建 xff1a MLU220快速上手指南 寒武纪开发者社区 安装硬件驱动和软件工具链 xff0c 也可以直接使用寒武纪官方开发平台 xff1a 寒武纪开发平台 本地开发安装完工具需要进行一些配置 xff1a 安装后配置
  • 【自动驾驶】second模型训练

    1 xff0c 数据组织 xff1a 训练验证数据生成 xff1a python create data py nuscenes data prep data path 61 NUSCENES TRAINVAL DATASET ROOT v
  • OpenMP入门

    OpenMP 是 Open MultiProcessing 的缩写 可以在 Visual Studio 或者 gcc 中使用 Hello World 把下面的代码保存为 omp cc include lt iostream gt inclu
  • 【蒸馏】PointDistiller: Structured Knowledge DistillationTowards Efficient and Compact 3D Detection

    简述 方法的细节 fT和f S 教师检测器和学生检测器中的特征编码层 AT和AS 抽取的待蒸馏体素或重要性得分最高的点的特征 CT和CS 教师和学生检测特征的通道数 GT和GS 教师和学生检测器的图形特征 该方法基于预先定义的重要度评分 x
  • 【自动驾驶】多传感器感知技术解析

    1 传感器 自动驾驶中的传感器主要用到激光雷达 xff0c 毫米波雷达 xff0c 摄像头 xff0c 超声波 xff0c 优缺点如下 xff1a 1 xff09 激光雷达的测距精度 测距范围及对温度和光照的适应性很强 xff0c 缺点线束
  • 【自动驾驶】单目3D检测M3D-RPN解析与paddle复现

    1 简介 作者提出了一种单个的端到端区域建议网络用于多类别3D目标检测 2D和3D检测任务各自的目标是最终对一个对象的所有实例进行分类 xff0c 而它们在定位目标的维数上是不同的 直观地说 xff0c 我们期望能够利用2D检测的强大功能来
  • 【模型压缩】实例分析量化原理

    1 从定点模型训练来分析量化原理 xff1a 定点模型训练是一个迁移训练的过程 xff1a 在浮点网络的相应位置插入定点化处理节点 xff08 相 当于激活函数 xff09 xff0c 然后在这个经过定点化的计算图上重新训练神经网络 以全连
  • 【3D视觉】深度摄像头与3D重建

    1 xff0c Kinect 是微软在2010年6月14日对XBOX360体感周边外设正式发布的名字 大家在上图可以看到 xff0c Kinect两端有两个3D深度摄像头 xff0c 左边那个发射红外线 xff0c 右边那个是一个红外线感应
  • 【3D视觉】realsense D435三维重建

    1 xff0c 硬件 xff1a realsense D435 驱动及SDK开发包安装 GitHub IntelRealSense librealsense Intel RealSense SDK 下载最新驱动 安装后打开 Intel Re
  • ssh: connect to host 10.112.1.5 port 10083: Connection refused

    ssh connect to host 10 112 1 5 port 10083 Connection refused 1 查看已知端口占用情况 我们想知道10083端口的使用情况 xff0c 或者说被谁占用了 xff0c 命令如下 xf
  • Unity之将Texture保存成png

    using UnityEngine using System Collections using System IO public class SaveToPng MonoBehaviour public Shader outShader
  • 基于容器训练OpenPCdet

    基于容器训练OpenPCdet 1 先拉取一个运行的镜像 docker pull djiajun1206 pcdet pytorch1 6 2 基于镜像创建一个容器 nvidia docker run it name pcdet privi