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

3D点云目标检测:Centerformer训练waymo数据集

一、环境准备

项目地址:centerformer

1.0、基础环境

python == 3.8.0
torch == 1.9.1+cu111
waymo-open-dataset-tf-2-6-0 == 1.4.9
spconv ==1.2.1
其余按照requirement.txt里安装就行

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

由于我本人是在docker容器中训练的,里面的opencv-python和opencv-contrib-python需要替换成headless版本的。
直接pip 安装即可,

pip install opencv-python-headless opencv-contrib-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple


注意:centerformer项目作者提到除了spconv必须使用1.2.1版本,对其他包的版本没有特别需求,例如我在python==3.6和torch==1.6的环境下也能正常训练centerformer模型
spconv1.2.1的编译方法可以看我以前的文章Ubuntu安装spconv1.2.1,我在编译的时候只加了一句#include <iostream>就通过了。

编译完直接pip install 这个文件就可以了。

其他

protobuf版本不能太高,我一开始默认装的是4.24.2,降低到3.20.1版本就可以了

pip install protobuf==3.20.1

1.1、编译

bash setup.sh

执行setup前可以在下图所示位置处添加上–user

这样做的原因是可以将编译后的MultiScaleDeformableAttention添加到python环境变量中,这样这个包可以被直接import,(python3.6环境下不加也可以)

export PYTHONPATH

在~/.bashrc文件中添加 export PYTHONPATH=“${PYTHONPATH}:PATH_TO_CENTERFORMER”,PATH_TO_CENTERFORMER是你自己的centerformer文件夹的路径。


添加后执行source ~/.bashrc令其生效。
测试一下,可以看到centerformer的核心组建 det3d能被import。表明整个环境都搭建好了。

1.2、存在的问题

1)import tensorflow错误

2)import spconv错误
导入spconv时提示找不到libcuhash.so文件
在这里插入图片描述
通过find 命令查找这个文件

find / -name libcuhash.so


将该文件所在的路径加入环境变量中

vim ~/.bashrc


保存退出后执行 source使其生效。

source ~/.bashrc

重新导入测试

其他:我遇到的一般都是python库版本太高的问题。

二、数据集准备

waymo数据集存储格式时.tfrecord,一个文件包含200帧连续数据,分别放在tfrecord_training,tfrecord_validation,tfrecord_testing里
在这里插入图片描述
分别执行下面的命令解出点云和标签信息。

# train set 
CUDA_VISIBLE_DEVICES=-1 python det3d/datasets/waymo/waymo_converter.py --record_path 'WAYMO_DATASET_ROOT/tfrecord_training/*.tfrecord'  --root_path 'WAYMO_DATASET_ROOT/train/'# validation set 
CUDA_VISIBLE_DEVICES=-1 python det3d/datasets/waymo/waymo_converter.py --record_path 'WAYMO_DATASET_ROOT/tfrecord_validation/*.tfrecord'  --root_path 'WAYMO_DATASET_ROOT/val/'# testing set 
CUDA_VISIBLE_DEVICES=-1 python det3d/datasets/waymo/waymo_converter.py --record_path 'WAYMO_DATASET_ROOT/tfrecord_testing/*.tfrecord'  --root_path 'WAYMO_DATASET_ROOT/test/'

train解析后的结果,annos保存的是每一帧的gt信息,lidar保存的是每一帧的点云信息。

建立软连接

mkdir data && cd data
ln -s WAYMO_DATASET_ROOT Waymo

WAYMO_DATASET_ROOT是你自己的数据集的实际路径。
生成info信息

python tools/create_data.py waymo_data_prep --root_path=data/Waymo --split train --nsweeps=1python tools/create_data.py waymo_data_prep --root_path=data/Waymo --split val --nsweeps=1python tools/create_data.py waymo_data_prep --root_path=data/Waymo --split test --nsweeps=1

最终结果

三、训练

4卡

python -m torch.distributed.launch --nproc_per_node=4 ./tools/train.py configs/waymo/voxelnet/waymo_centerformer.py

单卡

python tools/train.py configs/waymo/voxelnet/waymo_centerformer.py

训练输出:
在这里插入图片描述

四、结果

模型训练结束后在work_dir/waymo_centerformer目录下可以看到保存的结果

下一步计算评估指标AP和APH,按照centerformer官方代码的指导,执行以下操作:

python -m torch.distributed.launch --nproc_per_node=4 ./tools/dist_test.py CONFIG_PATH --work_dir work_dirs/CONFIG_NAME --checkpoint work_dirs/CONFIG_NAME/latest.pth 

运行完后在输出目录里生成detection_pred.bin文件。
得到模型精度指标有两种方式,一种是提交到waymo官方网站进行评估,第二种是在本地进行评估。我这里用的是第二种方法。
首先需要将gt信息也转换成.bin文件,执行下面的操作

python det3d/datasets/waymo/waymo_common.py --info_path data/Waymo/infos_val_01sweeps_filter_zero_gt.pkl --result_path data/Waymo/ --gt 

运行完后会在data/waymo文件夹下生成gt_preds.bin文件。

下面需要用到waymo官方提供的工具来计算精度指标,github地址,clone后切换到r1.3分支。


按照这里的教程编译精度评价工具.
先准备好编译所需的基础环境,这里主要是bazel这个工具。

然后执行语句,编译时间特别长,我差不多用了一个多小时,如何能够翻墙应该会很快,编译正确的截图忘记保存了。

bazel test waymo_open_dataset/metrics:all

然后执行

bazel build waymo_open_dataset/metrics/tools/compute_detection_metrics_main

编译正确的输出如下图,bazel-bin/waymo_open_dataset/metrics/tools/compute_detection_metrics_main就是编译得到的检测精度评估工具。

执行:

bazel-bin/waymo_open_dataset/metrics/tools/compute_detection_metrics_main detection_pred.bin gt_preds.bin 

最终结果如下:

相关文章:

3D点云目标检测:Centerformer训练waymo数据集

一、环境准备 项目地址:centerformer 1.0、基础环境 python 3.8.0 torch 1.9.1cu111 waymo-open-dataset-tf-2-6-0 1.4.9 spconv 1.2.1 其余按照requirement.txt里安装就行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt由于我本人是在…...

火山引擎DataLeap推出两款大模型应用: 对话式检索与开发 打破代码语言屏障

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 自上世50年代&#xff0c;以“计算机”作为代表性象征的信息革命开始&#xff0c;社会对于先进生产力的认知便开始逐步更迭——从信息化&#xff08;通常认为是把企…...

windows上配置vscode C/C++代码跳转

windows上配置vscode C/C代码跳转 安装插件 C/C 官方的 C/C 插件&#xff0c;必备的插件&#xff0c;是代码跳转、自动补全、代码大纲显示等功能的基础。 Gtags C/C GNU Global GNU Global除了安装该插件之外&#xff0c;还需要在本地下载安装GNU Global工具。多看下插件…...

【Xilinx】基于MPSoC的OpenAMP实现(一)

【Xilinx】基于MPSoC的OpenAMP实现&#xff08;一&#xff09; 一、开发环境1、开发思路2、下载官方bsp包 二、编译Linux1、配置petalinux环境变量2、创建工程3、进入目录4、设置缓存目录&#xff08;重点&#xff1a;可离线编译&#xff0c;加快编译速度&#xff09;5、配置u-…...

代码随想录算法训练营总结篇|完结撒花

完结撒花&#xff0c;真不敢相信60天坚持下来了。 算法一直是我的超级超级弱项&#xff0c;属于小白中的小白。一开始是想自己刷的&#xff0c;打开leetcode第一题&#xff0c;吼哟好家伙&#xff0c;梦开始的地方直接破碎。之前刷B站的时候就有学习up推荐算法可以看看代码随想…...

uniapp、vue实现滑动拼图验证码

uniapp、vue实现滑动拼图验证码 实际开发工作中&#xff0c;在登陆的时候需要短信验证码&#xff0c;但容易引起爬虫行为&#xff0c;需要用到反爬虫验证码&#xff0c;今天介绍一下拼图验证码&#xff0c;解决验证码反爬虫中的滑动验证码反爬虫。滑动拼图验证码是在滑块验证码…...

【ArcGIS】土地利用变化分析详解(矢量篇)

土地利用变化分析详解-矢量篇 土地利用类型分类1 统计不同土地利用类型的面积/占比1.1 操作步骤Step1&#xff1a;Step2&#xff1a;计算面积Step3&#xff1a;计算占比 2 统计不同区域各类土地利用类型的面积2.1 操作步骤 3 土地利用变化转移矩阵3.1 研究思路3.2 操作步骤 4 分…...

