使用OpenPCDet训练与测试多传感器融合模型BEVFusion,OPenPCdet代码架构介绍

引言

在自动驾驶领域,多传感器融合技术是一种常见的方法,用于提高感知系统的准确性和鲁棒性。其中,BevFusion是一种流行的融合方法,可以将来自不同传感器的数据进行融合,生成具有丰富信息的鸟瞰图(BEV)表示。在本文中,我们将介绍如何使用OpenPCdet框架训练和测试多传感器融合BevFusion

环境搭建与数据准备
  1. 安装OpenPCDet: 确标Python环境,确保安装PyTorch及OpenPCDet。克隆仓库后,执行依赖安装。

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

  2. nuScenes数据集: 从官方网站下载数据集,包含LiDAR、相机图像、雷达等多模态数据,为训练和评估准备。存放到相应的路径。

​        参考:nuscenes生成数据信息info

模型训练
#单个GPU
python train.py --cfg_file ./cfgs/nuscenes_models/bevfusion.yaml
#多GPU
sh scripts/dist_train.sh 3 --cfg_file ./cfgs/nuscenes_models/bevfusion.yaml
模型测试
python test.py --cfg_file ./cfgs/nuscenes_models/bevfusion.yaml --batch_size 4 --ckpt ../checkpoints_office/cbgs_bevfusion.pth
mAP: 0.5754
mATE: 0.3975
mASE: 0.4431
mAOE: 0.4555
mAVE: 0.4208
mAAE: 0.3252
NDS: 0.5835
Eval time: 2.6s

Per-class results:
Object Class    AP    ATE    ASE    AOE    AVE    AAE
car    0.920    0.165    0.157    0.090    0.112    0.068
truck    0.778    0.144    0.149    0.017    0.104    0.011
bus    0.995    0.152    0.069    0.028    0.540    0.395
trailer    0.000    1.000    1.000    1.000    1.000    1.000
construction_vehicle    0.000    1.000    1.000    1.000    1.000    1.000
pedestrian    0.931    0.120    0.252    0.298    0.204    0.126
motorcycle    0.690    0.185    0.256    0.342    0.051    0.000
bicycle    0.535    0.153    0.197    0.324    0.355    0.000
traffic_cone    0.906    0.055    0.351    nan    nan    nan
barrier    0.000    1.000    1.000    1.000    nan    nan
2024-06-07 17:03:17,225   INFO  ----------------Nuscene detection_cvpr_2019 results-----------------
***car error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.17, 0.16, 0.09, 0.11, 0.07 | 85.35, 92.91, 94.20, 95.42 | mean AP: 0.9197057440961336
***truck error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.14, 0.15, 0.02, 0.10, 0.01 | 75.16, 78.18, 78.18, 79.76 | mean AP: 0.7781960247370747
***construction_vehicle error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
1.00, 1.00, 1.00, 1.00, 1.00 | 0.00, 0.00, 0.00, 0.00 | mean AP: 0.0
***bus error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.15, 0.07, 0.03, 0.54, 0.40 | 99.53, 99.53, 99.53, 99.53 | mean AP: 0.9953412532028887
***trailer error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
1.00, 1.00, 1.00, 1.00, 1.00 | 0.00, 0.00, 0.00, 0.00 | mean AP: 0.0
***barrier error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
1.00, 1.00, 1.00, nan, nan | 0.00, 0.00, 0.00, 0.00 | mean AP: 0.0
***motorcycle error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.18, 0.26, 0.34, 0.05, 0.00 | 64.87, 68.47, 70.18, 72.33 | mean AP: 0.6896328768856833
***bicycle error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.15, 0.20, 0.32, 0.36, 0.00 | 52.81, 52.81, 52.81, 55.62 | mean AP: 0.5350891766510515
***pedestrian error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.12, 0.25, 0.30, 0.20, 0.13 | 91.38, 92.03, 93.15, 95.71 | mean AP: 0.9306973397899039
***traffic_cone error@trans, scale, orient, vel, attr | AP@0.5, 1.0, 2.0, 4.0
0.06, 0.35, nan, nan, nan | 90.58, 90.58, 90.58, 90.58 | mean AP: 0.9057559715637864
--------------average performance-------------
trans_err:     0.3975
scale_err:     0.4431
orient_err:     0.4555
vel_err:     0.4208
attr_err:     0.3252
mAP:     0.5754
NDS:     0.5835

代码结构

OpenPCDet 的代码结构清晰,主要由以下几个部分组成:

OpenPCDet
├── cfgs                  # 配置文件目录
├── data                  # 数据处理和加载相关代码
├── pcdet                 # 核心库代码
│   ├── datasets          # 数据集相关代码
│   ├── models            # 模型相关代码
│   ├── ops               # 常用操作实现(如 3D 点云操作)
│   ├── utils             # 工具函数和类
├── tools                 # 训练、测试、评估和可视化的脚本
├── scripts               # 辅助脚本(如多 GPU 训练脚本)
├── README.md             # 项目简介和使用说明

具体组成如何:

cfgs
  • cfgs 目录包含各种模型和数据集的配置文件。这些配置文件定义了模型架构、训练参数、数据处理流程等。配置文件通常采用 YAML 格式,便于阅读和修改。

data

data 目录包含数据处理和加载相关代码。主要包括数据集的转换脚本和数据加载器。不同的数据集(如 KITTI、nuScenes)通常有对应的转换脚本,用于将原始数据转换为 OpenPCDet 可用的格式。

pcdet

pcdet 是核心库目录,包含以下子目录:

datasets

datasets 目录包含各种数据集的实现,包括数据加载、预处理和增强等。每个数据集通常有对应的类来处理数据集特有的格式和要求。

  • data_processor: 包含数据预处理模块,例如点云特征提取、数据增强、数据格式转换等。
  • dataset: 包含数据集类,负责加载和预处理数据集,并生成训练和评估所需的数据批。
  • utils: 包含一些数据集相关的工具函数,例如数据集划分、数据集统计等。

model

models 目录包含各种 3D 目标检测模型的实现。每个模型通常由多个模块组成,如 backbone(骨干网络)、neck(中间层)、head(检测头)等。这些模块可以根据需要进行组合和配置。

  • backbone: 包含骨干网络模块,例如 PointNet、PointNet++、VoxelNet 等,负责提取点云特征。
  • head: 包含头部网络模块,例如 SECOND Head、PointPillar Head 等,负责预测目标框、类别和朝向角等。
  • post_processing: 包含后处理模块,例如 NMS (非极大值抑制) 等,用于筛选和合并目标框。
  • utils: 包含一些模型相关的工具函数,例如损失函数计算、指标计算等。

tools

  • train: 包含模型训练工具,例如训练脚本、训练器类等,负责模型训练流程控制。
  • test: 包含模型评估工具,例如评估脚本、评估器类等,负责模型评估流程控制。
  • visualize: 包含模型可视化工具,例如可视化脚本、可视化器类等,负责模型可视化展示。
  • scripts: 包含一些常用的脚本文件,例如数据集划分脚本、模型训练脚本等。

scripts

  • dataset_converters: 包含数据集转换脚本,例如将原始数据集转换为 OpenPCDet 支持的格式。
  • data_split: 包含数据集划分脚本,例如将数据集划分为训练集、验证集和测试集。
  • train: 包含模型训练脚本,例如启动训练流程、保存训练模型等。
  • test: 包含模型评估脚本,例如启动评估流程、生成评估结果等。

总结

OpenPCDet 的代码结构清晰且模块化,每个部分都承担着不同的功能,协同工作完成 3D 目标检测任务。了解 OpenPCDet 的代码结构有助于更好地理解其工作原理和进行二次开发。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年最新Microsoft Edge关闭自动更新的方法分享

这里写自定义目录标题 打开【服务】 打开【服务】 windows中搜索服务,如下图: 打开服务界面,找到“Microsoft Edge Update Service (edgeupdate)” 及 “Microsoft Edge Update Service (edgeupdatem)” 两个服务,设置为禁用

力扣96 不同的二叉搜索树 Java版本

文章目录 题目描述代码 题目描述 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5 示例 2: 输入…

MYTED | TED100篇打卡总结 辅助学习网站使用说明

文章目录 📚背景🐇timeline🐇版本记录🐇产出小结 📚功能说明🐇左侧🐇中间🐇右侧 📚背景 🐇timeline 在一个平常的下午,一次平常的桌面整理&#…

Linux☞进程控制

在终端执行命令时,Linux会建立进程,程序执行完,进程会被终止;Linux是一个多任务的OS,允许多个进程并发运行; Linxu中启动进程的两种途径: ①手动启动(前台进程(命令gedit)...后台进程(命令‘&’)) ②…

How to: Build a Custom End-User Skin Selector

This section explains how to populate a ComboBoxEdit control with DevExpress skin items. 本节介绍如何使用DevExpress皮肤项填充ComboBoxEdit控件。 To populate a combo box editor, iterate through the SkinManager.Skins collection, which returns all currently a…

搜索引擎优化服务如何寻找?

