BEVDistill

news2024/12/27 15:41:33

摘要

将激光雷达检测器纳入多视图 3D 物体检测,在 BEV 空间中统一图像和激光雷达特征,让图像BEV特征自适应学习点云BEV特征。

背景

LiDAR 点可捕获精确的 3D 空间信息,为基于相机的目标检测提供自然指导。鉴于此,最近的相关工作开始探索将点云纳入 3D 目标检测以提高性能。

  • 其中一项工作将每个点投影到图像上以形成深度图标签,然后训练深度估计器以显式提取空间信息。这种范式生成中间产品,即深度预测图,因此引入了额外的计算成本。
  • 另一项工作是将 LiDAR 点投影到图像平面。由于学生模型和教师模型在结构上完全相同,因此可以在该框架下自然地进行特征模仿。虽然它解决了不同模态之间的对齐问题,但它错过了追求基于激光雷达的强大教师的机会,这在知识蒸馏范式中确实很重要。

创新:

(i)引入了软前景引导蒸馏来进行非同质密集特征模仿

(ii)提出了一种稀疏样式的实例蒸馏范式,通过最大化互信息来选择性地监督学生。

相关工作

大多数用于目标检测的知识蒸馏方法侧重于通过强制匹配学生的预测教师的预测来在两个相同类型的检测器之间转移知识。最近的工作发现,模仿特征表示对于检测更有效。一个重要的挑战是确定应从教师模型中提取哪些特征区域。

  • FGFI(2019a)选择被锚框覆盖的特征,其与 GT 的 IoU 大于某个阈值。

  • PGD(2022a)仅关注几个关键的预测区域,使用分类和回归分数的组合作为质量衡量标准。

尽管有大量研究讨论目标检测中的知识蒸馏,但只有少数研究考虑了多模态设置。

  • MonoDistill(2021)将点投影到图像平面中,并应用修改后的基于图像的 3D 检测器作为教师来提取知识。这种范式自然地解决了对齐问题,但是,它错过了追求更强大的基于点的教师模型的机会。

  • LIGA-stereo(2021b)通过使用 SECOND(2018)的中间输出来监督基于视觉的模型的 BEV 表示,从而利用 LiDAR 的信息。

  • UVTR(2022a)提出了一种简单的方法,通过直接规范学生和教师模型之间的体素表示。他们都选择模仿模型中的特征表示,而忽略不同模态之间的差异。

方法分析

BEVDistill框架
1. 基线模型
  • 学生模型:采用基于相机的探测器BEVFormer作为学生模型。它由图像主干特征提取模块、cam2bev 视图转换的空间交叉注意模块和 3D 对象检测的transformer头组成。它也额外提供了一个时间交叉注意模块来感知后续多帧信息以实现更好的预测。
  • 教师模型:选择 Object-DGCNN作为教师模型,用普通的多尺度注意力模块替换了 DGCNN 注意力。首先将 3D 点投射到 BEV 平面上,然后通过基于transformer的标签分配进行一对一的监督。使用 CenterPoint 的预训练模型,并在知识蒸馏过程中修复所有参数。
2. BEVDistill
2.1 密集特征蒸馏

先前的一些工作直接迫使学生模仿老师的特征图并取得显着的性能提升:
L feat = 1 H × W ∑ i = 1 H ∑ j = 1 W ∥ F i j 3 D − F i j 2 D ∥ 2 L_{\text{feat}} = \frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} \left\| F_{ij}^{3D} - F_{ij}^{2D} \right\|_2 Lfeat=H×W1i=1Hj=1W Fij3DFij2D 2

其中:

  • L feat L_{\text{feat}} Lfeat: 表示特征图之间的损失
  • H H H: 特征图的高度
  • W W W: 特征图的宽度
  • F i j 3 D F_{ij}^{3D} Fij3D: 在位置 ( i , j ) (i, j) (i,j) 处的3D特征图的值
  • F i j 2 D F_{ij}^{2D} Fij2D: 在位置 ( i , j ) (i, j) (i,j) 处的2D特征图的值

尽管这种方式通过将两个特征投影到 BEV 平面中消除了视图差异,但不同模态之间仍然存在域差异:图像保存前景和背景区域的像素,但是激光雷达点仅在存在反射光线的物体时才会出现。

