3D点云目标检测:CT3D解读(未完)

CT3D

  • 一、RPN for 3D Proposal Generation
  • 二、Proposal-to-point Encoding Module
    • 2.1、Proposal-to-point Embedding
    • 2.2、Self-attention Encoding
  • 三、Channel-wise Decoding Module
    • 3.1、Standard Decoding
    • 3.2、Channel-wise Re-weighting
    • 3.3、Channel-wise Decoding Module
  • 四、Detect head and Training Targets
  • 五、训练losses

在这里插入图片描述

一、RPN for 3D Proposal Generation

就是基于单阶段的网络获取box作为Proposal,文章中使用的是Second网络,其他的如pointpillar、centerpoint都可以作为
CT3D的RPN网络。

二、Proposal-to-point Encoding Module

通过以下两个模块精修RPN输出的proposal:
1、将proposal特征映射到点的特征上(下图左)。
2、通过自注意力编码对proposal内点之间的相对关系进行建模来细化点的特征(下图右)。
在这里插入图片描述

2.1、Proposal-to-point Embedding

对于给定的一个proposal,选择ROI区域内的点,ROI区域是一个没有高度限制的圆柱体,然后随机选取ROI范围内的256个点。

  • 首先计算采样点和Proposal中心点的相对坐标, Δ p i c = p i − p c , ∀ p i ∈ N \Delta \boldsymbol{p}_{i}^{c}=\boldsymbol{p}_{i}-\boldsymbol{p}^{c}, \forall \boldsymbol{p}_{i} \in \mathcal{N} Δpic=pipc,piN
  • 然后一个直接的做法是将Proposal的长、宽、高、和旋转角度信息直接拼接到每个点的特征上,即 [ Δ p i c , l c , w c , h c , θ c , f i r ] \left[\Delta \boldsymbol{p}_{i}^{c}, l^{c}, w^{c}, h^{c}, \theta^{c}, f_{i}^{r}\right] [Δpic,lc,wc,hc,θc,fir]。由于Transformer 编码器根据这种几何信息重新定向的效果可能较差,所以这种直接基于尺寸和方向的特征表示对于Proposal的优化帮助可能是有限的。
  • 通过计算采样点和Proposal八个顶点的相对位置, Δ p i j = p i − p j , j = 1 , … , 8 \Delta \boldsymbol{p}_{i}^{j}=\boldsymbol{p}_{i}-\boldsymbol{p}^{j}, j=1, \ldots, 8 Δpij=pipj,j=1,,8 p j {p}^{j} pj是第 j j j个顶点的坐标,这样长、宽、高和角度信息就被重新编码为不同纬度的距离信息。
  • 最后将上述信息合并,并经多一个MLP网络上提升特征纬度。
    f i = A ( [ Δ p i c , Δ p i 1 , … , Δ p i 8 , f i r ] ) ∈ R D \boldsymbol{f}_{i}=\mathcal{A}\left(\left[\Delta \boldsymbol{p}_{i}^{c}, \Delta \boldsymbol{p}_{i}^{1}, \ldots, \Delta \boldsymbol{p}_{i}^{8}, f_{i}^{r}\right]\right) \in \mathbb{R}^{D} fi=A([Δpic,Δpi1,,Δpi8,fir])RD

2.2、Self-attention Encoding

随后将重新编码后的采样点送入多头自注意力层,然后接一个带有残差结构的FFN网络。除了没有位置编码外(在第一步中已经包含了位置信息),这种自注意力编码机制和NLP中的Transofrmer结构几乎一模一样。encoding具体细节略过。

三、Channel-wise Decoding Module

解码器模块是将编码器模块输出的所有点的特征聚合成一个全局特征,表示这个proposal的特征,用来做refine。标准的transformer的解码器的query embedding个数是M,Voxelnext解码器的query embedding的个数是1,主要原因是

  • M个query embedding计算会特别慢,尤其是在Proposals的数量特别多的时候。
  • M个query embedding通常对应M个输出,而目标检测的refine阶段,一个Proposal只对应一个输出。

