代码复现 :SECOND pytorch版本 ①

从SECOND到Voxel R-CNN:手把手教你用PyTorch复现体素检测的性能飞跃(含代码解读) 本文详细介绍了从SECOND到Voxel R-CNN的3D目标检测性能跃迁,通过PyTorch实战演示了体素检测的关键技术改进。文章包含代码解读、环境配置、核心改进解析及部署优化,帮助开发者实现高效的3D感知解决方案,显著提升检测精度和推理速度。 阅读详情

源码: https://github.com/traveller59/second.pytorch

“ Alpha”表示可能存在许多错误,配置格式可能会更改,spconv API可能会更改。

仅支持python 3.6 +,pytorch 1.0.0+。 在Ubuntu 16.04 / 18.04 / Windows 10中进行了测试。我们只关注KITTI数据集。

News

  • 2019-4-1:发布了SECOND V1.6.0 alpha:New Data
    API,NuScenes支持,PointPillars支持,fp16和multi-gpu支持。
  • 2019-3-21:SECOND V1.5.1(较小的改进和错误修复)发布了!
  • 2019-1-20:SECOND V1.5发布! 基于稀疏卷积的网络。

有关更多详细信息,请参见发行说明。
警告:您应在每次更新代码后重新运行信息生成。

KITTI验证集中的性能 (50/50 split)

car.fhd.config + 160 epochs (25 fps in 1080Ti):

Car AP@0.70, 0.70, 0.70:
bbox AP:90.77, 89.50, 80.80
bev  AP:90.28, 87.73, 79.67
3d   AP:88.84, 78.43, 76.88

car.fhd.config + 50 epochs + 超收敛 (6.5 hours) + (25 fps in 1080Ti):

Car AP@0.70, 0.70, 0.70:
bbox AP:90.78, 89.59, 88.42
bev  AP:90.12, 87.87, 86.77
3d   AP:88.62, 78.31, 76.62

car.fhd.onestage.config + 50 epochs + 超收敛 (6.5 hours) + (25 fps in 1080Ti):

Car AP@0.70, 0.70, 0.70:
bbox AP:97.65, 89.59, 88.72
bev  AP:90.38, 88.20, 86.98
3d   AP:89.16, 78.78, 77.41

NuScenes验证集中的性能(all.pp.config,NuScenes微型训练集,3517个样本,而非v1.0-mini)

car Nusc dist AP@0.5, 1.0, 2.0, 4.0
62.90, 73.07, 76.77, 78.79
bicycle Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 0.00, 0.00, 0.00
bus Nusc dist AP@0.5, 1.0, 2.0, 4.0
9.53, 26.17, 38.01, 40.60
construction_vehicle Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 0.00, 0.44, 1.43
motorcycle Nusc dist AP@0.5, 1.0, 2.0, 4.0
9.25, 12.90, 13.69, 14.11
pedestrian Nusc dist AP@0.5, 1.0, 2.0, 4.0
61.44, 62.61, 64.09, 66.35
traffic_cone Nusc dist AP@0.5, 1.0, 2.0, 4.0
11.63, 13.14, 15.81, 21.22
trailer Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.80, 9.90, 17.61, 23.26
truck Nusc dist AP@0.5, 1.0, 2.0, 4.0
9.81, 21.40, 27.55, 30.34

安装

1. Clone code

git clone https://github.com/traveller59/second.pytorch.git
cd ./second.pytorch/second

2.安装依赖项python软件包

建议使用Anaconda软件包管理器。

conda install scikit-image scipy numba pillow matplotlib

pip install fire tensorboardX protobuf opencv-python

If you don’t have Anaconda:

pip install numba scikit-image scipy pillow

按照spconv中的说明安装spconv。

如果要以fp16混合精度进行训练(在RTX系列,Titan V / RTX和Tesla V100中训练得更快,但我只有1080Ti),则需要安装apex。

如果要使用NuScenes数据集,则需要安装nuscenes-devkit。

3.为numba设置cuda(将在1.6.0版中删除)

您需要为numba.cuda添加以下环境变量,您可以将它们添加到~/.bashrc中:

export NUMBAPRO_CUDA_DRIVER=/usr/lib/x86_64-linux-gnu/libcuda.so
export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so
export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice

4.将second.pytorch/ 添加到PYTHONPATH

KITTI数据集准备

下载KITTI数据集并首先创建一些目录:

└── KITTI_DATASET_ROOT
       ├── training    <-- 7481 train data
       |   ├── image_2 <-- for visualization
       |   ├── calib
       |   ├── label_2
       |   ├── velodyne
       |   └── velodyne_reduced <-- empty directory
       └── testing     <-- 7580 test data
           ├── image_2 <-- for visualization
           ├── calib
           ├── velodyne
           └── velodyne_reduced <-- empty directory

Then run 数据生成:

python create_data.py kitti_data_prep--data_path=KITTI_DATASET_ROOT

NuScenes数据集暂不用。。。

修改配置文件

在配置文件中需要配置一些路径:

train_input_reader: {
  ...
  database_sampler {
    database_info_path: "/path/to/dataset_dbinfos_train.pkl"
    ...
  }
  dataset: {
    dataset_class_name: "DATASET_NAME"
    kitti_info_path: "/path/to/dataset_infos_train.pkl"
    kitti_root_path: "DATASET_ROOT"
  }
}
...
eval_input_reader: {
  ...
  dataset: {
    dataset_class_name: "DATASET_NAME"
    kitti_info_path: "/path/to/dataset_infos_val.pkl"
    kitti_root_path: "DATASET_ROOT"
  }
}

使用

训练

我建议使用script.py进行训练和评估。 有关更多详细信息,请参见script.py。

使用单个GPU训练

python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir

使用多个GPU进行训练(需要测试,我只有一个GPU)

假设您有4个GPU,并希望使用3个GPU进行训练:

CUDA_VISIBLE_DEVICES=0,1,3 python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir --multi_gpu=True

注意:配置文件中的batch_size和num_workers是每个GPU的,如果使用multi-gpu,它们将乘以GPU的数量。 不要手动修改它们。

您需要在配置文件中修改总计步骤。 例如,car.lite.config和单个GPU的50个epochs= 15500步,如果使用4个GPU,则需要将step和steps_per_eval除以4。

用fp16训练(混合精度)

修改配置文件,将enable_mixed_precision设置为true。

  • 如果要训练新模型,请确保 "/path/to/model_dir"不存在。如果model_dir不存在,将创建一个新目录,否则将读取其中的checkpoints。
  • 训练过程对于1080Ti默认使用batchsize = 6作为默认值,如果GPU的内存较少,则需要减小batchsize。
  • 目前仅支持单GPU训练,但在单个1080Ti中训练模型仅需要20小时(165个epoch),并且仅需要50个epoch以达到78.3 AP,with super converge in car moderate 3D in Kitti validation dateset。

评估

python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir --measure_time=True --batch_size=1

检测结果将作为result.pkl文件保存在model_dir / eval_results / step_xxx中,或者如果使用--pickle_result = False,则另存为官方KITTI标签格式。

预训练模型

您可以在Google云端硬盘中下载经过预训练的模型。 car_fhd模型对应于car.fhd.config。

请注意,此预训练模型在稀疏卷积错误修复之前进行了训练,因此评估结果可能会稍差一些。

Docker(不建议使用。由于网络问题,我无法推送Docker。)

您可以使用prebuilt docker进行测试:

docker pull scrin/second-pytorch 

Then run:

nvidia-docker run -it --rm -v /media/yy/960evo/datasets/:/root/data -v $HOME/pretrained_models:/root/model --ipc=host second-pytorch:latest
python ./pytorch/train.py evaluate --config_path=./configs/car.config --model_dir=/root/model/car

尝试 Kitti Viewer Web

主要步骤

推理步骤

首先,必须单击加载按钮并成功加载。

  1. 输入checkpointPath和configPath。
  2. 单击buildNet。
  3. 点击inference。
    在这里插入图片描述

尝试Kitti Viewer(不建议使用)

训练之前,应使用基于pyqt和pyqtgraph的kitti查看器检查数据。

运行python ./kittiviewer/viewer.py,检查以下图片以使用kitti查看器:
在这里插入图片描述

概念

  • Kitti激光雷达box

Kitti激光雷达盒由7个元素组成:[x,y,z,w,l,h,rz],见图。
在这里插入图片描述
所有训练和推理代码均使用kitti框格式。 因此,我们需要在训练之前将其他格式转换为KITTI格式。

  • Kitti相机box

Kitti相机盒包含7个元素:[x,y,z,l,h,w,ry]。