VS2022创建控制台应用程序后没有Main了,如何显示Main?

文章目录 问题描述原因解决方案简单的顶级语句试用计算器 其他文章 问题描述 用VS2022创建一个控制台应用后&#xff0c;没有名称空间和Main函数了&#xff0c;只有一个WriteLine&#xff0c;如下所示。 // See https://aka.ms/new-console-template for more information Co…...

当当网商品详情数据接口

当当网商品详情数据接口可以通过当当网的开放平台获取相关信息。您可以注册当当开放平台账号&#xff0c;并按照要求提交申请获取API接口的调用凭证。获得授权后&#xff0c;您将会收到一组AccessKey和SecretKey。使用编程语言&#xff08;如Java&#xff09;调用API接口&#…...

ultraEdit正则匹配多行(xml用)

在ultraEdit中&#xff0c;我想选取<channel到</channel>之间的多行&#xff08;进行删除&#xff09;。在perl模式下&#xff0c;命令为“<channel[\s\S]?</channel>”。下面是xml文件&#xff1a; <!--This XML file does not appear to have any sty…...

Mac上的utools无法找到本地搜索插件

utools安装地址 utools本地搜索用法 目前本地搜索只在win下&#xff0c;mac无福了 Mac可用cmdspace方法使用聚焦搜索&#xff0c;来搜索本地文件...

win11 administrator 账户运行不提示授权

...

docker部署nginx下日志自动切割方法

前言&#xff1a;nginx采用docker部署&#xff0c;简单方便&#xff0c;但出现一个问题&#xff0c;就是日志没有自动切割&#xff0c;导致access.log 无限增大。如果非docker安装&#xff0c;则nginx的日志默认有切割的&#xff0c;那docker为何没有呢&#xff0c;最后发现&am…...

3D目标检测实战 | 图解KITTI数据集与数据格式

目录 1 数据集简介2 传感器坐标系3 数据集下载与组织4 数据内容说明4.1 矫正文件calib4.2 图像文件image4.3 点云文件velodyne4.4 标签文件label4.5 平面文件plane 1 数据集简介 KITTI数据集是一个广泛应用于自动驾驶和计算机视觉领域的公开数据集。该数据集由德国卡尔斯鲁厄理…...

周界警戒AI算法+视频智能分析在安全生产场景中的应用

长期以来&#xff0c;周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用&#xff0c;通过AI智能检测与视频智能分析技术&#xff0c;现代化的周界安防系统可以做到全天候快速、准确…...

C++中执行shell命令,popen与system的区别

C中执行shell命令&#xff0c;popen与system的区别_c popen_Op_chaos的博客-CSDN博客 2.system system()函数执行过程&#xff1a; 1.fork一个子进程&#xff1b; 2.在子进程中调用exec函数去执行command&#xff1b; 3.在父进程中调用wait去等待子进程结束。 由于system没…...

Flink相关

墨滴社区 用 Flink 取代 Spark Streaming&#xff01;知乎实时数仓架构演进_天池技术圈-阿里云天池 关于flink实时数仓的实际问题_flink datastream 按天,小时写入hdfs_一个写湿的程序猿的博客-CSDN博客 基于 Flink Hudi 的实时数仓在 Shopee 的实践 - 墨天轮...

数据结构题型9-顺序栈

#include <iostream> //引入头文件 using namespace std;typedef int Elemtype;#define Maxsize 10 #define ERROR 0 #define OK 1typedef struct {Elemtype data[Maxsize];int top; }SqStack;void InitStack(SqStack& S) {S.top -1; } bool StackEmpty(SqStack…...

时间复杂度、空间复杂度

一、时间复杂度 1、概念 时间复杂度&#xff1a;计算的是当一个问题量级增加的时间&#xff0c;时间增长的趋势&#xff1b; O&#xff08;大O表示法&#xff09;&#xff1a;渐进的时间复杂度 2、举例 ① 以下 for 循环的时间复杂度&#xff1a;O(1 3n) O(n) 去掉常数…...

C++---多态

多态 前言多态的概念多态的定义及实现多态的构成条件虚函数虚函数的重写虚函数重写的两个例外协变(基类与派生类虚函数返回值类型不同)析构函数的重写 override和final 虚函数的默认参数 抽象基类 前言 在买火车票的时候&#xff0c;如果你是学生&#xff0c;是买半价票&#…...