3.1、Standard Decoding

标准解码策略是用一个D维可学习点向量作为query embedding,用所有点的所有通道来聚合点的特征,得到注意力全中 W W W,每个注意力head的解码权重计算公式如下:
w h ( S ) = σ ( q ^ h K ^ h T D ′ ) , h = 1 , … , H \boldsymbol{w}_{h}^{(S)}=\sigma\left(\frac{\hat{\boldsymbol{q}}_{h} \hat{\mathbf{K}}_{h}^{T}}{\sqrt{D^{\prime}}}\right), h=1, \ldots, H wh(S)=σ(D q^hK^hT),h=1,,H
其中 K h ^ \hat{K_h} Kh^是第h个head的key embedding,是通过编码器的输出投影得到的(其实就是1x1卷积,只是为了改变特征通道数,也可以不改变),size是[N,D]。 q h ^ \hat{q_h} qh^是相应的query embdding,这里就是1个随机生成的D维向量,size是[1,D],然后使用softmax进行归一化,得到解码权重向量,size是[1,N]。文章中给出了这个公式对应图示:
在这里插入图片描述
文章中说的到的解码权重向量是从简单的全局聚合导出的,缺乏全部通道建模,并且给了图展示,其实对照的图和公式不能一下看出来怎么是全局聚合,缺乏通道建模,下面我按照自己的理解方式尝试解释一下:
先看一个自注意力机制的计算过程:
假设原始向量是 X X X的维度是[3,4],即有3个token,每个token的特征通道是4,也可以理解为 X X X是3个点云的集合,每个点云的特征数为4,那一次自注意力机制的计算过程就是:

标准解码的权重向量是从简单的全局聚合计算得到的,缺乏局部通道建模,这对于学习点云的3D表面结构至关重要,因为不同通道通常在点云中表现出很强的几何关系。

3.2、Channel-wise Re-weighting

w h ( C ) = s ⋅ σ ^ ( K ^ h T D ′ ) , h = 1 , … , H \boldsymbol{w}_{h}^{(C)}=\boldsymbol{s} \cdot \hat{\sigma}\left(\frac{\hat{\mathbf{K}}_{h}^{T}}{\sqrt{D^{\prime}}}\right), h=1, \ldots, H wh(C)=sσ^(D K^hT),h=1,,H

3.3、Channel-wise Decoding Module

在这里插入图片描述

四、Detect head and Training Targets

将经过编码-解码模块的输出送入两个FFN网络中,预测得到confidence和相对于输入的Proposal的box残差值。
训练过程中confidence的真值被设置为Proposals和对应的gt的3D IoU值。confidence真值计算公式如下:
c t = min ⁡ ( 1 , max ⁡ ( 0 , I o U − α B α F − α B ) ) c^{t}=\min \left(1, \max \left(0, \frac{\mathrm{IoU}-\alpha_{B}}{\alpha_{F}-\alpha_{B}}\right)\right) ct=min(1,max(0,αFαBIoUαB))

box回归值的真值计算如下:
x t = x g − x c d , y t = y g − y c d , z t = z g − z c h c , l t = log ⁡ ( l g l c ) , w t = log ⁡ ( w g w c ) , h t = log ⁡ ( h g h c ) , θ t = θ g − θ c , \begin{aligned} x^{t} & =\frac{x^{g}-x^{c}}{d}, y^{t}=\frac{y^{g}-y^{c}}{d}, z^{t}=\frac{z^{g}-z^{c}}{h^{c}}, \\ l^{t} & =\log \left(\frac{l^{g}}{l^{c}}\right), w^{t}=\log \left(\frac{w^{g}}{w^{c}}\right), h^{t}=\log \left(\frac{h^{g}}{h^{c}}\right), \\ \theta^{t} & =\theta^{g}-\theta^{c}, \end{aligned} xtltθt=dxgxc,yt=dygyc,zt=hczgzc,=log(lclg),wt=log(wcwg),ht=log(hchg),=θgθc,