PyTorch超参调优实战:用Optuna实现高效可复现的自动搜索 超参数调优是深度学习模型训练的关键环节,其本质是在高维非凸空间中寻找泛化性能最优的配置组合。传统方法如网格搜索计算爆炸、随机搜索缺乏导向性,而贝叶斯优化常因与PyTorch动态图耦合困难导致状态污染和显存泄漏。Optuna凭借TPE(Tree-structured Parzen Estimator)算法建模历史trial分布,结合pruning机制在训练早期主动终止低潜力试验,显著提升搜索效率;其基于Trial对象的设计天然适配PyTorch的显式控制流与内存管理特性,支持可中断、可并行、可复现的工程化调参 阅读详情

相关推荐

Tokens per Second:大模型推理速度的测量与优化全解析

大语言模型在生成文本时按 token 进行,token 是模型理解文本的基本单元。衡量模型生成速度的关键指标是 tokens per second(tokens/s),它直接决定用户体验与系统吞吐。理解这一指标需要区分单请求速度与并发吞吐,并关注 prefill、decode 阶段以及显存带宽、量化策略等影响因素。在工程实践中,开发者可通过 vLLM 等推理框架、连续批处理、投机解码等手段显著提升 token 生成速度。合理建立评测基准、关注延迟分布,才能在生产环境中复现理想性能。本文围绕 tokens/s

weixin_34411563的博客 391

Ubuntu16.04运行second.pytorch和PointPillars(主要记录遇到的问题)

一、环境 Ubuntu16.04 ROS-Kinetic 驱动版本384.130 CUDA:9.0.176 CUDNN:7.6.2 ROS自带 Python:3.5.2 安装版本 Tensorflow-GPU=1.8.0 Pytorch=1.1.0 Anaconda (base)Python3.7 Tensorflow-GPU=1.14.0 Pytorch=1.1.0 torchvision=0....

Doraemon_Zzn的博客 4265

AI工程实践周报:可复现的模型调试与性能优化实录

在AI模型落地过程中,'能跑通'不等于'可交付'——真正决定效果的是训练稳定性、推理延迟、显存利用率等工程细节。本文围绕真实场景中的CUDA内存溢出、NaN梯度、Dataloader死锁、线上指标下跌等高频问题,解析混合精度训练、梯度累积、Rotary位置编码替换、DeepSpeed零冗余优化等关键技术原理与权衡逻辑。内容基于2021年9月Hugging Face Transformers v4.9.2与PyTorch 1.9.0生态快照,强调环境可复现性、配置可验证性与行为可归因性,为算法工程师提供从报错

weixin_34005042的博客 329

【深度学习】点云深度学习笔记(目标检测)

Second环境的配置参考 参考:https://blog.csdn.net/r1141207831/article/details/103756292 遇到的错误 1、执行python create_data.py kitti_data_prep --root_path=data/KITTI_DATASET_ROOT 遇到了错误 NvvmSupportError: libNVVM cannot be found. Do conda install cudatoolkit: library nvvm

小昊同学 2714

PyTorch RuntimeError: 解决“第二次反向传播”报错与计算图管理

在深度学习框架中,自动微分(Autograd)是实现神经网络训练的核心机制,它通过构建动态计算图来跟踪张量操作并自动计算梯度。其工作原理是在前向传播时记录操作序列,形成有向无环图,并在反向传播时利用链式法则计算参数梯度。这一机制的技术价值在于极大简化了梯度计算,使研究人员能专注于模型设计。然而,计算图在默认情况下会在首次反向传播后被释放以节省内存,若试图对同一计算图进行第二次反向传播,便会触发经典的 RuntimeError。该问题常见于多任务学习、梯度累积、RNN训练等应用场景,尤其在使用自定义损失函数或

weixin_33766805的博客 326

【Bug已解决】PyTorch - RuntimeError: Trying to backward through the graph a second time, but the buffers…

默认行为backward()后释放计算图,不能再次调用。:保留计算图,允许再次backward(),但增加内存开销。:构建梯度计算图,支持高阶导数,隐含。多损失相加:最简单的多任务方案,后一次backward()。:计算梯度但不累积到.grad,适合梯度惩罚等场景。:每次backward()前清零梯度,避免累积。detach():切断梯度流,阻止梯度传播。重新前向传播:每次迭代重新构建计算图,是最安全的做法。梯度惩罚:使用保留梯度计算图。元学习:MAML 等算法需要计算二阶梯度。

