首页 > 其他分享 >SurroundOcc_ Multi-Camera 3D Occupancy Prediction for Autonomous Driving

SurroundOcc_ Multi-Camera 3D Occupancy Prediction for Autonomous Driving

时间:2024-11-15 18:19:05浏览次数:1  
标签:Multi Driving feature occupancy Prediction SurroundOcc 点云 times 3D

SurroundOcc: Multi-Camera 3D Occupancy Prediction for Autonomous Driving

Zotero

Abstract

3D scene understanding plays a vital role in vision-based autonomous driving. While most existing methods focus on 3D object detection, they have difficulty describing real-world objects of arbitrary shapes and infinite classes. Towards a more comprehensive perception of a 3D scene, in this paper, we propose a SurroundOcc method to predict the 3D occupancy with multi-camera images. We first extract multi-scale features for each image and adopt spatial 2D-3D attention to lift them to the 3D volume space. Then we apply 3D convolutions to progressively upsample the volume features and impose supervision on multiple levels. To obtain dense occupancy prediction, we design a pipeline to generate dense occupancy ground truth without expansive occupancy annotations. Specifically, we fuse multi-frame LiDAR scans of dynamic objects and static scenes separately. Then we adopt Poisson Reconstruction to fill the holes and voxelize the mesh to get dense occupancy labels. Extensive experiments on nuScenes and SemanticKITTI datasets demonstrate the superiority of our method. Code and dataset are available at https://github.com/weiyithu/SurroundOcc

Comments

  1. 网络可以根据周围的语义信息预测出被遮挡的区域,深度估计无法做到这一点

Q&A

1. 可以解决通用类别检测吗?

Semantic occupancy
3D scene reconstruction
如果只是预测占据的话,也许可以

2.2DTo3D 怎样做的

image-20240408142420599|429
现有的 2DTo3D ,不同视角的图像对于最终得到的 3Dfeature 贡献是平等的,但这样是不合理的,因为在有些 3D 位置处,一些视角的图像是被严重遮挡的,为了解决这个问题,SurroundOcc 使用 cross-view attention 来融合多视角特征。
利用相机内外参将 3D reference points 投影到 2D, 使用 deformable attentionquery points 并聚合信息。
BEV query 不同,使用 3D query 可以更好的保留立体信息,如上图所示,BEV query 是在每一个 BEV grid 中预设很多 3D reference points ,从 2D 中得到 feature 然后得到 grid-feature, 3D query 是在每一个 voxel 中设置 3D reference points ,得到 voxel-feature.

熟悉 Transformer 后再看
image-20240408173758931|498

3. 怎样获取真值的?

image-20240408161525128
image-20240408165952390|429

3.1 多帧拼接

  1. 对于每一帧点云,根据 3D object labelbbox 把可移动的物体点云切出来,\(P=P_s+P_{move}\)
  2. 便历场景中的每一帧,将静态点云和动态点云分别放在两个集合中,通过 ego_pose 和标定参数,将它们的坐标转换到全局坐标系下,得到静态场景和动态目标点云结合:\(P_{ss}=\{P_{ss}^1,P_{ss}^2,...,P_{ss}^n\}\) 和 \(P_{os}=\{P_{os}^1,P_{os}^2,...,P_{os}^m\}\) n 表示帧数,m 表示动态障碍物个数
  3. 静态点云可以直接拼在一起,动态障碍物根据标注 id 将点云拼接在一起
  4. 根据当前帧的 ego_pose 将拼接好的静态点云转移到当前帧,动态障碍物根据 id 使用拼接好的点云替代

3.2 使用泊松重建致密化

尽管 3.1 得到的真值已经很致密了,但由于 lidar 的扫描特性,难免有空洞,并且数据分布不均匀。为了解决这个问题:

  1. 在局部邻域内,根据空间分布计算法向量
  2. 将带有法向量的点云 \(P\) 输入泊松表面重建,得到三角形网格 \(M\),这样会填充 \(P\) 中的空洞并且数据分布均匀
  3. 将 \(M\) 转换成致密的体素 \(V_d\)
    Figure 4 中的结果还是有空洞
    障碍物会被膨胀吗?

3.3 使用最近邻算法打语义标签

  1. 将带有语义标签的点云 \(P\) 体素化得到 \(V_s\)
  2. 便历 \(V_d\) 中每一个被占据的 voxel_d_i, 使用最近邻搜索(NN)找到 \(V_s\) 中最近的 voxel_s_i,将其 label 赋给 voxel_d_i

NN 受到标注噪声影响比较大

