在这里插入图片描述

本文介绍一篇Radar 3D目标检测模型:RadarDistill。雷达数据固有的噪声稀疏性给3D目标检测带来了巨大挑战。在本文中,作者提出了一种新的知识蒸馏(KD)方法RadarDistill,它可以通过利用激光雷达数据来提高雷达数据的表征。RadarDistill利用三个关键组件将激光雷达特征的特征转移到雷达特征中: 模态对齐(CMA)基于激活的特征蒸馏(AFD)基于Proposal的特征蒸馏(PFD)

  • CMA通过多层膨胀操作增强了雷达特征的密度,有效地解决了从激光雷达到雷达的知识迁移效率不足的挑战。
  • AFD 旨在将知识从 LiDAR 特征的重要区域迁移,特别是那些激活强度超过预定阈值的区域。
  • PFD引导雷达网络在Proposal中模拟LiDAR网络特征,以准确地检测结果,同时调节误检测的Proposal的特征。

在nuScenes数据集上进行的实验表明,RadarDistill在纯雷达目标检测任务中达到了最先进的性能(SOTA),mAP为20.5%,NDS为43.7%。此外,RadarDistill还提高了相机-雷达融合模型的性能。

项目地址:https://github.com/geonhobang/RadarDistill


文章目录

      • Introduction && Related Work
      • Method
        • Preliminary
        • Cross-Modality Alignment
        • Activation-based Feature Distillation
        • Proposal-based Feature Distillation
      • Experiments

Introduction && Related Work

本文引言和相关工作这里就简单介绍下(本文的写作可以学习下)。本文目标时利用深度神经网络提高雷达的三维目标检测的性能。考虑到雷达测量的稀疏和噪声性质,雷达的有限性能主要是由于寻找有效表示的挑战。受LiDAR 点云的深度模型的显著成功的启发,我们的目标是迁移从基于 LiDAR 的模型中提取的知识以增强基于雷达的模型。

最近,知识蒸馏 (KD) 技术在将知识从一种传感器模态转移到另一种传感器模态方面取得了成功,从而优化目标模型的表示质量。基于所使用的学生模型的模态,跨模态知识蒸馏可以大致分为两种方法。当使用相机作为学生模型时,深度和形状信息都从教师模型转移到学生模型。BEVDistill将 LiDAR 和相机特征转换为 BEV 形式,从而能够将空间知识从 LiDAR 特征转移到相机特征。DistillBEV利用LiDAR或LiDAR-camera融合模型的预测结果来区分前景和背景,引导学生模型聚焦于重要区域的KD。S2M2-SSD根据学生模型的预测确定关键区域,并传输从关键区域的LiDAR-camera融合模型获得的信息。除了这些方法之外,UniDistill采用了一个通用的跨模态框架,可以实现不同模态之间的知识转移。该框架适用于不同的模态配对,包括相机到激光雷达、激光雷达到相机、(相机+激光雷达)到相机。

在本文中,我们提出了一种新的KD框架RadarDistill,该框架旨在增强雷达数据的表示。我们的研究表明,通过使用雷达编码网络作为学生网络和LiDAR编码网络作为教师网络,我们的KD框架有效地产生了类似于从LiDAR数据的密集和语义丰富的特征的特征,以更好地检测目标。

本文主要贡献有:

  • 我们的研究是第一个证明在训练过程中使用 LiDAR 数据可以显着提高雷达目标检测的工作。我们在图1中的定性结果强调了通过 RadarDistill 获得的雷达特征成功地模仿了 LiDAR 的特征,从而提高了目标检测。
  • 我们的研究结果表明,CMA 是 RadarDistill 中的一个关键模块。在缺少CMA的情况下,我们观察到性能提升显着下降。根据我们的消融研究,CMA在解决雷达和LiDAR点云密度不同造成的低效知识转移方面起着关键作用。
  • 我们提出了两种新的 KD 方法 AFD 和 PFD。这些方法弥合了雷达和激光雷达特征之间的差异,分别在在两个独立的特征层面工作,并专门为每个级别设计了KD损失。
  • RadarDistill 在 nuScenes 基准测试中的 radar-only 目标检测器类别中实现了最先进的性能。它还为 camera-radar 融合场景实现了显著的性能提升。

在这里插入图片描述


Method

Preliminary

