【BEV】TPVFormer复现以及原理
创始人
2025-05-30 01:12:30

1. 前言

在环视图像的网络中,常使用鸟瞰图来进行特征提取,尽管比体素表示更加高效,但也会损失部分信息,为了解决这个问题,TPVFormer论文中提出了三个视图来表示三维特征的方法,并且在实验中验证了仅使用图像作为输入,能够与雷达获得相当的分割效果。

本文主要介绍如何在本地运行mini数据集,以及生成对应的视频,后续会对源码进行深入学习。

mini数据集: https://pan.baidu.com/s/1oKvicVacbPFZNtXO7l9t7A?pwd=p4h4 提取码: p4h4

结果可视化:https://www.bilibili.com/video/BV1oX4y1o7FQ/?spm_id_from=333.999.0.0
BEV交流群,v群:Rex1586662742、q群:468713665。

2. 运行

在TPVFormer的仓库中,作者只针对完整的nuscenes数据集制作了 nuscenes_infos_train.pkl、nuscenes_infos_val.pkl,对于学习者来说,通常无法在完整nuscences数据集上进行测试,在后来的咨询下,原作者也是给出了mini数据集的pkl文件,通过下文的链接即可获得。以及liar文件

2.1 运行eval.py

在整理好数据集后,运行下面的指令就可以进行验证了

python eval.py --py-config xxxx --ckpt-path xxxx

直接运行应该会报错,如果报错为 self.table_names 里面没有 “lidarseg”,则需要修改如下内容
将/home/snk/anaconda3/envs/tpv/lib/python3.8/site-packages/nuscenes_devkit-1.1.10-py3.8.egg/nuscenes/nuscenes.py文件中的
self.table_names中添加一个变量 ‘lidarseg’

self.table_names = ['category', 'attribute', 'visibility', 'instance', 'sensor', 'calibrated_sensor','ego_pose', 'log', 'scene', 'sample', 'sample_data', 'sample_annotation', 'map','lidarseg']

同时在附近添加一行代码

self.lidarseg = self.__load_table__('lidarseg')

再次运行

python eval.py --py-config xxxx --ckpt-path xxxx

2.2 vis_scence.py

按照项目中的指示来安装环境可能会有问题,可以按照下面的方式来安装

pip install vtk==9.0.1
pip install mayavi==4.7.3
sudo apt update
sudo apt install xvfb

安装完毕即可运行生成视频,个人生成的视频见下方的链接。

python visualization/vis_scence ... 
python visualization/generate_videos.py

如果报错说pyqt5有问题,就卸载pyqt5

3 论文简介

3.1 原理学习

一般只用俯视图来计算三维特征,而在本文中主要提出了一种表征三维特征的方法,即提出了tri-perspective view representation(TPV),通过三个方向的特征,很容易完成纯视觉的3d分割、3d语义分割等,作者将TPVFormer对标特斯拉的occupancy network。TPVFormer的主要流程如下图所示:
在这里插入图片描述

输入为6张环视图片,通过Image Backbone,可以得到不同尺度的特征层,多尺度特征层目前应用十分广泛。再通过TPVFormer模块可以获得TPV特征,最终将三个方向特聚合在[100,100,8]的体素中,每个体素特征是由三个方向的特征相加得到。在训练时,使用真实Lidar来监督,在预测时,可以输出稠密的体素特征。

img_feats = self.extract_img_feat(img=img, use_grid_mask=use_grid_mask) // 提取多尺度特征
outs = self.tpv_head(img_feats, img_metas)  # [1, 10000, 256]、 [1, 800, 256]、[1, 800, 256] 三个方向的BEV特征
outs = self.tpv_aggregator(outs, points)   # 分割结果

为何要提出三个方向的特征图,论文通过下图来进行说明:
在这里插入图片描述
如果直接用Voxel来表示三维特征,那么会极大的增加计算量,而直接用BEV特征会损失高度上的信息,而TPV在前面两者之间进行了折中处理,在保留不同视图特征的同时,极大的减少了计算量。因此,如何得到TPV特征是本文的重点。
在这里插入图片描述

上图即第一张图的补充版本,主要看后半段,TPVFormer可以分为Cross-Attention和HyBird-Attention,其中Cross-Attention就是在不同尺度上的特征层做self-atten,HyBird-Attention是TPV三个特征之间做self-atten,且全部使用deformable transformer来减少计算量。通过TPVFormer之后,就得到了TPV特征。通过TPV特征,即可获得任意一个Voexl在3D空间中的特征,然后利用分割头即可对其分类,以达到Occupancy的效果。

3.2 结果

在这里插入图片描述

4、总结

本文介绍了如何在本地进行TPVFormer的运行,对论文中的原理图片进行了学习,主要是学习到了文章中是如何进行TPV特征提取,以及如何使用TPV特征,文章的代码十分友好,后续会继续对源码进行学习。

相关内容

热门资讯