4. 怎样训练的?

  1. 输入多视角 \(N\) 图片,首先经过一个 backbone 提取 \(M\) 层多尺度 feature \(X=\{\{X_i^j \}_{i=1}^N \}_{j=1}^M\)
  2. 对于每一个尺度的多视角特征,使用 spatial cross attention 融合多视角特征,得到一个 3D 的立体特征,而不是一个 BEV 特征,最终得到多尺度的 3D volume feature \(\{F_j\in R^{C_j\times H_j\times W_j\times Z_j}\}_{j=1}^M\)
  3. 使用 3D 卷积对立体特征进行上采样并将多尺度的特征拼接在一起(类似 FPN), 使用 3D deconvolution 上采样 \(j-1\) 层的 3D feature \(Y_{j-1}\),并将其和 \(j\) 层特征融合得到第 \(j\) 层的 3D volum features:

\[Y_j=F_j+\text{Deconv}(Y_{j-1}) \]

  1. 不同 level 的 3D volum feature 预测不同分辨率的占据结果 \(V_j=R^{C_j\times H_j\times W_j\times Z_j}\)
  2. 每个级别的占用预测由生成的密集占用 gt 来监督, 损失函数:交叉熵和场景类亲和力损失,每一层占总损失比重不一样,分辨率越小占比越大,\(\alpha_j=\frac{1}{2^j}\)

Pipeline

image-20240407111147811

Performance

标签:Multi,Driving,feature,occupancy,Prediction,SurroundOcc,点云,times,3D
From: https://www.cnblogs.com/swc-blog/p/18548450

相关文章

  • FlashOcc_ Fast and Memory-Efficient Occupancy Prediction via Channel-to-Height P
    FlashOcc:FastandMemory-EfficientOccupancyPredictionviaChannel-to-HeightPluginZoteroAbstractGiventhecapabilityofmitigatingthelong-taildeficienciesandintricate-shapedabsenceprevalentin3Dobjectdetection,occupancypredictionhasbec......
  • UltimateDO_ An Efficient Framework to Marry Occupancy Prediction with 3D Object
    UltimateDO:AnEfficientFrameworktoMarryOccupancyPredictionwith3DObjectDetectionviaChannel2heightZoteroAbstractOccupancyand3Dobjectdetectionarecharacterizedastwostandardtasksinmodernautonomousdrivingsystem.Inordertodeploy......
  • 【Chapter 4】Machine Learning Regression Case_Second hand Car Price Prediction-X
    文章目录一、XGBoostAlgorithm二、ComparisonofalgorithmimplementationbetweenPythoncodeandSentosa_DSMLcommunityedition(1)Datareadingandstatisticalanalysis(2)dataprocessing(三)Featureselectionandcorrelationanalysis(4)Samplepartit......
  • [ABC221H] Count Multiset
    给定\(n,m\)。对于每个\(k=1,2,\dots,n\),求解有多少大小为\(k\)的正整数可重集的元素和为\(k\),且每个元素的出现次数都\(\lem\)。\(m\len\le5000\)。可重集转化成单调不降的序列\(a\)。在通过差分转化成任意非负整数序列\(b\)(需要保证\(b_1>0\))。可重集中......
  • python——多线程、多进程接口测试multiprocessing
    一、线程、进程的区别https://www.zhihu.com/question/25532384二、实际使用场景登录3个用户,然后用这3个用户的session,进行10个进程,或者10个线程的操作(因为登录后没有退出登录,也没有被其他地方登录挤掉账号,所以session在一段时间内有效。且当前系统允许使用同一个session进行多......
  • logstash multi-pipeline
    已知的在一个管道中实现多个独立流的方法是使用条件判断。主要方式是在输入部分通过标签标记(type)事件,然后在过滤器中和输出阶段创建条件分支,对贴有不同标签的事件,应用不同的插件集。这样很容易形成条件地狱。logstash生产使用版本7.9.x,支持multi-pipeline,通过pipeline配......
  • Single-Agent vs Multi-Agent AI Comparison
    Single-AgentvsMulti-AgentAIComparisonhttps://integrail.ai/blog/single-agent-vs-multi-agent-ai-comparison ChoosingtheRightSystemThechoicebetweensingle-agentandmulti-agentsystemsdependsonthespecificrequirementsofyourproject:ForS......
  • Mit6.S081笔记Lab7: Multithreading 多线程
    课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/thread.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/threadxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相......
  • 《VATT: Transformers for Multimodal Self-Supervised Learning from Raw Video, Aud
    文章汉化系列目录文章目录文章汉化系列目录摘要1引言2相关工作2.1Vision中的Transformer2.2自监督学习3方法3.1标记化与位置编码3.1.1DropToken3.2Transformer架构3.3公共空间投影3.4多模态对比学习4实验4.1实验设置4.2结果4.2.1视频动作识别的微调4.2......
  • set 、multiset、unordered_set 和 map 、multimap、unordered_map
    序列式容器:比如:vector、list、deque、forward_list(C++11)等因为其底层为线性序列的数据结构,里面存储的是元素本身。关联式容器:比如(树形结构的关联式容器):map、set、multimap、multiset等也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,value>结构的键值对,......