区域性3D特征只有在该区域存在点时才有意义,所以需要在有意义的前景区域内进行蒸馏。其次,为了更好的利用前景区域边界信息,引入一种软监督方式。首先,为 BEV 空间中的每个地面实况中心 ( x i , y i ) (xi, yi) (xi,yi) 绘制高斯分布:
w i , x , y = exp ⁡ ( − ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 2 σ i 2 ) w_{i,x,y}=\exp\left(-\frac{(x_i-\hat{x}_i)^2+(y_i-\hat{y}_i)^2}{2\sigma_i^2}\right) wi,x,y=exp(2σi2(xix^i)2+(yiy^i)2)

其中:

  • w i , x , y w_{i,x,y} wi,x,y: 在位置 ( x , y ) (x,y) (x,y) 处第 i i i 个元素的权重
  • x i , y i x_i, y_i xi,yi: 原始坐标值
  • x ^ i , y ^ i \hat{x}_i, \hat{y}_i x^i,y^i: 预测坐标值
  • σ i \sigma_i σi: 表示对象大小标准差(默认设置为 2)

对于同一位置不同 w i , x , y w_{i,x,y} wi,x,y之间的重叠区域,只需取它们的最大值。然后,让学生模型使用前景引导的 W W W 来模仿特征,进行密集特征蒸馏:
L feat = 1 H × W × ∑ m a x ( W i , j ) ∑ i H ∑ i W m a x ( W i j ) ∥ F i j 3 D − F i , j 2 D ∥ 2 L_{\text{feat}} = \frac{1}{H \times W \times \sum max(W_{i,j})} \sum_{i}^{H} \sum_{i}^{W} max(W_{ij})\left\| F_{ij}^{3D} - F_{i,j}^{2D} \right\|_2 Lfeat=H×W×max(Wi,j)1iHiWmax(Wij) Fij3DFi,j2D 2

其中:

  • max ⁡ ( W i j ) \max(W_{ij}) max(Wij): 位置 ( i , j ) (i, j) (i,j) 处的权重的最大值。

这种前景引导的重新权重策略使模型能够专注于教师的前景区域,同时避免模仿背景区域中无用的空 3D 特征。

2.2 稀疏实例蒸馏

BEVDistill 中的学生模型和教师模型都以稀疏预测方式运行,所以需要一个集合到集合的映射来确保实例级蒸馏。

假设教师模型第 i i i 个查询输出的分类和定位预测为 c i T c^T_i ciT b i T b^T_i biT ,而学生可以表示为 c i S c^S_i ciS b i S b^S_i biS ,则可以在输出集之间通过找到使得成本最低的排列 σ ^ \hat{\sigma} σ^,建立教师和学生预测集合之间的对应关系:
σ ^ = arg ⁡ min ⁡ ∑ i N L match ( y i , y ^ i ) \hat {\sigma} = \arg \min \sum_i^N L_{\text{match}}(y_i, \hat {y}_i) σ^=argminiNLmatch(yi,y^i)

L match ( y i , y ^ i ) = − log ⁡ c σ ( i ) S ( c i T ) + ∥ b i T , b σ ( i ) S ∥ 1 L_{\text{match}}(y_i, \hat y_i) = -\log c_{\sigma (i)}^S(c_i^T) + \left\| b_i^T,b_{\sigma (i)}^S \right\|_1 Lmatch(yi,y^i)=logcσ(i)S(ciT)+ biT,bσ(i)S 1

其中:

  • σ ^ \hat{\sigma} σ^: 表示通过优化过程得到的最优参数。
  • L match ( y i , y ^ i ) L_{\text{match}}(y_i, \hat{y}_i) Lmatch(yi,y^i): 损失函数,用于衡量预测值 y ^ i \hat{y}_i y^i 与真实值 y i y_i yi 之间的匹配程度。

在此过程中又发现两个问题会阻碍模型性能提升,第一,并非教师的所有预测都应被同等地视为有价值的线索,因为大多数预测都是分类分数较低的误报。另一方面,虽然分类逻辑可以表示丰富的知识,但当输入数据不同时,它可能不成立。直接提取这些预测会给模型带来很大的噪声并降低性能。