在这里插入图片描述
本文使用PillarNet作为激光雷达检测器和雷达检测器的baseline。激光雷达和雷达的稀疏2D pillar特征分别为 F l d r 2 D F^{2D}_{ldr} Fldr2D F r d r 2 D F^{2D}_{rdr} Frdr2D,通过2D稀疏卷积编码器得到低级BEV特征为 F r d r l F^{l}_{rdr} Frdrl F r d r l F^{l}_{rdr} Frdrl为,然后使用2D密集卷积编码器得到高级BEV特征 F r d r h F^{h}_{rdr} Frdrh F r d r h F^{h}_{rdr} Frdrh。最后高级BEV特征使用CenterHead进行处理,得到分类热力图,回归热力图,IoU热力图:

H mod cls , H mod reg , H mod IoU = CenterHead ( F mod h ) H_{\text{mod}}^{\text{cls}}, H_{\text{mod}}^{\text{reg}}, H_{\text{mod}}^{\text{IoU}} = \text{CenterHead}(F_{\text{mod}}^h) Hmodcls,Hmodreg,HmodIoU=CenterHead(Fmodh)


Cross-Modality Alignment

我们的目标是通过CMA减少雷达和激光雷达之间的差异。PillarNet使用SPConv仅从非空pillar生成低级特征。在比较非空pillar的数量时,雷达的非空pillar仅占激光雷达非空pillar总数的11%。非空pillar数量的显著差异需要两种模式进行对齐,特别是由于激光雷达非空pillar的信息不能直接转移到雷达数据中的相应空pillar中。CMA模块如下图所示,下采样模块应用可变形卷积在下采样过程中提取必要特征,然后使用ConvNeXt V2块聚合这些特征。在上采样模块中,使用2D转置卷积应用膨胀以致密周围区域的特征。包含连接和1×1卷积层的聚合模块结合了不同的特征,操作类似于跳跃连接。

在这里插入图片描述
具体代码如下:

	def forward(self, data_dict):"""Args:data_dict:spatial_featuresReturns:"""spatial_features = data_dict['radar_multi_scale_2d_features']['x_conv4']ups = []ret_dict = {}en_16x = self.encoder_1(spatial_features) #(B, 256, 90, 90)de_8x = torch.cat((self.decoder_1(en_16x), spatial_features), dim=1)#(B,512,180,180)de_8x = self.agg_1(de_8x)#(B,256,180,180)en_32x = self.encoder_2(en_16x)#(B,256,45,45)de_16x = torch.cat((self.decoder_2(en_32x), self.encoder_3(de_8x)), dim=1)#(B,512,90,90)de_16x = self.agg_2(de_16x)#(B,256,90,90)x = torch.cat((self.decoder_3(de_16x), de_8x), dim=1)#(B, 512, 180, 180)x_conv4 = self.agg_3(x)data_dict['radar_multi_scale_2d_features']['radar_spatial_features_8x_2'] = x_conv4data_dict['radar_multi_scale_2d_features']['radar_spatial_features_8x_1'] = de_8xx_conv5 = data_dict['radar_multi_scale_2d_features']['x_conv5']ups = [x_conv4]x = self.blocks[1](x_conv5)ups.append(self.deblocks[0](x))data_dict['radar_spatial_features_2d_8x'] = ups[-1]x = torch.cat(ups, dim=1)x = self.blocks[0](x)data_dict['radar_spatial_features_2d'] = xreturn data_dict

Activation-based Feature Distillation

AFD 通过激活感知特征匹配策略对齐雷达和 LiDAR 的低级特征。这个过程将雷达特征的激活模式与激光雷达的激活模式相匹配,从而弥合了它们在活动特征分布上的差距。蒸馏区域被自适应地划分为两类:一类是雷达和激光雷达(LiDAR)都处于活跃状态的活跃区域(AR),另一类是雷达处于活跃状态而激光雷达处于非活跃状态的非活跃区域(IR)。 由于雷达数据的稀疏性和噪声特性,AR和IR之间存在不平衡。这种不平衡可能会通过专注于模仿占主导地位的IR来干扰训练。因此,我们根据每个区域的像素数量应用相对自适应权重。具体代买如下:

	def low_loss(self, lidar_bev, radar_bev):B, _, H, W = radar_bev.shapelidar_mask = (lidar_bev.sum(1).unsqueeze(1) > 0).float()radar_mask = (radar_bev.sum(1).unsqueeze(1))activate_map = (radar_mask > 0).float() + lidar_mask * 0.5mask_radar_lidar = torch.zeros_like(activate_map, dtype=torch.float)mask_radar_de_lidar = torch.zeros_like(activate_map, dtype=torch.float)mask_radar_lidar[activate_map==1.5] = 1mask_radar_de_lidar[activate_map==1.0] = 1mask_radar_de_lidar *= (mask_radar_lidar.sum() / mask_radar_de_lidar.sum())loss_radar_lidar = F.mse_loss(radar_bev, lidar_bev, reduction='none')loss_radar_lidar = torch.sum(loss_radar_lidar * mask_radar_lidar) / Bloss_radar_de_lidar = F.mse_loss(radar_bev, lidar_bev, reduction='none')loss_radar_de_lidar = torch.sum(loss_radar_de_lidar * mask_radar_de_lidar) / B# breakpoint()feature_loss = 3e-4 * loss_radar_lidar + 5e-5 * loss_radar_de_lidarloss = nn.L1Loss()mask_loss = loss(radar_mask.sigmoid(), lidar_mask)return feature_loss, mask_loss