手把手教你用MATLAB图形放大法找方程根:从画图到定位,解决迭代法初值难题

手把手教你用MATLAB图形放大法找方程根&#xff1a;从画图到定位&#xff0c;解决迭代法初值难题 在数值计算的世界里&#xff0c;寻找方程的根就像在黑暗森林中探险——没有地图的指引&#xff0c;盲目选择起点可能导致算法陷入无限循环或收敛到错误解。而MATLAB的图形放大法&…...

赛事直播预告|高含金量智能车竞赛,邀你逐梦无人驾驶赛道!

简 介&#xff1a; 第二十一届全国大学生智能汽车竞赛创意组"智慧城市Robotaxi挑战赛"即将启动。作为教育部认可的A类国家级学科竞赛&#xff0c;赛事聚焦纯视觉无人驾驶技术&#xff0c;依托百度多模态能力与边缘AI算力&#xff0c;考验参赛者的视觉、语言、执行融合…...

你的动漫图片为什么总是不够清晰?3个步骤让AI帮你还原4K级画质

你的动漫图片为什么总是不够清晰&#xff1f;3个步骤让AI帮你还原4K级画质 【免费下载链接】Real-ESRGAN Real-ESRGAN aims at developing Practical Algorithms for General Image/Video Restoration. 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN 想象一…...

别再死记公式了!图解STM32 PWM生成与频率测量原理(以20Hz/50%占空比方波为例)

图解STM32 PWM核心原理&#xff1a;从水桶模型到实战波形测量 想象一下你正在用漏水的水桶给花园浇水——水桶每滴完500毫升就自动重新加满&#xff0c;而你通过控制水龙头开关的时间比例来调节湿润程度。这恰恰是STM32定时器生成PWM波形的底层逻辑。对于刚接触嵌入式开发的工程…...

PHP主流框架

PHP主流框架概述 PHP作为广泛使用的服务器端脚本语言,拥有多个成熟的开发框架,适用于不同规模和类型的项目。以下是当前主流的PHP框架及其特点: Laravel Laravel是目前最流行的PHP框架之一,以其优雅的语法和丰富的功能著称。它提供了强大的路由系统、ORM(Eloquent)、模…...

手把手教你用Wireshark和VirtualBox日志诊断eNSP错误代码40(保姆级排错流程)

从日志分析到网络诊断&#xff1a;eNSP错误代码40的深度排错指南 当eNSP模拟器弹出"错误代码40"的红色警告时&#xff0c;大多数用户的第一反应是寻找快速解决方案。但真正的网络工程师会告诉你&#xff0c;这个数字背后隐藏着虚拟网络世界的完整故事。本文将带您穿…...

手把手教你用DaVinci Developer和Configurator Pro搞个‘联合作战’环境

实战指南&#xff1a;构建DaVinci工具链协同开发环境 在汽车电子软件开发领域&#xff0c;Vector公司的DaVinci工具链已成为AUTOSAR标准落地的重要支撑。对于需要同时处理软件组件(SWC)设计和ECU配置的团队而言&#xff0c;如何高效协同使用DaVinci Developer和Configurator Pr…...

3分钟学会在Windows上安装安卓应用:APK-Installer完整指南

3分钟学会在Windows上安装安卓应用&#xff1a;APK-Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用&#xff0c;…...

北京UPS不间断电源经销商推荐名录

一、推荐公司概览中伟博信&#xff08;北京&#xff09;电子科技有限公司山特电子&#xff08;深圳&#xff09;有限公司北京办事处施耐德电气&#xff08;中国&#xff09;有限公司北京分公司科华数据股份有限公司北京分公司深圳科士达科技股份有限公司北京子公司二、北京地区…...

告别集群负载:用Docker Compose在外部机器部署Prometheus+Grafana监控K8S(附完整配置文件)

轻量化监控方案&#xff1a;Docker Compose 部署 PrometheusGrafana 监控 Kubernetes 集群 对于资源有限的中小团队或个人开发者来说&#xff0c;将监控系统与业务集群分离是一个明智的选择。传统的 Kubernetes 监控方案通常将 Prometheus 和 Grafana 部署在集群内部&#xff0…...