所以将分类得分 c i c_i ci(分类信息)以及预测 $ b_i^{pred} $ 和真实值 $ b_i^{GT} $ 之间的 IoU \text{IoU} IoU 一起考虑,获得质量得分 q i q_i qi
q i = ( c i ) γ ⋅ IoU ( b i G T , b i p r e d ) 1 − γ q_i = (c_i)^{\gamma} \cdot \text{IoU}(b_i^{GT},b_i^{pred})^{1-\gamma} qi=(ci)γIoU(biGT,bipred)1γ
因此,最终的实例级蒸馏可以写为:
L inst = ∑ i N − q i ( α L c l s ( c σ ( i ) S , c i T ) + β L b o x ( b i T , b σ ( i ) S ) ) L_{\text{inst}} = \sum_i^N - q_i \left( \alpha L_{cls}(c_{\sigma(i)}^S,c_i^T) + \beta L_{box}(b_i^T,b_{\sigma(i)}^S) \right) Linst=iNqi(αLcls(cσ(i)S,ciT)+βLbox(biT,bσ(i)S))
其中:

  • L c l s L_{cls} Lcls 是 KL 散度损失
  • L b o x L_{box} Lbox 是的 L1 损失
  • α \alpha α β \beta β 是平衡监督的重新加权因子(默认设置为 1.0 和 0.25)

类别上的预测概率质量函数比起独热标签(one-hot labels)包含了更丰富的信息。这意味着教师模型的输出可能包含了关于类别之间关系更多的信息,而不仅仅是简单的分类标签。但是,预测的概率分布通常是低维的(类别数目的维度),所以只有少量的知识被编码在这些预测中。这在跨模态任务下尤为显著,因为跨模态任务通常涉及到更复杂和结构化的知识表示。

KL散度的一个问题是它将所有维度(或类别)都视为相互独立的,而实际上,在复杂任务中,表示的不同维度通常存在复杂的内在依赖关系。所以选择直接最大化教师模型和学生模型在倒数第二层表示 h S h_S hS h T h_T hT 之间的互信息,从而捕捉到表示之间的高阶依赖关系,而不是简单地考虑单个维度的差异,所以能够更有效地传递复杂和结构化的知识:
I ( h S ; h T ) = KL ( p ( h T , h S ) ∥ μ ( h T ) ν ( h S ) ) I(h^S;h^T) = \text{KL} \left(p(h^T,h^S) \| \mu(h^T)\nu(h^S)\right) I(hS;hT)=KL(p(hT,hS)μ(hT)ν(hS))

其中:

  • p ( h T , h S ) p(h^T, h^S) p(hT,hS) 是联合分布

  • μ ( h T ) , ν ( h S ) \mu(h^T), \nu(h^S) μ(hT),ν(hS)是边际分布

定义一种条件分布 q q q,用来判断两个变量 h T h_T hT h S h_S hS 是否一致。如果一致( η = 1 \eta = 1 η=1),则使用它们的联合分布 p ( h T , h S ) p(h_T, h_S) p(hT,hS);如果不一致( η = 0 \eta = 0 η=0),则使用它们的边缘分布的乘积 μ ( h T ) v ( h S ) \mu(h_T) v(h_S) μ(hT)v(hS)
q ( h T , h S ∣ η = 1 ) = p ( h T , h S ) , q ( h T , h S ∣ η = 0 ) = μ ( h T ) ν ( h S ) q(h^T, h^S \mid \eta = 1) = p(h^T, h^S), \quad q(h^T, h^S \mid \eta = 0) = \mu(h^T) \nu(h^S) q(hT,hSη=1)=p(hT,hS),q(hT,hSη=0)=μ(hT)ν(hS)

根据贝叶斯法则,得到 η = 1 \eta = 1 η=1 的后验概率:

q ( η = 1 ∣ h T , h S ) = p ( h T , h S ) p ( h T , h S ) + μ ( h T ) ν ( h S ) q(\eta = 1 \mid h^T, h^S) = \frac{p(h^T, h^S)}{p(h^T, h^S) + \mu(h^T)\nu(h^S)} q(η=1hT,hS)=p(hT,hS)+μ(hT)ν(hS)p(hT,hS)

两边取对数:

log ⁡ q ( η = 1 ∣ h T , h S ) ≤ log ⁡ p ( h T , h S ) p ( h T , h S ) + μ ( h T ) ν ( h S ) = I ( h T , h S ) \log q(\eta = 1 \mid h^T, h^S) \leq \log \frac{p(h^T, h^S)}{p(h^T, h^S) + \mu(h^T)\nu(h^S)} = I(h^T, h^S) logq(η=1hT,hS)logp(hT,hS)+μ(hT)ν(hS)p(hT,hS)=I(hT,hS)

可以将目标转变为最大化互信息的下界,在没有明确的概率分布形式 q ( η = 1 ∣ h T , h S ) q(\eta = 1 \mid h_T, h_S) q(η=1hT,hS) 的情况下,利用神经网络 g g g 和 NCE 损失来近似这个概率分布:
L cls ( h T , h S ) = E q ( h T , h S ∣ η = 1 ) [ log ⁡ g ( h T , h S ) ] + E q ( h T , h S ∣ η = 0 ) [ log ⁡ ( 1 − g ( h T , h S ) ) ] L_{\text{cls}}(h^T, h^S) = E_{q(h^T,h^S \mid \eta=1)}[\log g(h^T, h^S)] + E_{q(h^T,h^S \mid \eta=0)}[\log \left(1 - g(h^T, h^S)\right)] Lcls(hT,hS)=Eq(hT,hSη=1)[logg(hT,hS)]+Eq(hT,hSη=0)[log(1g(hT,hS))]

最终的稀疏实例蒸馏损失可以表示为:

L inst = ∑ i N − q i ( α L cls ( h i S , h i T ) + β L box ( b i T , b σ ( i ) S ) ) L_{\text{inst}} = \sum_i^N -q_i \left(\alpha L_{\text{cls}}(h^S_i, h^T_i) + \beta L_{\text{box}}(b^T_i, b^S_{\sigma(i)})\right) Linst=iNqi(αLcls(hiS,hiT)+βLbox(biT,bσ(i)S))

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Handling `nil` Values in `NSDictionary` in Objective-C

Handling nil Values in NSDictionary in Objective-C When working with Objective-C, particularly when dealing with data returned from a server, it’s crucial (至关重要的) to handle nil values appropriately (适当地) to prevent unexpected crashes. Here, we ex…

ModbusRTU协议报文解析

ModbusRTU协议报文解析 报文格式: 设备地址/从站地址: 1个字节 指定目标设备地址(从站地址) 功能码:1个字节 功能码在modbus协议用于表示信息帧的功能,例如读取线圈状态、读取寄存器等。 数据&#xff…

SSRF漏洞原理与案例分析