博客 84

优化版-基于pytorch简单实现稀疏3d卷积(SECOND)

上篇博文中,建立输入和输出的坐标关系是遍历输出点的方式,并不能节省时间,最优的方案是根据公式直接从输入点坐标计算得到对应的输出点坐标,根据这个思路,进行了代码优化。 对于如下配置下,两种rulebook建立思路的使用时间对比如下图: shapes=(512,1024) # conv2d:(15,22) bs=1 #batch_size ks=3 #kernel_size, when stride=2, just support kernel=3, when stride=1, kernel can

Briwisdom的博客 3142

second.pytorch:用于KITTI对象检测的PointPillars

点柱 欢迎来到PointPillars。 此存储库演示了如何通过对现有开放源代码库进行最小的要求更改,来在上重现(将在CVPR 2019上发布)的。 这不是官方的nuTonomy代码库,但可以用于匹配已发布的PointPillars结果。 警告:此代码未得到积极维护。 此代码可用于在论文的第一个版本重现结果。 对于还可以在nuScenes上重现PointPillars结果的主动维护的存储库,我们建议使用 。 我们不是存储库的所有者,但是我们与作者合作并认可了他的代码。 入门 这是的一个分支,此处复制了原始README的相关子集。 代码支持 仅支持python 3.6 +,pytorch 0.4.1+。 代码仅在Ubuntu 16.04 / 18.04上进行了测试。 安装 1.克隆代码 git clone https://github.com/nutonomy/second.pytor

second算法复现及可视化记录

numpy.float64 object can’t be interpreted as an integer是因为numpy包版本太高,降低到1.17.0或更低版本即可,在降低numpy版本后,会有些其它包说与底版本的numpy包不适配,将有问题的包降低到与numpy适配的版本即可。spconv1.2文件下载下来后其中/third_party/pybind11的文件夹里是空的,到github上单独下载pybind111,在放到/third_party/pybind11的文件夹里。

jinseyanhuo的博客 2465

yolov5 部署jetson nano(通用) 保姆级教学

Jetson nano从配置环境到yolov5成功推理检测全过程 文章目录Jetson nano从配置环境到yolov5成功推理检测全过程一、烧录镜像二、配置环境并成功推理1.更新系统和包2、配置环境2.1 配置CUDA2.2 修改Nano板的显存1.打开终端输入:2.修改nvzramconfig.sh文件:3.重启:4.终端输入:3、安装archiconda(也就是jetson nano板上的anaconda)1.下载地址:2.安装:3.测试conda:4.创建运行yolov5的虚拟环境:5.在conda

weixin_44312422的博客 3万+

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1816

3D点云学习:SECOND目标检测②源码注释

源码链接: PCDet. 很遗憾,SECOND的算法复现也要依赖于spconv库,而spconv库目前只支持在ubuntu系统中进行编译(虚拟机也不行),复现还是没有成功,想去安装双系统了… 1 数据预处理PCDet-master\pcdet\datasets\kitti\kitti_dataset.py SECOND数据的预处理与大多数点云目标检测的预处理相似,主要任务在于 1>生成储存train/val数据info的文件kitti_infos_%s.pkl 2>生成数据增强时使用的groun

themasterbi的博客 3083

代码复现 :SECOND pytorch版本 ②

