【BEV】TPVFormer复现以及原理

这篇具有很好参考价值的文章主要介绍了【BEV】TPVFormer复现以及原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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的主要流程如下图所示:
【BEV】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)   # 分割结果

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

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

3.2 结果

【BEV】TPVFormer复现以及原理

4、总结

本文介绍了如何在本地进行TPVFormer的运行,对论文中的原理图片进行了学习,主要是学习到了文章中是如何进行TPV特征提取,以及如何使用TPV特征,文章的代码十分友好,后续会继续对源码进行学习。文章来源地址https://www.toymoban.com/news/detail-431607.html

到了这里,关于【BEV】TPVFormer复现以及原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全】CVE漏洞分析以及复现

    漏洞详情 Shiro 在路径控制的时候,未能对传入的 url 编码进行 decode 解码,导致攻击者可以绕过过滤器,访问被过滤的路径。 漏洞影响版本 Shiro 1.0.0-incubating 对应 Maven Repo 里面也有 【一一帮助安全学习,所有资源获取一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全

    2024年02月06日
    浏览(49)
  • [BEV]学习笔记之BEVDepth(原理+代码)

    1、前言 继lift-splat-shoot之后,纯视觉BEV感知又有了新的进展,如旷视科技、华中理工和西安交大提出来的BEVDepth。本文首先会对BEVDepth方法进行简要说明,后面会结合阅读代码过程中的理解对整个流程进行详细的说明,尤其是voxel_pooling的实现。 repo :https://github.com/Megvii-BaseDet

    2024年02月02日
    浏览(44)
  • 复现图神经网络(GNN)论文的过程以及PyTorch与TensorFlow对比学习

    复现图神经网络(GNN)论文的过程通常包括以下几个步骤: 一、理解论文内容:首先彻底理解论文,包括其理论基础、模型架构、使用的数据集、实验设置和得到的结果。 二、获取或准备数据集:根据论文中描述的实验,获取相应的数据集。如果论文中使用的是公开数据集

    2024年01月20日
    浏览(56)
  • 【BEV】学习笔记之FastBEV(原理+代码注释)

    1、前言 BEV模型部署一直是难以解决的问题,在车载芯片上运行要占用大量计算资源,为此FastBEV的作者提出了更加轻量级的方法,不需要transformer来提取BEV特征,仅使用卷积网络来完成,简单而有效。本文将会记录学习过程中的一些知识点,包括如果在本地运行、测试、随后

    2024年02月09日
    浏览(73)
  • [BEV] 学习笔记之BEVDet(原理+代码解析)

    前言 基于LSS的成功,鉴智机器人提出了BEVDet,目前来到了2.0版本,在nuscences排行榜中以mAP=0.586暂列第一名。本文将对BEVDet的原理进行简要说明,然后结合代码对BEVDet进深度解析。 repo: https://github.com/HuangJunJie2017/BEVDet paper:https://arxiv.org/abs/2211.17111 欢迎进入BEV感知交流群,一起

    2024年02月05日
    浏览(47)
  • AHD同轴摄像头接入电脑USB录制视频的方法,AHD转USB,AI图像算法(ADAS\DMS\360环视\BSD\人脸识别),图像接入电脑处理

            在图像算法训练时,有时候需要接入电脑进行算法调试和处理,很多摄像头是AHD同轴信号,例如安防和汽车后装市场很多摄像头都是AHD同轴的接口,而电脑没有可以接入同轴的接口,所以需要转换成电脑可以接入的接口才可以将摄像头接入电脑,而USB绝对是最常用

    2024年02月09日
    浏览(138)
  • 深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现

    DW与PW计算量 普通卷积计算量 计算量对比 因此理论上普通卷积是DW+PW卷积的8到9倍 Residual blok与Inverted residual block对比: Residual blok :先采用1 x 1的卷积核来对特征矩阵进行压缩,减少输入特征矩阵的channel,再通过3 x 3的卷积核进行特征处理,再采用1 x 1的卷积核来扩充channel维

    2024年02月01日
    浏览(44)
  • 3D目标检测数据集 KITTI(标签格式解析、点云转图像、点云转BEV)

    本文介绍在3D目标检测中,理解和使用KITTI 数据集,包括KITTI 的基本情况、下载数据集、标签格式解析、3D框可视化、点云转图像、画BEV鸟瞰图等,并配有实现代码。 目录  1、KITTI数据集3D框可视化 2、KITTI 3D数据集 3、下载数据集 4、标签格式 5、标定参数解析 6、点云数据--投

    2024年02月09日
    浏览(45)
  • 《数字图像处理-OpenCV/Python》连载(1)前言

    本书京东优惠购书链接:https://item.jd.com/14098452.html 写作背景 编写本书的初衷,源自作者学习数字图像处理的经历。 在创新实验班开设的专业创新教育课程中,我选择的是数字图像处理方向。老师向我推荐的教材是冈萨雷斯的《数字图像处理》。学习的开始阶段非常困难。教

    2024年02月11日
    浏览(65)
  • 【C++初阶(一)】学习前言以及命名空间

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C++初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 对于复杂的问题,规模较大的程序 需要高度的抽象和建模时 C语言不再适合应用于这种场景 于是在1982年 C++创始人 Bjarne Stroustrup 在C语言

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包