五、训练losses

CT3D是端到端的训练策略,包括三个损失,分别是RPN损失、confidence损失、box回归损失。
在这里插入图片描述
confidence损失用的是二元交叉墒计算。
在这里插入图片描述
回归损失使用的是Smooth-L1计算,只有 I o U ≥ α R IoU ≥ α_R IoUαR 的Proposal才会用来计算回归损失。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何充分了解客户需求

如何充分了解客户需求 如何充分了解客户需求,以提供贴心服务? 想要提供超出客户期望的优质服务,首先需要了解他们的需求。通过多种方式收集客户反馈、深入挖掘数据、建立紧密的客户关系,我们可以更好地理解客户需求,…

【Spring】Spring是什么?

文章目录 前言什么是Spring什么是容器什么是 IoC传统程序开发控制反转式程序开发理解Spring IoCDI Spring帮助网站 前言 前面我们学习了 servlet 的相关知识,但是呢?使用 servlet 进行网站的开发步骤还是比较麻烦的,而我们本身程序员就属于是…

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-BiLSTM-Multihead-…

Redis性能压测、监控工具及优化方案

Redis是一款高性能的开源缓存数据库,但是在实际应用中,我们需要对Redis进行性能压测、监控以及优化,以确保其稳定性和高可用性。本文将介绍Redis性能压测、监控工具及优化方案。 01 Redis性能压测 常用的Redis性能压测工具有: …

Redis-Day1基础篇(初识Redis, Redis常见命令, Redis的Java客户端)

Redis-Day1基础篇 初识Redis认识NoSQL认识Redis安装Redis启动RedisRedis客户端 Redis命令数据结构介绍通用命令操作命令StringHashListSetSortedSet Redis的Java客户端客户端对比Jedis客户端Jedis快速入门Jedis连接池 SpringDataRedis客户端SpringDataRedis概述SpringDataRedis…

MySQL进阶知识:锁

目录 前言 全局锁 表级锁 表锁 元数据锁(MDL) 意向锁 行级锁 行锁 行锁演示 间隙锁/临界锁 演示 前言 MySQL中的锁,按照锁的粒度分,分为以下三类 全局锁:锁定数据库中的所有表。表级锁:每次操…

File类

File 概述 File: 路径 IO流: 传输 路径 相对路径, 绝对路径 File File对象就表示一个路径,可以是文件的路径、也可以是文件夹的路径这个路径可以是存在的,也允许是不存在的 构造方法 代码示例: package FileTest1;import java.io.File;public c…

【追求卓越11】算法--二叉树

引导 接下来的几节我们开始介绍非线性的数据结构--树。树的内容比较多也比较复杂。本节,我们只需要了解关于树的一些基本概念。以及再进一步了解树的相关内容--搜索二叉树。该类型二叉树在工作中,是我们常接触的。该节我们介绍关于搜索二叉树的相关操作&…

每日一题(LeetCode)----链表--链表最大孪生和

每日一题(LeetCode)----链表–链表最大孪生和 1.题目&#xff08;2130. 链表最大孪生和&#xff09; 在一个大小为 n 且 n 为 偶数 的链表中&#xff0c;对于 0 < i < (n / 2) - 1 的 i &#xff0c;第 i 个节点&#xff08;下标从 0 开始&#xff09;的孪生节点为第 (n…

广州华锐视点:基于VR元宇宙技术开展法律法规常识在线教学,打破地域和时间限制

随着科技的飞速发展&#xff0c;人类社会正逐渐迈向一个全新的时代——元宇宙。元宇宙是一个虚拟的、数字化的世界&#xff0c;它将现实世界与数字世界紧密相连&#xff0c;为人们提供了一个全新的交流、学习和娱乐平台。在这个充满无限可能的元宇宙中&#xff0c;法律知识同样…