Proposal-based Feature Distillation

PDF损失函数如下所示。

	def high_loss(self, radar_bev,radar_bev2, lidar_bev,lidar_bev2, heatmaps, radar_preds):thres = 0.1gt_thres = 0.1gt_batch_hm = torch.cat(heatmaps, dim=1)gt_batch_hm_max = torch.max(gt_batch_hm, dim=1, keepdim=True)[0]#[1, 2, 2, 1, 2, 2]radar_batch_hm = [(clip_sigmoid(radar_pred_dict['hm'])) for radar_pred_dict in radar_preds]radar_batch_hm = torch.cat(radar_batch_hm, dim=1)radar_batch_hm_max = torch.max(radar_batch_hm, dim=1, keepdim=True)[0]radar_fp_mask = torch.logical_and(gt_batch_hm_max < gt_thres, radar_batch_hm_max > thres)radar_fn_mask = torch.logical_and(gt_batch_hm_max > gt_thres, radar_batch_hm_max < thres)radar_tp_mask = torch.logical_and(gt_batch_hm_max > gt_thres, radar_batch_hm_max > thres)# radar_tn_mask = torch.logical_and(gt_batch_hm_max < gt_thres, radar_batch_hm_max < thres)wegiht = torch.zeros_like(radar_batch_hm_max)wegiht[radar_tp_mask + radar_fn_mask] = 5 /(radar_tp_mask + radar_fn_mask).sum()wegiht[radar_fp_mask] = 1 / (radar_fp_mask).sum()scaled_radar_bev = radar_bev.softmax(1)scaled_lidar_bev = lidar_bev.softmax(1)scaled_radar_bev2 = radar_bev2.softmax(1)scaled_lidar_bev2 = lidar_bev2.softmax(1)high_loss = F.l1_loss(scaled_radar_bev, scaled_lidar_bev, reduction='none') * wegihthigh_loss = high_loss.sum()high_8x_loss = F.l1_loss(scaled_radar_bev2, scaled_lidar_bev2, reduction='none') * wegihthigh_8x_loss = high_8x_loss.sum()high_loss = 0.5 * (high_loss + high_8x_loss)return high_loss

Experiments

下面介绍本文实验部分。基线模型使用了PillarNet-18,即采用ResNet18作为骨干网络的PillarNet [23]。我们使用了Adam优化器,学习率设置为0.001,并采用单周期学习率策略。我们将权重衰减设置为0.01,并将动量在0.85和0.95之间进行调整。我们在4块NVIDIA RTX 3090 GPU上训练了基线模型,共训练了20个epoch,采用总批量大小为16的类别平衡分组与采样(Class-Balanced Grouping and Sampling,简称CBGS)策略。

本文提出的模型训练了40个epochs,其他所有训练过程都与基线模型完全相同。我们采用教师模型的权重来初始化学生模型。

在NuScenes测试集上可以看到,在Radar-only模型中,我们的方法排到了第一名,并且比第二名KPConvPillars在mAP上提高了15.6个点,在NDS提高了29.8个点。

在这里插入图片描述

下面是具体每一类的目标AP对比,本文提出的方法比基线模型在所有类别上都有提高,特别是在Trailer、T.C和Barrier上都提高了20个点以上。在Car和Trailer类别上比纯视觉模型和融合模型还要高。但是在Ped和Bicycle等小目标上没有很大提高,因为它们的真值中有很少的雷达点。

在这里插入图片描述
下面是消融实验,作者做消融实验的时候使用了1/7的训练集进行训练,缩短开发时间。表3可以看到本文提出的三个模块对模型性能的影响。当CMA和AFD或PFD一起使用的话,比baseline模型都提高了不少。而AFD和PFD一起使用的话,性能提升则十分有限。这表明CMA模块扮演了十分重要的角色。