1.下载 KITTI 数据集并首先创建一些目录: … 2.创建KITTI的相关信息: python create_data.py create_kitti_info_file --data_path=KITTI_DATASET_ROOT 3.创建缩减点云(reduced point cloud): python create_data.py create_reduced_point_cloud --data_path=KITTI_DATASET_ROOT 4.创建真值数据库(groundtruth-da

W1995S的博客 1379

Harness Engineering:让Coding Agent真正落地生产

本文将带你系统性地了解如何让Coding Agent真正落地生产,核心是依托(全球领先的持续交付、云成本管理、 feature flagging、安全治理一体化平台),结合企业级AIDD(AI-Driven Development)的工程化实践,构建一套可信赖、可观测、可扩展、可治理的Coding Agent落地体系。核心概念与理论基础:什么是Coding Agent?它和普通的AI代码补全工具(比如GitHub Copilot)有什么区别?什么是Harness Engineering?

移动开发前沿的博客 450

C++(Qt)软件调试---gdb调试入门用法(12)

学习GDB可以帮助程序员更好地调试程序,找到程序中的错误和问题,提高程序的质量和稳定性。 在开发大型软件时,程序中可能存在许多错误和问题,这些问题可能会导致程序崩溃或者出现不可预期的行为。 使用GDB可以帮助程序员更快地找到这些问题,并且提供一些调试工具来帮助程序员更好地理解程序的行为。

mahuifa的博客 5526

基于nuScenes数据集的pointpillars代码复现(second.pytorch)

nuScenes数据集加速下载请参阅如下博客: https://blog.csdn.net/weixin_38423729/article/details/111059557 second.pytorch代码地址如下: https://github.com/traveller59/second.pytorch 未完待续。。。

weixin_38423729的博客 2028

【C++】DDS:FastDDS环境配置与使用示例

FastDDS环境配置与使用示例

DevFrank的博客 6496

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

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

A1828776499的博客 8719

Codex 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例将展示如何用 Codex 生成 Python 脚本,通过 `ezdxf` 库绘制标准 DXF 格式的 CAD 机械图纸。我们会从零开始,逐步实现直线、圆、圆弧、标注等基本图形元素,最终绘制出一张包含主视图、俯视图、尺寸标注、标题栏和技术要求的完整法兰盘零件图。还会演示参数化批量生成不同规格零件图和自动 BOM 物料清单,生成的 DXF 文件可直接在 AutoCAD、FreeCAD 中打开。全程用自然语言驱动 Codex,工程师看完直接上手!

yueyeguzhuo的专栏 2035

5、AIX系统硬件管理与故障诊断全解析

本文全面解析了AIX系统的硬件管理与故障诊断方法,涵盖系统管理服务(SMS)的使用、设备兼容性配置、设备配置数据库结构、常用命令如cfgmgr、lsattr、smitty devices的操作详解,并深入介绍了错误日志管理机制,包括errdemon、errpt、errlogger等命令的应用。通过实际案例分析和流程图展示,帮助系统管理员掌握从问题怀疑到诊断执行再到日志清理的完整流程,同时提供注意事项与最佳实践,助力AIX系统的稳定运行与高效维护。

y2z3a4b5c的博客 59

跑通PCDet上的那些坑——复现second PV-RCNN pointpillar

PCDet包括了多个点云目标检测算法,包括second,pointpillar,pvrcnn等等。所以跑通一个模型可以说是一劳永逸,于是我就决定和它正面刚!前前后后差不多刚了一个月吧,略有所获,此处做一记录。

hughlee815的博客 7711

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

解决RuntimeError: Trying to backward through the graph a second time

解决Trying to backward through the graph a second time

SCUTACM_L的博客 977

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

second/pointpillars配制记录

second/pointpillars配置记录 一、环境配置 系统是ubuntu18.04 显卡是2080Ti cuda版本为10.0 cudnn版本为7.3.1 python版本为3.7.3 pytorch版本为1.3 spconv版本为1.2(写这篇文章时的最新版,他需要python3.7和pytorch1.3以上) Cmake版本为3.13.2 以上是环境版本配置,非常感谢https://blog.csdn.net/r1141207831/article/details/10375

CHD-Sun的博客 925

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PointPillars复现问题小结

项目地址:https://github.com/traveller59/second.pytorch 由于pointpillar是在second的基础上改动的,所以直接用second项目,只不过在训练和测试时参数文件不一样。 1、 首先安装pytorch,使用anaconda新建一个环境,百度搜索pytorch,从官网选择cuda,直接有安装命令,即可安装pytorch。 pytorch支持cuda10.1,所以首先要安装cuda10.1 2、 然后按照项目安装依赖,这里要注意, llvmlite要选择0.

mooooop的博客 2194

SE-SSD论文复现挑战:完整复现CVPR 2021实验结果的终极指南

SE-SSD(Self-Ensembling Single-Stage Object Detector From Point Cloud)是CVPR 2021提出的基于点云的单阶段目标检测算法,通过自集成机制显著提升了3D目标检测性能。本文将提供从环境配置到实验验证的完整复现方案,帮助研究者快速复现论文核心实验结果。 ## 🌟 算法核心创新点解析 SE-SSD创新性地将自集成学习(Self-

gitblog_01164的博客 262
上一篇: MV3D-Net 学习笔记
下一篇: 代码复现 :SECOND pytorch版本 ②
THE@JOKER
博客等级 码龄10年 426粉丝 155原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值