一、什么是SSRF漏洞 SSRF (Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请…

论文速递 | Management Science 4月文章合集(下)

编者按 在本系列文章中,我们梳理了运筹学顶刊Management Science在2024年4月份发布有关OR/OM以及相关应用的13篇文章的基本信息,旨在帮助读者快速洞察领域新动态。本文为第二部分(2/2)。 推荐文章1 ● 题目:Social Le…

HarmonyOS应用开发——Hello World

下载 HUAWEI DevEco Studio: https://developer.harmonyos.com/cn/develop/deveco-studio/#download 同意,进入配置页面: 配置下载源以及本地存放路径,包括nodejs和ohpm: 配置鸿蒙SDK路径: 接受协议: 确认无误后&#…

面试-细聊synchronized

1.线程安全问题的主要诱因: 存在多条共享数据(临界资源) 存在多条线程共同操作这些共享数据 解决问题的根本方法: 同一时刻有且仅有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后在对共享数据进行操作。 2.synchroized锁 分…

边缘计算为企业解决数据问题,提升业务效率和竞争力-天拓四方

企业在当前数字化时代面临着一系列具体的问题和挑战,这些问题往往与数据处理、实时响应、安全性以及运营成本等方面密切相关。边缘计算作为一种新兴的计算模型,能够有效地帮助企业解决这些问题,提升业务效率和竞争力。 首先,企业…

清华、北大与微软推出Glyph-ByT5-v2,精准生成文字海报,支持10种语言,效果炸裂

前言 在 AI 领域,文生图技术已经取得了令人惊叹的进展,但如何将文字精准地融入图像,并支持多种语言,一直是研究人员面临的挑战。为了解决这一难题,清华大学、北京大学和微软亚洲研究院的研究人员合作推出了 Glyph-ByT…

网络安全等级保护测评

网络安全等级保护 《GB17859 计算机信息系统安全保护等级划分准则》 规定计算机信息系统安全保护等级共分五级 《中华人民共和国网络安全法》 “国家实行网络安全等级保护制度。 等级测评 测评机构依据国家网络安全等级保护制度规定,按照有关 管理规范和…

泰迪智能科技与成都文理学院人工智能与大数据学院开展校企合作交流

近日,在推动高等教育与产业深度融合的背景下,成都文理学院人工智能与大数据学院携手广东泰迪智能科技股份有限公司开展“专业建设交流会”。人工智能与大数据学院院长胡念青、院长助理陈坚、骨干教师刘超超、孙沛、赵杰、文运、胡斌、邹杰出席本次交流会…

二级web基础操作题练习

---------要求--------- 利用HTML和CSS实现如图所示页面: ---------代码示例--------- 分析:该页面包含一个标题、一个副标题、“姓名信息”的表格,并且有一段文字提示用户仔细填写,使用内联CSS来控制HTML页面的视觉外观&…

TiDB 资源管控的对撞测试以及最佳实践架构

作者: GreenGuan 原文来源: https://tidb.net/blog/bc405c21 引言 TiDB 是一个存算分离的架构,资源管控对这种分离的架构来说实现确实有非常大的难度,TiDB 从 7.1 版本开始引入资源管控的概念,在社区也有不少伙伴测…

SpringUtils.getBean 空指针异常问题

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 今天在新的jeecg-boot里加入下面的代码 /*** 部门经理处理类** author nbacheng* date 2023-08-06*/ AllArgsConstructor Component("DepManagerHandler") DependsOn({"Sp…

el-form重置后input无法输入问题

新增用户遇到的问题: 如果你没有为 formData 设置默认值,而只是将其初始化为空对象 {},则在打开dialog时,正常输入, formdata会变成如下 但是,打开后,直接使用 resetFields 或直接清空表单&…

封装vuetify3中v-time-picker组件,并解决使用时分秒类型只能在修改秒之后v-model才会同步更新的问题

目前时间组件还属于实验室组件&#xff0c;要使用需要单独引入&#xff0c;具体使用方式查看官网 创建公共时间选择器组件 common-time-pickers.vue 子组件页面 <template><div><v-dialog v-model"props.timeItem.isShow" activator"parent&q…

vxe-list做列表虚拟滚动时,底部间距的优化

已知vxe-list在数据超出一定行时会自动启用纵向虚拟滚动配置&#xff0c;默认效果如图&#xff1a; 但是在滚动中我们发现有时列表底部间距不一致&#xff0c;而且会出现在感官上底部空白过多的情况&#xff1a; 这时候我们想让列表恰好显示完全应该怎么做呢&#xff0c;查看官…

DLS平台:GPT-5预计于2025年底至2026年初发布,将实现“博士水平”智能

摘要 OpenAI首席技术官Mira Murati近日透露&#xff0c;GPT-5可能推迟到2025年底或2026年初发布。这一消息打破了市场对GPT-5在2023年底或2024年夏季发布的预期。尽管推迟&#xff0c;但GPT-5将实现显著的性能飞跃&#xff0c;在特定任务中达到“博士水平”的智能。这标志着人…

.NET开源的实时应用监控系统 - WatchDog

项目介绍 WatchDog是一个开源&#xff08;MIT License&#xff09;、免费、针对ASP.Net Core Web应用程序和API的实时应用监控系统。开发者可以实时记录和查看他们的应用程序中的消息、事件、HTTP请求和响应&#xff0c;以及运行时捕获的异常。 项目工作原理 它利用SignalR进…

jupyter中如何看plt.plot的局部细节

在Jupyter中使用matplotlib时&#xff0c;如果你想要放大图表的某一部分&#xff0c;可以使用matplotlib的交互式方式查看局部细节。 %matplotlib notebook # 在Jupyter中使用交互式后端 import matplotlib.pyplot as plt import numpy as np# 生成数据 x np.linspace(0, 10…

C# 信号量的使用

学习来源&#xff1a;《.net core 底层入门》 第六章第9节&#xff1a;信号量 案例&#xff1a;主线程负责添加数据&#xff0c;子线程负责获取数据 使用SemaphoreSlim&#xff08;轻信号量&#xff09;实现&#xff1a; using System; using System.Collections.Generic; us…