HTML5新增 系列文章目录 前端系列文章——传送门 HTML系列文章——传送门 文章目录系列文章目录什么是 HT...
Spring事务管理,xml和... 目标:熟悉事务管理的核心接口,能够说出它的3个核心接口及内容 sprin...
潮汐车道可以掉头吗(潮汐车道可... 今天给各位分享潮汐车道可以掉头吗的知识,其中也会对潮汐车道可以拐弯吗进行解释,如果能碰巧解决你现在面...
叶克膜是什么(叶克膜是什么药物... 本篇文章极速百科给大家谈谈叶克膜是什么,以及叶克膜是什么药物对应的知识点,希望对各位有所帮助,不要忘...
二手雪佛兰迈锐宝2013款价格... 本篇文章极速百科给大家谈谈二手雪佛兰迈锐宝2013款价格多少,以及二手雪佛兰迈锐宝2013款价格多少...
爬山是什么意思网络用语(网络语... 本篇文章极速百科给大家谈谈爬山是什么意思网络用语,以及网络语言爬山是什么意思?对应的知识点,希望对各...
企业网盘的优势到底在哪里? 归根结底,企业网盘作为一个功能型产品,比之普通的个人网盘其优势到底在哪里...
一万的电动四轮车(一万的电动四... 今天给各位分享一万的电动四轮车的知识,其中也会对一万的电动四轮车电油两用进行解释,如果能碰巧解决你现...
阳历是什么(阳历是什么历是公历... 本篇文章极速百科给大家谈谈阳历是什么,以及阳历是什么历是公历还是农历对应的知识点,希望对各位有所帮助...
艾瑞泽5e怎么样-车主点评-真... 本篇文章极速百科给大家谈谈艾瑞泽5e怎么样-车主点评-真实评价-口碑,以及艾瑞泽5e2017款对应的...
庚寅年是哪一年(清朝庚寅年是哪... 本篇文章极速百科给大家谈谈庚寅年是哪一年,以及清朝庚寅年是哪一年对应的知识点,希望对各位有所帮助,不...
Django从0到视图开发实战 Djanogo框架特点 Django 是一个全栈web框架功能完善,要素齐全完善的文档...
依赖注入~ 依赖注入之setter注入: 依赖注入是IOC具体的一种实现方式, 这是...
2012款菲亚特菲跃怎么样(2... 今天给各位分享2012款菲亚特菲跃怎么样的知识,其中也会对2013款菲亚特菲跃进行解释,如果能碰巧解...
雪弗兰赛欧油耗怎么样,新赛欧的... 今天给各位分享雪弗兰赛欧油耗怎么样,新赛欧的真实油耗多少的知识,其中也会对雪佛兰赛欧真实油耗多少进行...
有哪些水生动物(有哪些水生动物... 本篇文章极速百科给大家谈谈有哪些水生动物,以及有哪些水生动物有特别之处对应的知识点,希望对各位有所帮...
立冬的寓意是什么(立冬有什么寓... 本篇文章极速百科给大家谈谈立冬的寓意是什么,以及立冬有什么寓意对应的知识点,希望对各位有所帮助,不要...
14 elf 文件执行的流程 前言 这里我们来探讨一下 elf 文件的执行流程  当然 这也是我很久以前 就想了解的东西了  不过...
假如用CSS来逆向推理视觉设计... 最近几个月都在忙乎自己的产品,活生生体验了一把需求-设计-前端开发集成式累成狗的节奏&...
如何计算运行时间(即计算时间复... 一般法则 for循环 一次for循环的运行时间至多是该for循环内语句(包括测试&#x...
信宜说什么话(广东信宜说什么方... 本篇文章极速百科给大家谈谈信宜说什么话,以及广东信宜说什么方言对应的知识点,希望对各位有所帮助,不要...
煮熟的螃蟹怎么保存(煮熟的螃蟹... 今天给各位分享煮熟的螃蟹怎么保存的知识,其中也会对煮熟的螃蟹怎么保存合适进行解释,如果能碰巧解决你现...
东西南北无弯路是什么字(东西北... 本篇文章极速百科给大家谈谈东西南北无弯路是什么字,以及东西北无路打一地名对应的知识点,希望对各位有所...
俄罗斯火箭(俄罗斯火箭炮射程)... 本篇文章极速百科给大家谈谈俄罗斯火箭,以及俄罗斯火箭炮射程对应的知识点,希望对各位有所帮助,不要忘了...
“国产版ChatGPT”文心一... 文章目录前言实验结果一、文学创作问题1 :《三体》的作者是哪里人?问题2:...
OWIN+ASP.NET We... 1、创建一个WebAPI项目,在Visual Studio 中选择这个 2、生成的目...
layui框架学习(15:表单...   上一篇文件介绍了Layui中表单的大致结构,本文开始学习表单中与几种输入元素相关的...
sonywh-1000xm3(... 本篇文章极速百科给大家谈谈sonywh-1000xm3,以及sonywh1000xm3蓝牙耳机怎么配...
务实派后来者居上昂科威和柯迪亚... 本篇文章极速百科给大家谈谈务实派后来者居上昂科威和柯迪亚克哪个好,以及昂科威与柯迪亚克谁好柯迪亚克图...
september怎么读(20... 今天给各位分享september怎么读的知识,其中也会对20thseptember怎么读进行解释,如...