安装、测试和训练OpenPCDet:一篇详尽的指南

简介

OpenPCDet是一个用于3D目标检测的开源工具箱,它提供了多种数据集的加载器,支持多种模型,并且易于扩展。在本博客中,我将引导你完成OpenPCDet的安装过程,并展示如何测试和训练预训练模型。

安装OpenPCDet

环境要求

在开始之前,请确保你的系统满足以下要求:

  • Linux操作系统(Ubuntu 14.04/16.04/18.04/20.04/21.04已测试)
  • Python 3.6或更高版本
  • PyTorch 1.1或更高版本(测试了1.1, 1.3, 1.5到1.10)
  • CUDA 9.0或更高版本(PyTorch 1.3+需要CUDA 9.2+)
  • spconv库(v1.0, v1.2或v2.x)

安装步骤

  1. 克隆仓库

    git clone https://github.com/open-mmlab/OpenPCDet.git
    #官网测试的是pcdet v0.5
    #可以直接使用master进行编译,等其出错再说。
    #使用如下命令进行切换
    git tag
    #v0.1.0
    #v0.1.1
    #v0.2.0
    #v0.3.0
    #v0.5.0
    #v0.5.2
    git checkout v0.5.2
  2. 安装依赖库

    • 安装SparseConv库。根据你的PyTorch版本选择合适的spconv版本。
    • 对于PyTorch 1.1,安装spconv v1.0(commit 8da6f96)。
    • 对于PyTorch 1.3+,安装spconv v1.2或使用作者推荐的Docker。
    • 或者,你可以使用pip安装最新的spconv v2.x。

    注意:1、30系列的需要使用Cuda11. 否则会报如下错误。

        For Ampere-based NVIDIA GPUs, such as GeForce 30 series and NVIDIA A100, CUDA 11 is a must.For older NVIDIA GPUs, CUDA 11 is backward compatible, but CUDA 10.2 offers better compatibility and is more lightweight.

    2、安装spconv,直接使用命令安装

    pip install spconv-cu113
  3. 安装OpenPCDet及其依赖

    python setup.py develop
    #pytorch安装
    #测试pytroch1.6、 1.7的可以。
    #30系列显卡
    conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch
    #20系列显卡
    conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch

数据集准备

OpenPCDet支持多种数据集,包括KITTI、NuScenes、Waymo、Lyft和Pandaset。以下是准备KITTI数据集的示例:

  1. 下载官方KITTI 3D目标检测数据集,并按以下结构组织文件:

    OpenPCDet
    ├── data
    │   ├── kitti
    │   │   ├── ImageSets
    │   │   ├── training
    │   │   │   ├── calib & velodyne & label_2 & image_2 & (optional: planes) & (optional: depth_2)
    │   │   ├── testing
    │   │   │   ├── calib & velodyne & image_2
  2. 生成数据信息:

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

测试预训练模型

测试预训练模型是一个了解OpenPCDet性能的好方法。以下是测试步骤:

  1. 下载预训练模型:下载所需的预训练模型并将其放置在适当的位置。

  2. 测试模型

    python test.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --ckpt ${CKPT}
    #ex
    python test.py --cfg_file ./cfgs/kitti_models/pointpillarback.yaml --ckpt ../checkpoints_office/pointpillar_7728.pth

    其中${CONFIG_FILE}是配置文件的路径,${BATCH_SIZE}是批处理大小,${CKPT}是检查点文件的路径。

  3. 使用Tensorboard绘制性能曲线

    python test.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --eval_all

训练模型

训练自己的模型是机器学习中最激动人心的部分之一。以下是训练模型的基本步骤:

  1. 准备数据集:按照上文所述准备你的数据集。

  2. 配置训练参数:在train.py脚本中设置所需的参数,如批处理大小和训练周期。

  3. 开始训练

    • 使用单个GPU:

      python train.py --cfg_file ${CONFIG_FILE}
      #ex
      python train.py --cfg_file ./cfgs/kitti_models/pointpillar.yaml
    • 使用多个GPU或多台机器:

      sh scripts/dist_train.sh ${NUM_GPUS} --cfg_file ${CONFIG_FILE}
  4. 监控训练过程:使用Tensorboard或其他可视化工具监控训练过程。

结论

OpenPCDet是一个功能强大的3D目标检测工具箱,它为研究人员和开发人员提供了一个易于使用的平台。通过本指南,你应该能够安装OpenPCDet,测试预训练模型,并开始训练你自己的模型。祝你在3D目标检测领域的探索中取得成功!

关注我的公众号auto_drive_ai(Ai fighting), 第一时间获取更新内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字光强测量仪OPT3001

外观 参考价格 原理图 频谱 特性 说明 OPT3001 传感器用于测量可见光的密度。传感器的光 谱响应与人眼的视觉响应紧密匹配,其中具有很高的红 外线阻隔。 OPT3001 是一款可如人眼般测量光强的单芯片照度 计。OPT3001 器件兼具精密的频谱响应和较强的 IR 阻隔功能&a…

基于Weaviate构建多模态检索和多模态检索增强(RAG): Building Multimodal Search and RAG

Building Multimodal Search and RAG 本文是学习 https://www.deeplearning.ai/short-courses/building-multimodal-search-and-rag/ 这门课的学习笔记。 What you’ll learn in this course Learn how to build multimodal search and RAG systems. RAG systems enhance an …

JVM垃圾回收器的选择

在java中,垃圾回收(gc)是重要的过程,用于管理内存,回收不被使用的对象,垃圾回收主要针对的是内存结构中的堆内存进行回收,内存结构和回收算法请参考java内存结构及垃圾回收算法介绍 垃圾回收器的…

