NeurIPS 2023 | AD-PT:首个大规模点云自动驾驶预训练方案
概要
自动驾驶领域的一个长期愿景是,感知模型能够从大规模点云数据集中学习获得统一的表征,从而在不同任务或基准数据集中取得令人满意的结果。之前自监督预训练的工作遵循的范式是,在同一基准数据集上进行预训练和微调,这很难实现预训练权重的性能可扩展性和跨数据集应用。在本文中,作者提出要解决预训练网络的泛化性问题,需要从数据层面和算法层面分别考虑。为此,作者将点云预训练任务表述为一个半监督问题,利用少量有标签和大量无标签的的点云数据来生成统一的骨干表征。首先,作者通过类别感知的伪标签生成器和基于多样性的数据处理器构建了一个具有多样化数据分布的大规模预训练点云数据集;同时,将预训练和下游微调阶段关注类别不同的问题看做一个开集问题并提出了未知实例学习头,使网络从构建的多样化的预训练数据集中学习可泛化的表征。
作者利用AD-PT预训练好的权重初始化多种检测器包括PV-RCNN++,PV-RCNN,CenterPoint,SECOND,并在多个数据集(Waymo,nuScenes,KITTI)上进行微调。实验结果表明,AD-PT解耦了与自动驾驶的预训练过程和下游微调任务,在多个下游数据集上都取得了明显的性能提升。

论文题目:
AD-PT: Autonomous Driving Pre-Training with Large-scale Point Cloud Dataset
论文地址:
https://arxiv.org/abs/2306.00612
代码地址:
https://github.com/PJLab-ADG/3DTrans
动机
虽然3D检测器可以帮助自动驾驶汽车识别周围环境,但现有的基准模型很难推广到新的域(如不同的传感器设置或未见过的城市)。自动驾驶领域的长期愿景是训练出场景通用的预训练模型,该模型可泛化到不同的下游数据集。为实现这一目标,研究人员开始研究自监督预训练(SS-PT)。
但是,如图所示,应该指出的是,上述 SS-PT 与所需的自动驾驶预训练(AD-PT)范式之间存在重要区别。SS-PT 旨在从单个无标注数据集中学习,为同一数据集生成合适的表征。而 AD-PT 则希望从尽可能多并有多样性的数据中学习统一的表征,以便将学习到的特征提取能力更好地转移到各种下游数据集中。因此,SS-PT 通常只有在测试数据和预训练数据取样于同一数据集时才会表现出色,而 AD-PT 在不同数据集上具有更好的泛化性能。并且随着预训练数据集数量的增加,性能也会不断提高。
因此,本文的重点是实现 AD 预训练,这种预训练可以很容易地应用于不同的基线模型和基准数据集。通过大量实验,作者认为要实现真正的 AD-PT,需要解决两个关键问题:1)如何建立一个统一的、数据分布多样的 AD 数据集;以及 2) 如何通过设计有效的预训练方法,从这样一个多样化的数据集中学习可泛化的表征。
基于上述分析,为了实现 AD-PT 模式,作者提出了基于多样性的预训练数据准备程序和未知感知实例学习的预训练过程,以加强提取特征的代表性。相比于过去的预训练方法,AD-PT提供了一种更加统一的方法,即一旦生成预训练的权重,就可以直接加载到多个感知基线和基准中。
AD-PT框架如图2所示,主要包括大规模点云数据集准备程序和以自动驾驶为重点的统一表示学习程序。作者首先设计了一个类感知伪标签生成器来生成伪标签。之后,为了获得更多样化的样本,提出了一种基于多样性的预训练数据处理器。最后,为了在这些伪标签数据上进行预训练,以学习它们的通用表征,作者设计了一种带有一致性损失的未知感知实例学习方法。
方法
大规模点云数据集准备

1. 类别感知伪标签生成器
-
类别感知伪标签生成。作者发现,不同基线模型对不同类别具有不同的感知能力。例如,基于中心的倾向于更好地检测小范围目标(如行人),而基于锚点的方法则在其他类别中表现更好。最终,作者利用不同模型标注不同类别。
-
半监督学习。作者进一步利用半监督学习方法来提高伪标签的准确性。在文章中,作者使用 MeanTeacher 来进一步提高分类检测能力。最终,在 ONCE 验证集上的准确率大大超越了Benchmark上的记录。
-
伪标签阈值。为避免标注大量假阳性实例,作者设置了一个相对较高的阈值。这样也带了了一个问题,即与 ONCE 标注数据相比,一些预测分数相对较低的困难样本没有被标注。
最终的性能如下表所示:

2. 基于多样性的预训练数据处理器
- 数据线束多样化。为了获得线束多样化的数据,作者使用range image作为中间变量,对点云数据进行上采样和下采样。具体来说,给定一个有 n 个线束的激光雷达点云(如 ONCE 数据集有 40 个线束),每个环有 m 个点,range image 可通过下式求得:


- 具有更多 RoI 多样性: 不同地点采集的物体大小的分布不一致。为了克服这一问题,作者通过随机重缩放每个物体的长度、宽度和高度来获得多样性更强的实例帮助预训练。

在大规模点云数据集下学习统一表征
通过使用上述方法获得统一的预训练数据集,可以提高场景级和实例级的多样性。然而,伪标注数据集只有有限的类别标签,此外,如之前所述,为了获得准确的伪标注,作者设置了较高的置信度阈值,这可能会不可避免地忽略一些较难的实例。这些被忽略的实例在预训练数据集中可能并不重要,但在下游数据集中可能被视为感兴趣的类别(例如,nuScenes 数据集中的 “barrier”),在预训练过程中会被抑制。
为了缓解这一问题,作者将预训练视为一个开集学习问题,将对象性得分相对较高的背景区域视为未知实例。这些实例在预训练阶段被忽略,但可能对下游任务至关重要。对象性得分是从区域建议网络(RPN)中获得的。然而,由于这些未知实例包含大量的背景区域,因此在预训练阶段直接将这些实例作为前景实例处理是不合适的,会导致主干网络激活大量的背景区域。
为了克服这一问题,作者利用双分支头作为委员会来发现哪些区域可以有效地作为前景实例。具体来说,通过对双分支对象性分数大于一定阈值的bounding boxes进行基于距离的匹配,并将一致性强的区域在训练过程中当做前景。双分支一致性特征可以由下面公式获得:

实验
实验设置
-
预训练数据集。我们利用ONCE数据集,ONCE由大量无标注数据和少量代标注数据组成,包含许多场景和天气条件。在进行预训练时,我们将Car,Pedestrian和Cyclist合并为一个统一的类别。我们的主要结果是基于 ONCE 的100K数据进行,并使用更大量的数据(500K,1M)来验证预训练的可扩展性。
-
微调数据集。我们在Waymo,nuScenes和KITTI上进行了少量数据以及全量数据的实验。
实验结果
这里只展示了主要实验结果,更多结果请参考我们的论文。
总结
在这项工作中,作者提出了 AD-PT 范式,旨在在统一的数据集上进行预训练,训练出泛化性强且表征能力强的骨干网络,从而提升在多个下游数据集上的性能。通过所提出的数据准备流程以及未知实例学习头,分别从数据集算法层面提升模型的泛化能力。在多个基准数据集上的实验表明,AD-PT的预训练权重可以加载到多种检测器中,并且取得性能的提升。
关于TechBeat人工智能社区
▼
TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。
我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。
期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!
更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区
相关文章:
NeurIPS 2023 | AD-PT:首个大规模点云自动驾驶预训练方案
概要 自动驾驶领域的一个长期愿景是,感知模型能够从大规模点云数据集中学习获得统一的表征,从而在不同任务或基准数据集中取得令人满意的结果。之前自监督预训练的工作遵循的范式是,在同一基准数据集上进行预训练和微调,这很难实…...
设计模式-结构型模式
文章目录 一、代理模式1.静态代理2.JDK动态代理3.CGLib动态代理4.三种代理对比 二、适配器模式1.类适配器模式2.对象适配器模式 三、装饰者模式静态代理和装饰者的区别 四、桥接模式五、外观模式六、组合模式七、享元模式 结构性模式描述如何将类或对象按某种布局组成更大的结构…...
BUUCTF学习(7): 随便注,固网杯
1、介绍 2、解题 11;show tables;# select * from 1919810931114514 concat(sel,ect from 1919810931114514 ) PEREPARE y from sql; ECCUTE y; -1; sEt sql CONCAt(se,lect * from 1919810931114514;); prePare stmt from sql; EXECUTE stmt; # 结束...
【文末福利】巧用Chat GPT快速提升职场能力:数据分析与新媒体运营
欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…...
院内导航系统厂商分析
随着医疗技术的不断发展和医院规模的不断扩大,院内导航系统成为了现代化医院不可或缺的一部分。患者就医时,一个高效便捷的导航系统可以帮助他们快速找到目标科室,同时也能提高医院的整体运营效率。本文将推荐五家在院内导航市场具有竞争力的…...
MES系统作业调度
一、MES系统作业调度的概念和功能 作业调度是指在制造过程中,根据生产计划和实际情况,合理安排和调度各项任务和资源,以达到最佳的生产效率和资源利用率。MES系统作业调度功能涉及以下方面: 1. 任务计划与分配:MES系…...
C++入门-引用
C入门-引用 前置知识点:函数栈帧的复用前置知识点:类型转换时产生的临时变量1.含义2.代码形式3.引用的价值1.传参数传参效率测试补充:C与Java中引用的区别 2.引用做返回值(前置知识:栈帧复用)1.传值返回2.传引用返回传引用返回并用引用接收3.静态变量传引用返回4.引用做返回值真…...
问题:Qt中软件移植到笔记本中界面出现塌缩
这是由于软件之前运行的设备DPI较低,移植到笔记本中显示设备DPI较高,导致窗体显示进行了缩放。 解决方案,在main.cpp中加入以下代码: if(QT_VERSION>QT_VERSION_CHECK(5,6,0)) QCoreApplication::setAttribute(Qt::AA_EnableHi…...
NDK编译脚本:Android.mk or CMakeLists.txt
本文来自于:https://github.com/xufuji456/FFmpegAndroid/blob/master/doc/NDK_compile_shell.md 前言 Android NDK以前默认使用Android.mk与Application.mk进行构建,但是在Android Studio2.2之后推荐使用CMake进行编译。 CMake是跨平台编译工具&#…...
低代码提速应用开发
低代码介绍 低代码平台是指一种能够帮助企业快速交付业务应用的平台。自2000年以来,低代码市场一直充斥着40大大小小的各种玩家,比如国外的Appian、K2、Pega Systems、Salesforce和Ultimus,国内的H3 BPM。 2015年以后,这个市场更是…...
Hi3516DV500 SVP_NNN添加opencv库记录
默认没有带opencv库,但是实际项目中需要用到opencv库,因此添加一下此库; 1:编译opencv源码,这里具体可以参考 海思Hi3516移植opencv以及错误调试_海思hi3516摄像头开发-CSDN博客 2:在工程的根目录下新建…...
BIO实战、NIO编程与直接内存、零拷贝深入剖析
原生 JDK 网络编程 BIO BIO,意为 Blocking I/O,即阻塞的 I/O。 BIO 基本上就是我们上面所说的生活场景的朴素实现。在 BIO 中类 ServerSocket 负责绑定 IP 地址,启动监听端口,等待客户连接;客户端 Socket 类的实例…...
计网第六章(应用层)(四)(电子邮件)
电子邮件采用客户/服务器的方式。 1、三个构成 电子邮件系统的三个组成构件:用户代理、邮件服务器以及电子邮件所需的协议。 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件。 邮件服务器是电子邮件系统的基础设施。因特网上所有的服…...
Lua篇笔记
. 和 : 的区别 lua的面向对象 Lua数据类型 nil number bool table string userdata thread function Lua-字符串连接 C#与Lua交互过程及原理 Lua中的闭包 常见的一些Lua功能 热重载: function reload_module(module_name) local old_module _G[module_name] --取…...
一种更具破坏力的DDoS放大攻击新模式
近日,内容分发网络(CDN)运营商Akamai表示,一种使网站快速瘫痪的DDoS放大攻击新方法正在被不法分子所利用。这种方法是通过控制数量巨大的中间设备(middlebox,主要是指配置不当的服务器)…...
WordPress 常规设置页面调用媒体中心上传图片插入URL(新版可用)
首先,我们需要在主题或插件文件夹中创建一个 JavaScript 文件(如:media-uploader.js),该文件中包含如下代码。 /*** 媒体中心上传 js **/ jQuery(document).ready(function($){var mediaUploader;$(#upload_image_but…...
Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo
Elasticsearch实现检索词自动补全 自动补全定义映射字段建立索引测试自动补全 自动纠错查询语句查询结果 拼音补全与繁简转换安装 elasticsearch-analysis-pinyin 插件定义索引与映射建立拼音自动补全索引测试拼音自动补全测试繁简转换自动补全 代码实现demo结构demo获取 自动补…...
LaunchView/启动页 的实现
1. 创建启动画板,LaunchScreen.storyboard 添加组件如图: 2. 项目中设置只支持竖屏,添加启动画板,如图: 3. 创建启动画面动画视图,LaunchView.swift import SwiftUI/// 启动视图 struct LaunchView: View {/// 字符串转换为字符串…...
windows安装npm教程
在安装和使用NPM之前,我们需要先了解一下,NPM 是什么,能干啥? 一、NPM介绍 NPM(Node Package Manager)是一个用于管理和共享JavaScript代码包的工具。它是Node.js生态系统的一部分,广泛用于构…...
网络端口验证
网络端口连通性验证 1、背景2、目标3、环境4、部署4.1、准备工作4.2、安装4.3、场景测试 1、背景 在日常运维过程中经常会遇到以下两种场景: 1、程序业务端口的开具及验证 2、业务程序访问异常网络排障 2、目标 1、验证端口的正确开具 2、网络策略的连通性 3、环…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