【web】Fastapi自动生成接口文档(Swagger、ReDoc )

简介 FastAPI是流行的Python web框架&#xff0c;适用于开发高吞吐量API和微服务&#xff08;直接支持异步编程&#xff09; FastAPI的优势之一&#xff1a;通过提供高级抽象和自动数据模型转换&#xff0c;简化请求数据的处理&#xff08;用户不需要手动处理原始请求数据&am…

[vue3] 使用 vite 创建vue3项目的详细流程

一、vite介绍 Vite&#xff08;法语意为 “快速的”&#xff0c;发音 /vit/&#xff0c;发音同 “veet”) 是一种新型前端构建工具&#xff0c;能够显著提升前端开发体验&#xff08;热更新、打包构建速度更快&#xff09;。 二、使用vite构建项目 【学习指南】学习新技能最…

VM CentOS7安装ffmpeg

项目中涉及给视频添加水印&#xff0c;使用到了ffmpeg&#xff0c;windows系统可直接使用&#xff0c;Linux需要手动编译完成ffmpeg后才可正常使用。 配置yum源: 备份原repo文件 cd /etc/yum.repos.d/mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.r…

详细解答T-SNE程序中from sklearn.manifold import TSNE的数据设置,包括输入数据,绘制颜色的参数设置,代码复制可用!!

文章目录 前言——TSNE是t-Distributed Stochastic Neighbor Embedding的缩写1、可运行的T-SNE程序2. 实验结果3、针对上述程序我们详细分析T-SNE的使用方法3.1 加载数据3.2 TSNE降维3.3 绘制点3.4 关于颜色设置&#xff0c;颜色使用的标签数据的说明cy 总结 前言——TSNE是t-D…

electron windows robotjs 安装教程

Robotjs 安装 前言第一步 : 安装python第二步 : 安装Visual Studio 2022第三步 : 安装robotjs 前言 robotjs可以控制鼠标键盘&#xff0c;获取屏幕内容&#xff0c;配合electron可做很多自动化操作。windows下配置环境有很多坑&#xff0c;很多文章都太旧了。试了很多次发现了…

【Java程序员面试专栏 专业技能篇】Java SE核心面试指引(三):核心机制策略

关于Java SE部分的核心知识进行一网打尽,包括四部分:基础知识考察、面向对象思想、核心机制策略、Java新特性,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第三部分:核心机制策略,子节点表示追问或同级提问 异常处理 …

软考:2024年软考高级:软件工程

软考&#xff1a;2024年软考高级: 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &#xff08;1…

docker compose搭建渗透测试vulstudy靶场示例

前言 渗透测试&#xff08;Penetration test&#xff09;即网络安全工程师/安全测试工程师/渗透测试工程师通过模拟黑客&#xff0c;在合法授权范围内&#xff0c;通过信息搜集、漏洞挖掘、权限提升等行为&#xff0c;对目标对象进行安全测试&#xff08;或攻击&#xff09;&am…

用Python写一个浏览器集群框架

更多Python学习内容&#xff1a;ipengtao.com 在分布式爬虫和大规模数据采集的场景中&#xff0c;使用浏览器集群是一种有效的方式&#xff0c;可以提高数据采集的速度和效率。本文将介绍如何用Python编写一个简单但强大的浏览器集群框架&#xff0c;以应对需要使用多个浏览器实…

5. 文件属性和目录

5. 文件属性和目录 1. Linux 系统的文件类型1.1 普通文件1.2 目录文件1.3 字符设备文件和块设备文件1.4 符号链接文件1.5 管道文件1.6 套接字文件 2. stat 系统调用2.1 struct stat 结构体2.2 st_mode 变量2.3 struct timespec 结构体 3. fstat 和 lstat 函数3.1 fstat 函数3.2…