在这里插入图片描述
表4分析了AFD中选择不同特征区域的影响。
(1)在整个区域上进行蒸馏时,汽车平均精度(Car AP)提高了4.2%,平均精度(mAP)提高了2.2%,以及NDS提高了2.9%。
(2)将蒸馏应用于真值框(GT boxes)为中心的高斯热力图区域,与在整个区域上进行蒸馏相比,汽车平均精度和平均精度均有所提高,但NDS有所下降。
(3)将蒸馏分为前景区域和背景区域进行,与在整个区域上进行蒸馏相比,汽车平均精度和平均精度均有所提高,但NDS略有下降(31.7vs32.2)。
(4)相反,按照我们提出的激活区域划分特征蒸馏,与在整个区域上进行蒸馏相比,在所有指标上均取得了最佳性能,Car-AP提高了6.8%,mAP提高了2.3%,NDS提高了1.5%。
在这里插入图片描述
表5分析了PFD中选择不同特征区域的影响。可以看到无论是整个区域,还是真值中心热力图、或是LiDAR预测都没有太大的提升,而使用本文提出的Radar预测区域,相比baseline在NDS上提高了1个点。
在这里插入图片描述
最后作者在RC融合模型上验证本文提出的知识蒸馏方法的效果,使用的baseline是MIT版本的BEVFusion代码库,可以看到使用本文提出的方法后,mAP和NDS均有提升。
在这里插入图片描述

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

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

相关文章

创建型设计模式之Singleton(单例)设计模式

创建型设计模式之Singleton&#xff08;单例&#xff09;设计模式 摘要&#xff1a; Singleton&#xff08;单例&#xff09;设计模式确保一个类仅有一个实例&#xff0c;并提供全局访问点。其结构包含一个静态方法getInstance()用于获取唯一实例&#xff0c;构造方法私有化防…

C++11:系统类型增强

C11&#xff1a;系统类型增强 强枚举类型作用域限定隐式类型转换指定类型前置声明 类型别名 using模板别名复杂指针别名 auto限制性 auto注意事项 nullptrdecltype 强枚举类型 在C98的枚举设计中&#xff0c;存在很多缺陷&#xff0c;为此C11推出了强枚举来代替旧版的枚举&…

linux 内核warn_on/Bug_on

1,warn_on() warn_on() 是 Linux 内核中用于报告潜在问题或警告的宏。与 bug_on() 不同&#xff0c;bug_on() 通常用于报告严重错误&#xff0c;其触发往往会导致内核Oops或panic&#xff0c;而 warn_on() 则用于报告不太严重的、可能只是潜在问题或预期外情况的情况。它的触…

SQL输出20个9

在SQL Server中要输出20个连续的9&#xff0c;可以使用以下几种方法&#xff1a; 使用REPLICATE函数重复生成字符&#xff1a; SELECT REPLICATE(9, 20) AS Result 2. 使用UNION ALL联合查询生成多行&#xff1a; SELECT 9 AS Number FROM (VALUES (1),(1),(1),(1),(1),(1),…

懒人云电脑方案:飞牛NAS远程唤醒 + 节点小宝一键唤醒、远程控制Windows!

后台高频问题解答&#xff1a; “博主&#xff0c;飞牛NAS能定时开关机了&#xff0c;能不能让它顺便把家里Windows电脑也远程唤醒控制&#xff1f;最好点一下就能连&#xff0c;不用记IP端口那种&#xff01;” 安排&#xff01;今天这套方案完美实现&#xff1a; ✅ 飞牛NAS…

Linux特殊符号

1 管道符| 管道符号 | 用于将一个命令的输出作为另一个命令的输入。这种机制允许将多个命令组合在一起&#xff0c;形成一个数据处理链&#xff0c;每个命令处理前一个命令的输出&#xff0c;从而实现复杂的数据处理任务。示例 # 查询/var/log目录下所有的log文件,并进行分页…

初识Docker:容器化技术的入门指南

初识Docker&#xff1a;容器化技术的入门指南 一、Docker是什么&#xff1a;容器化技术的核心概念二、Docker的核心优势2.1 环境一致性2.2 高效部署与快速迭代2.3 资源利用率高 三、Docker的安装与基本使用3.1 安装Docker3.2 Docker基本概念3.3 第一个Docker容器体验 四、Docke…

商务风企业公司推广培训计划PPT模版分享

商务风企业公司推广培训计划PPT模版分享&#xff1a;商务培训推广计划PPT模版https://pan.quark.cn/s/063282eaf739 第1套PPT模版&#xff0c;绿橙配色&#xff0c;几何图形拼接背景&#xff0c;有中英文标题和占位文本。 第2套PPT模版是黑金高端商务风格&#xff0c;有汇报人…