在iPhone上恢复已删除的Safari历史记录的最佳方法

您是否正在寻找恢复 iPhone 上已删除的 Safari 历史记录的最佳方法?好吧,这篇文章提供了 4 种在有/无备份的情况下恢复 iPhone 上已删除的 Safari 历史记录的最佳方法。现在按照分步指南进行操作。 iPhone 上的 Safari 历史记录会被永久删除吗&#xff1…

kafka 发送文件二进制流及使用header发送附属信息

文章目录 背景案例发送方接收方 背景 需要使用kafka发送文件二进制以及附属信息 案例 发送方 import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord;import java.io.InputStream; import java.nio.charset.S…

Halo DB 魔法之 pg_pcpu_limit

↑ 关注「少安事务所」公众号,欢迎⭐收藏,不错过精彩内容~ 前情回顾 前面已经介绍了“光环”数据库的基本情况和安装办法,今天来介绍一个新话题。 哈喽,国产数据库!Halo DB! 三步走,Halo DB 安装指引 ★ Ha…

Java Agent利器

一、JavaAgent技术 1.1 什么是JavaAgent JavaAgent是一种特殊的Java程序,是Instrumentation的客户端。它与普通Java程序通过main方法启动不同,JavaAgent并不是一个可以单独启动的程序,它必须依附在一个Java应用程序(JVM&#xf…

java并发常见问题

1.死锁:当两个或多个线程无限期地等待对方释放锁时发生死锁。为了避免这种情况,你应该尽量减少锁定资源的时间,按顺序获取锁,并使用定时锁尝试。 2.竞态条件:当程序的行为依赖于线程的执行顺序或输入数据到达的顺序时…

Lagrange ZK Coprocessor:革新区块链领域的大数据应用

1. 引言 2024年5月11日,Lagrange Labs宣称获得由Founders Fund领投(Archetype Ventures, 1kx, Maven11, Fenbushi Capital, Volt Capital, CMT Digital, Mantle Ecosystem Fund和其它天使投资人跟头)的1320万美金种子轮融资,致力于…

springboot高校网上选课系统-计算机毕业设计源码85583

摘 要 本论文主要论述了如何使用JAVA语言开发一个高校网上选课系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述高校网上选课系统的当前背景以及系统开发的目…

typescript --object对象类型

ts中的object const obj new Object()Object 这里的Object是Object类型,而不是JavaScript内置的Object构造函数。 这里的Object是一种类型,而Object()构造函数表示一个值。 Object()构造函数的ts代码 interface ObjectConstructor{readonly prototyp…

实验报告6-SSM框架整合

资料下载链接 实验报告6-SSM框架整合(1验证码) 实验报告6-SSM框架整合(2管理员登录) 实验报告6-SSM框架整合(3商品的分页查询) 实验报告6-SSM框架整合(4权限拦截器) 一、需求分析 使用普通整合方式实现SSM(SpringMVC、Spring和MyBatis)整合,…

C++20 范围(Range):简化集合操作

C20 范围:简化集合操作 一、范围(Range)的目的二、在模板函数中使用范围概念三、投影四、视图五、结论 一、范围(Range)的目的 在 C20 中,范围概念要求一个对象同时拥有迭代器和结束哨兵。这在标准集合的上…

YOLOv5改进(五)-- 轻量化模型MobileNetv3

文章目录 1、MobileNetV3论文2、代码实现2.1、MobileNetV3-small2.2、MobileNetV3-large 3、运行效果4、目标检测系列文章 1、MobileNetV3论文 Searching for MobileNetV3论文 MobileNetV3代码 MobileNetV3 是 Google 提出的一种轻量级神经网络结构,旨在在移动设备上…

官网上线,一款令人惊艳的文本转语音模型:ChatTTS

近日,一个名为 ChatTTS 文本转语音模型的项目在github上横空出世,一经推出便引发极大关注,短短四天时间,已经狂揽了14.2k的Start量。 ChatTTS是一款专为对话场景设计的支持中英文的文本转语音(TTS)模型&…

Codeforces Global Round 17 C. Keshi Is Throwing a Party 题解 二分答案

Keshi Is Throwing a Party 题目描述 Keshi is throwing a party and he wants everybody in the party to be happy. He has n n n friends. His i i i-th friend has i i i dollars. If you invite the i i i-th friend to the party, he will be happy only if at m…

未来已来:Spring Boot引领数据库智能化革命

深入探讨了Spring Boot如何与现代数据库技术相结合,预测并塑造未来的数据访问趋势。本书不仅涵盖了Spring Data JPA的使用技巧,还介绍了云原生数据库的概念,微服务架构下的数据访问策略,以及AI在数据访问层的创新应用。旨在帮助开…

微信小程序如何进行页面跳转

微信小程序中的页面跳转可以通过多种方式实现,以下是几种主要的跳转方式及其详细解释: wx.navigateTo 功能:保留当前页面,跳转到应用内的某个页面。特点: 可以在新页面使用wx.navigateBack返回原页面。每跳转一个新页…

XFeat:速度精度远超superpoint的轻量级图像匹配算法

代码地址:https://github.com/verlab/accelerated_features?tabreadme-ov-file 论文地址:2404.19174 (arxiv.org) XFeat (Accelerated Features)重新审视了卷积神经网络中用于检测、提取和匹配局部特征的基本设计选择。该模型满足了对适用于资源有限设备…

在table中获取每一行scope的值

目的 当前有一份如下数据需要展示在表格中&#xff0c;表格的页面元素套了一个折叠面板&#xff0c;需要循环page_elements中的数据展示出来 错误实践 将template放在了折叠面板中&#xff0c;获取到的scope是空数组 <el-table-column label"页面元素" show-o…