首先你要了解搜索引擎优化,也就是seo具体是什么,要做些什么,然后就是确定你自身业务的需求,是要特定的关键词排名,还是整体网站流量的提升,还是想要优化目前的网站 接下来你就可以正式的寻找真正能帮助到你…

详解大厂实时数仓建设V4.0

一、实时数仓建设背景 1. 实时需求日趋迫切 目前各大公司的产品需求和内部决策对于数据实时性的要求越来越迫切,需要实时数仓的能力来赋能。传统离线数仓的数据时效性是 T1,调度频率以天为单位,无法支撑实时场景的数据需求。即使能将调度频…

【Linux】进程间通信之匿名管道

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

【启程Golang之旅】让文件操作变得简单

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…

【python解决】查询报%d format: a number is required, not str问题

【Python解决】查询报%d format: a number is required, not str问题 在Python中,字符串格式化是一种常见的操作,用于创建包含变量的字符串。如果你在使用%操作符进行格式化时遇到了%d format: a number is required, not str的错误,这意味着…

计算机缺失msvcp100.dll如何解决?教你5种简单高效的修复方法

在现代科技发展的时代,计算机已经成为我们生活和工作中不可或缺的工具。然而,在使用计算机的过程中,我们常常会遇到各种问题和困扰。其中之一就是计算机找不到msvcp100.dll文件。这个问题可能会给我们的生活和工作带来很多不便,下…

插入排序和希尔排序详解

插入排序详见:点这里 希尔排序(Shells Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。其是基于插入排序改进而来的。 希尔排序大致分为两步预排序和插入排序两大步。 预排序是将变量分为 n…

Docker大学生看了都会系列(八、Dokcerfile部署go项目)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 第三章 Docker常用命令 第四章 常用命令实战 第五章 Docker镜像详解 第六章 Docker容器数据卷 第七章 Dockerfile详解 第八章 Dokcerfile部署go项目 文章目录 一、前言二、环…

【Vue】面经基础版-案例效果分析

面经效果演示 功能分析 通过演示效果发现,主要的功能页面有两个,一个是列表页,一个是详情页,并且在列表页点击时可以跳转到详情页底部导航可以来回切换,并且切换时,只有上面的主题内容在动态渲染 实现思路…

【Vue】练习-Vuex中的值和组件中的input双向绑定

目标 实时输入&#xff0c;实时更新&#xff0c;巩固 mutations 传参语法 实现步骤 代码示例 App.vue <input :value"count" input"handleInput" type"text"> <script>export default {methods: {handleInput (e) {// 1. 实时获取…

【学习笔记】Windows GDI绘图(十)Graphics详解(中)

文章目录 Graphics的方法AddMetafileComment添加注释BeginContainer和EndContainer新建、还原图形容器不指定指定源与目标矩形指定源与目标矩形 Clear清空并填充指定颜色CopyFromScreen截图CopyPixelOperation DrawImage绘制图像DrawImage的GraphicsDrawImageAbort回调ExcludeC…

NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload

目录 [NISACTF 2022]popchains [NISACTF 2022]level-up [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [GXYCTF 2019]BabyUpload 今日总结&#xff1a; [NISACTF 2022]popchains 审计可以构造pop链的代码 <php class Road_is_Long{public $…

桑基图Cannot set properties of undefined (setting ‘dataIndex‘)

前端写桑基图的时候碰到以上bug 原因是&#xff1a; 桑基图中的name值有重复的&#xff0c;把重复的name值去掉就好了&#xff0c;或者如果name排查太麻烦&#xff0c;可以用唯一id作为name,增加些字段&#xff0c;展示时用fomatter的方式 参照https://www.cnblogs.com/lempe…

详解FedAvg:联邦学习的开山之作

FedAvg&#xff1a;2017年 开山之作 论文地址&#xff1a;https://proceedings.mlr.press/v54/mcmahan17a/mcmahan17a.pdf 源码地址&#xff1a;https://github.com/shaoxiongji/federated-learning 针对的问题&#xff1a;移动设备中有大量的数据&#xff0c;但显然我们不能收…

GPT-4o仅排第二!北大港大等6所高校联手,发布权威多模态大模型榜单!

多模态大模型视频分析能力榜单出炉&#xff1a; Gemini 1.5 Pro最强&#xff0c;GPT-4o仅排第二&#xff1f; 曾经红极一时的GPT-4V屈居第三。 3.5研究测试&#xff1a;hujiaoai.cn 4研究测试&#xff1a;askmanyai.cn Claude-3研究测试&#xff1a;hiclaude3.com 最近&#…