深入理解Nginx:详尽配置手册

Nginx是一款高性能的HTTP和反向代理服务器&#xff0c;广泛应用于负载均衡、缓存和Web服务器等场景。随着互联网应用的快速发展&#xff0c;掌握Nginx的配置和优化技巧显得尤为重要。在本篇文章中&#xff0c;我们将深入探讨Nginx的配置&#xff0c;帮助你更好地理解和使用这款…

每日leetcode

1572. 矩阵对角线元素的和 - 力扣&#xff08;LeetCode&#xff09; 题目 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3], …

Server 9 ,在 VMware 虚拟机上安装 Windows 系统完整指南

目录 前言 一、准备工作 1.1 准备安装文件 1.2 安装VMware软件 1.3 创建新的虚拟机 1.4 开启虚拟机 二、注意事项 2.1 调整硬件设置 2.2 启动顺序配置 2.3 固件类型选择 2.4 安全启动配置 三、安装优化 3.1 安装VMware Tools 3.2 系统更新与激活 四、更多操作 ​…

最终章:终焉之塔 · 前端之道

第一章&#xff1a;HTML基石现实的骨架 第二章&#xff1a;CSS秘典 色彩与布局的力量 第三章&#xff1a;JavaScript引擎 行为之火 第四章&#xff1a;DOM迷宫 掌控页面之心 第五章&#xff1a;异步幻境 时间与数据的秘密 第六章&#xff1a;事件风暴 用户的意志 第七章&a…

详解 .net9 内置 Lock 对象,更加现代化和灵活可控的锁对象

.NET 9 引入了全新的 System.Threading.Lock 类型&#xff0c;作为更现代、类型安全且具备递归支持的同步原语。与传统的基于 Monitor.Enter/lock(obj) 的方式不同&#xff0c;Lock 是一个具体的类&#xff0c;提供了更灵活的 API 和结构化编程模型。 Lock 类 Lock 是一个具体…

python几行命令实现快速打包apk

1. ​​环境准备​ sudo apt update sudo apt install -y python3-pip git zip unzip openjdk-17-jdk sudo apt-get install -y autoconf automake libtool pip install kivy buildozer cython2. ​​项目配置​ 在项目目录中初始化Buildozer&#xff1a; buildozer init这会…

实时数仓和离线数仓的区别是什么?企业如何选择合适的数仓架构?

实时数仓和离线数仓的区别是什么&#xff1f;企业如何选择合适的数仓架构&#xff1f; 时数仓和离线数仓都是数据仓库的不同类型&#xff0c;用于存储和管理企业的数据&#xff0c;但它们在数据处理和使用的时间、速度以及用途方面有明显的区别。 在介绍实时数仓之前&#xf…

Docker Desktop for Windows 系统设置说明文档

1. 文档概述 本文档旨在详细说明 Docker Desktop for Windows 应用程序中“设置 (Settings)”界面下的所有可配置选项及其子选项。对于每个配置项&#xff0c;我们将提供其功能描述、推荐配置&#xff08;如适用&#xff09;以及相关注意事项&#xff0c;帮助用户更好地理解和…

精准监测,健康无忧--XC3576H工控主板赋能亚健康检测仪

在快节奏的现代生活中&#xff0c;亚健康问题逐渐成为困扰人们健康的隐形杀手。疲劳、失眠、免疫力下降等问题频发&#xff0c;却往往因难以察觉而延误调理。智能亚健康检测仪通过高科技手段&#xff0c;帮助用户实时了解身体状况&#xff0c;提前预警潜在健康风险。 其核心功能…

SBT开源构建工具

SBT 的多元定义与核心解释 SBT&#xff08;Simple Build Tool&#xff09;是专为 Scala 和 Java 项目设计的开源构建工具&#xff0c;基于 Scala 语言开发&#xff0c;提供依赖管理、编译、测试、打包等全流程支持。其核心特点包括&#xff1a; 核心功能与特性&#xff1a; …

npm run build后将打包文件夹生成zip压缩包

安装依赖 npm install archiver --save-dev准备compress.js文件 const fs require(fs); const archiver require(archiver);const sourceDir ./dist; //替换为你的文件夹路径 const outputZip ./dist.zip;console.log(开始压缩); const output fs.createWriteStream(ou…

力扣 215 .数组中的第K个最大元素

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;基于快速排序的选择方法 以中间元素pivot为基准进行排序后&#xff0c;右指针 r 的位置就是最终全部排序好后pivot的位置&#xff0c;然后去左边或右边递归寻找第k个位置&#xff08;答案&#xff09;的元素。 代码如下…