3DTrans: 首个支持自动驾驶室外点云迁移学习的代码库

本文将为大家介绍上海人工智能实验室交通平台组ADLab的3DTrans代码库–首个自动驾驶室外3D点云迁移学习的代码库。此外3DTrans代码库还是Uni3D(CVPR-2023)和Bi3D(CVPR-2023)的官方实现代码库。

Code Link: https://github.com/PJLab-ADG/3DTranshttps://github.com/PJLab-ADG/3DTrans

一、3DTrans–首个支持多种迁移学习任务的3D室外点云代码库

1.1 3DTrans可以做什么?

快速目标域自适应

3DTrans可以仅使用无标注数据来提高3D感知模型对unseen domains的适应性。例如,3DTrans代码库支持ST3D[1]等多个无监督领域适配(UDA)方法。此外,3DTrans开发了许多新的UDA技术来解决不同类型的域偏移(如激光雷达引起的域差异以及物体大小引起的域差异),其中包括Post-SN、Pre-SN和Range-map Down-sampling/retraining操作。

低成本目标域适应

3DTrans可以从unseen domains中选择出信息量最大的子集样本,并以最小的成本为其进行标注。例如,3DTrans开发了Bi3D,它选择部分但重要的目标数据并以最小的成本对其进行人工标注,在高性能和低标注成本之间实现了良好的平衡。此外,3DTrans已经将几种典型的迁移学习技术集成到3D目标检测框架中。例如,3DTrans集成了TQS[2]、CLUE[3]、SN[4]、ST3D[1]、伪标注[1]、SESS[5]和Mean Teacher[6]等方法,以支持自动驾驶相关的模型跨传感器、跨场景的迁移。

多数据集的联合训练

3DTrans可以执行多数据集的3D目标检测任务。例如,3DTrans首次研发了多数据集3D目标检测框架–Uni3D,使当前的3D基线模型能够有效地从多个公开3D数据集中进行学习,提高了不同自动驾驶厂商、传感器、不同地点数据之间的复用性。

多数据集支持

3DTrans为Waymo、nuScenes、ONCE、Lyft和KITTI等多个公开数据集提供了统一的数据加载接口和数据增强方式,有利于研究跨数据集的3D感知任务。此外,为了消除3D室外点云数据的域差异,并获得可泛化的表示,3DTrans集成了一些经典的无标注预训练技术,来为目前3D基线检测模型提供更好的参数初始化。例如,我们集成了PointContrast[7]和SESS[5]来支持基于室外点云的预训练任务。

多模型的可扩展性

3DTrans可以快速完成新基线检测模型的UDA、ADA、SSDA、MDF等任务的支持。在不对代码和新基线检测模型结构进行重大更改的情况下,通过使用3DTrans,单数据集3D基线检测模型可以成功地迁移到带有域差异的新领域。


*3DTrans代码库不同模块输入输出关系图

1.2 3DTrans的每个模块介绍

3DTrans是一个轻量级、简单、自包含的开源代码库,用于探索面向自动驾驶的迁移学习技术,目前主要由四个功能组成:

  1. Unsupervised Domain Adaptation (UDA) for 3D Point Clouds
  2. Active Domain Adaptation (ADA) for 3D Point Clouds
  3. Semi-Supervised Domain Adaptation (SSDA) for 3D Point Clouds
  4. Multi-dateset Domain Fusion (MDF) for 3D Point Clouds

接下来,给大家详细介绍一下每个模块:

1.2.1 3DTrans@UDA

● 入口链接
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_UDA.md

● 3DTrans代码库UDA基线算法的构建

3DTrans是面向自动驾驶场景迁移学习的代码库,最常见的迁移学习任务是UDA任务。其假设:模型可以接触到全量带标注的源域数据和全量无标注的目标域数据。3DTrans支持了ST3D[1]等最新的UDA 3D方法。同样,我们针对在3D自动驾驶场景下常见的两种领域差异,即LiDAR-beam variation和Object-size change,给出了LiDAR down-sampling retraining和Post/Pre-SN实现,来针对特定域差异来迁移3D感知模型。

*详情见:https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_UDA.md

● 3DTrans@UDA实验结果

Waymo->KITTI:

1.2.2 3DTrans@ADA

● 入口链接

https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_ADA.md

● 3DTrans代码库ADA基线算法的构建

3DTrans代码库首次支持了多种经典的ADA算法,包括TQS[2],CLUE[3]以及我们的Bi3D,同时,利用TQS中的代码,可以轻易地实现query-by-committee、query-by-uncertainty等方法。

TQS[2]由transferable committee、transferable uncertainty和基于图像级特征的transferable domainness组成。在我们的复现中,我们使用CNN从BEV特征中提取场景级特征描述,并使用三个分类器头来构建committees。不同于以往使用熵来评估不确定度的工作,我们计算了客观分数和0.5的标记,这种打分方式不同于原来的TQS[2],这是因为我们只关注单一类别,不能使用最高分和第二高分的差。此外,我们通过域鉴别器计算域得分,并设置为 =0.75, =0.4,这与TQS相同。为了与TQS保持一致,我们使用源域数据和选择的目标数据来微调在源域上训练的检测器。

CLUE[3]使用不确定性加权聚类来选择目标数据。按照这个思路,我们首先通过计算NMS后的预测熵来获得每帧的不确定性,然后用熵的平均值来表示帧级的不确定性。此外,利用CLUE[3]提出的加权K-Means和K个中心进行聚类,其中K表示当前采样时刻的标注预算。

● 3DTrans@ADA实验结果
Waymo->KITTI:

1.2.3 3DTrans@SSDA

● 入口链接
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_SSDA.md

● 3DTrans代码库SSDA基线算法的构建

3DTrans代码库同样支持了多种半监督算法,包括经典的SESS[5]和Pseudo-Label[5]算法。并且我们给出了在Domain Shifts的情况下,该如何使用上述半监督方法来部署模型到目标域。SSDA的技术路线是:源域预训练模型->在1%/5%的带标注目标域数据下微调->在半监督目标域数据下进行重训练。3DTrans支持的半监督算法如下:

SESS[5]是一种在Mean Teacher范式下,引导教师模型和学生模型对于输入数据的随机扰动来保持预测一致性的算法。它设计了一个特定的基于点的数据扰动方案和三种一致性损失,能够使网络生成更准确的进行检测。我们已经在代码库中复现了SESS并将其应用在了跨域检测中。

Pseudo-Label[5]是针对无标签数据非常经典的一种方法,即由初始模型推理无标注数据,从而产生大量伪标签,通过设计的阈值过滤,最终的伪标注数据与带标注数据共同监督网络的训练。我们在代码库中复现Pseudo-Label方法并将其与Mean Teacher框架结合,应用在跨域检测中。

● 3DTrans@SSDA实验结果
Waymo->nuScenes:

1.2.4 3DTrans@MDF

● 入口链接
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/GETTING_STARTED_MDF.md

● 3DTrans代码库MDF基线算法的构建

3DTrans代码首次支持的3D场景下的MDF任务设定。MDF多域融合是指3D目标检测器在多个数据集上进行联合训练,并且需要尽可能同时在多个数据集实现较高的检测精度。需要注意,相比于Domain Adaptation(DA)领域中的Multi-source Domain Adaptation, 这里所提出的MDF任务不要求不同域之间是close-set闭集关系,即来自于不同域(或数据集)的类别分布式是可以不一致的。相比于Multi-source Domain Adaptation,MDF任务设定弱化了对于不同域之间的数据分布和类别分布的条件限制。

在3DTrans代码库中,我们构建了几种典型的MDF基线模型:

1)Single-dataset training:单数据集训练策略,难以部署到另外的数据集下。

2)Direct Merging:将不同数据集的数据直接合并,并且采用PV-RCNN or Voxel-RCNN等基线模型进行训练,见脚本:slurm_train_multi_db_merge_loss.sh

3)Uni3D训练:将不同数据集的数据直接合并,并采用Dataset-shared Backbones + Dataset-specific Heads的方式进行训练,见脚本:slurm_train_multi_db.sh

● 3DTrans@MDF实验结果(更多结果请参见代码库)
Waymo+nuScenes:

1.2.5 3DTrans@可视化介绍

● 入口链接
https://github.com/PJLab-ADG/3DTrans/blob/master/docs/QUICK_SEQUENCE_DEMO.md

● 3DTrans代码库UDA基线算法的构建

目前现有的一些3D点云代码库的可视化模块都是单帧可视化,缺乏针对时序数据的处理。为此,我们在3DTrans代码库中增加了Sequence-level时序级别的可视化UI工具,可视化效果非常直观。目前主要支持对Waymo,ONCE和nuScenes数据集的时序检测结果的可视化。用户可以给定的一个序列ID,来产生对应的可视化内容

二、Uni3D和Bi3D简要介绍

2.1 Uni3D: CVPR-2023收录

Uni3D是我们针对MDF任务设定,提出的一个通用的解决方案。其可以容易地部署到PV-RCNN、Voxel-RCNN等模型中。另外,我们近期发现其对PV-RCNN++、Centerpoint等基线模型同样有明显提升。详情参考:Uni3D: 首个多数据集3D目标检测框架(已开源)

2.2 Bi3D:CVPR-2023收录

Bi3D是针对ADA任务设定,首次提出的在自动驾驶场景下主动学习解决方案。同样其可以以较低的标注代价来让自动驾驶感知模型适配的没有见过的目标域下。详情参考:Bi3D: 首个主动领域适配3D目标检测算法(已开源)

三、3DTrans正在做什么?

最近火热的ChatGPT/GPT-4等大模型引发了我们对自动驾驶大模型的思考。众所周知,全面、多样的语料库是构建强大、通用的NLP或者跨模态大模型的基石。一些研究表明,如果可以获取到代表力强、差异性强的预训练数据,基础模型的参数量的增加是可以带来预训练性能的提升。

然而,在3D LiDAR自动驾驶场景下,由于不同厂商所提供的原始数据之间的差异很大,导致难以在自动驾驶领域获得一个unified dataset。因此,到目前阶段,我们认为在自动驾驶领域实现通用感知的一个必要路线是进行unified dataset的构建,或者是设计一个unified baseline model使得其可以在带有差异化的数据集中学习到一个unified representations。当然,Uni3D选择了后者。与此同时,我们也并没有放弃对前者的努力,Bi3D就是在探索如何从海量无标注的自动驾驶数据集中挑选出最优价值的数据,这个研究工作的最终目的实际上是为了从目前已知的多个学术数据集中挑选有价值样本,以最小的存储代价构建一个unified dataset。

近期,我们正在探索利用算法从海量自动驾驶数据中挑选出有价值的样本(多样性强、冗余度低),进一步设计有效的解决方案来让模型可以在多源数据中学习到通用表征。“路漫漫其修远矣,吾将上下而求索”,探索自动驾驶感知模型跨传感器、跨数据集、跨任务的通用表征的路途漫长。我们欢迎有相同兴趣爱好的朋友交流、合作、加入我们!(加入我们!)

四、致谢与开发团队

感谢闫翔超(Shanghai AI Laboratory),袁家康(复旦大学),费奔(复旦大学),黄思渊(上海交通大学)和周鸿斌(Shanghai AI Laboratory)对开发3DTrans所做出的贡献。

3DTrans团队开发成员信息:
https://bobrown.github.io/Team_3DTrans.github.io/

此外,我们的3DTrans代码库是基于OpenPCDetv0.5.2(https://github.com/open-mmlab/OpenPCDet/tree/v0.5.2)进行开发,感谢OpenPCDet开发团队的出色代码库。

同时,我们也想利用这个机会感谢ONCE开发团队(https://once-for-auto-driving.github.io/),其公开的大规模数据集支持了3DTrans团队对AD场景下预训练任务的研究。

参考文献:
[1] Jihan Yang, Shaoshuai Shi, Zhe Wang, Hongsheng Li, Xiaojuan Qi. ST3D: Self-training for Unsupervised Domain Adaptation on 3D Object Detection.
[2] Bo Fu, Zhangjie Cao, Jianmin Wang, and Mingsheng Long. Transferable Query Selection for Active Domain Adaptation.
[3] Viraj Prabhu, Arjun Chandrasekaran, Kate Saenko, Judy Hoffman. Active Domain Adaptation via Clustering Uncertainty-weighted Embeddings.
[4] Yan Wang, Xiangyu Chen, Yurong You, Li Erran, Bharath Hariharan, Mark Campbell, Kilian Q. Weinberger, Wei-Lun Chao. Train in Germany, Test in The USA: Making 3D Object Detectors Generalize.
[5] Na Zhao, Tat-Seng Chua, Gim Hee Lee. SESS: Self-Ensembling Semi-Supervised 3D Object Detection.
[6] Antti Tarvainen, Harri Valpola. Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results.
[7] Saining Xie, Jiatao Gu, Demi Guo, Charles R. Qi, Leonidas J. Guibas, Or Litany. PointContrast: Unsupervised Pre-training for 3D Point Cloud Understanding

ning results.
[7] Saining Xie, Jiatao Gu, Demi Guo, Charles R. Qi, Leonidas J. Guibas, Or Litany. PointContrast: Unsupervised Pre-training for 3D Point Cloud Understanding

作者丨上海人工智能实验室智能交通平台组(ADLab)

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

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

相关文章

文心一言 VS chatgpt (21)-- h264编码一帧数据的流程是怎样的?

h264编码一帧数据的流程是怎样的? 文心一言: H.264编码将一帧数据分成多个块,其中每个块可以单独进行编码。编码的过程包括预测、变换和量化等步骤。 具体流程如下: 1.帧内预测:对一帧视频进行编码,首先…

chatgpt赋能python:用Python计算AIC:一种常用的信息标准

用Python计算AIC:一种常用的信息标准 介绍 AIC(赤池信息准则)是一种用于模型选择的信息理论标准,旨在平衡模型复杂度和拟合准确度的权衡。在统计学和机器学习中,模型选择是一项关键任务,因为正确选择模型…

chatgpt赋能python:Python中如何产生0到1包括1的随机数

Python中如何产生0到1包括1的随机数 Python作为一种高级编程语言,被广泛运用于各种程序开发领域,尤其得到了数据科学、数据分析和机器学习领域的青睐。在Python中,实现随机数的生成是很平凡的,下面我将会给大家介绍如何使用Pytho…

chatgpt赋能python:Python的UUID是什么?

Python的UUID是什么? Python的UUID是一种广泛使用的标识符生成器,全称是“通用唯一标识符”。UUID可以帮助你在使用Python编程时生成唯一的ID。无论你在哪个项目中使用Python,UUID都会非常有用。 使用Python编程的开发者一定会碰到需要生成…

股价狂跌超70%,特斯拉到底怎么了?

​在2022年的尾声,曾在新能源汽车领域盛极一时的特斯拉即将取得上市以来最糟糕的年度表现,直接跌出全球上公司市值前10名。目前特斯拉已连续第7个交易日下跌,截至2022年12月28日,跌超11%,创八个月最大跌幅,…

如何查询外文文献?

作为专业的科研人,不具备搜索外文文献的技能怎么能行呢?!今天,我就为大家汇集了各类的外文文献下载途径,内容干货满满,还不快快收藏!一、EBSCOhost 网址:http://search.ebscohost.co…

基于深度学习的人脸面部表情识别方法研究

开发工具(eclipse/idea/vscode等):python tensorflow keras 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):以python为变成语言,使用pycharm进行开发。使用深度学习框架TensorFlow和keras。了准…

基于Python的人脸表情管理系统

人脸表情识别是深度学习领域的研究热点。在现实场景中,人脸图像的采集很容易受到外界不可控因素的影响,使表情图像出现轻微形变和局部位移的问题,导致表情识别率下降,难以满足实际需求。因此本设计针对静态人脸表情进行识别分类&a…

基于Python的面部表情识别分析系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85660758 面部表情识别 练习技能: 爬虫数据清洗计算机视觉(图片基本处理,信息提取)深度学习 图像识别技术文档 一、项目概述 项目名称:面部…

【人脸表情识别】基于图片的人脸表情识别,基本概念和数据集

大家好,欢迎来到我们人脸表情识别的专栏,这是专栏的第一篇文章,今天我们讨论的问题是关于表情识别的基本概念和数据集。 作者&编辑 | Menpinland 在较早之前,有三AI已经有一篇《人脸表情识别研究》的文章,里面已经…

【实战】深度学习构建人脸面部表情识别系统

实战:深度学习构建人脸面部表情识别系统 一、表情数据集 数据集采用了kaggle面部表情识竞赛的人脸表情识别数据集。 https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data 如果数据下载不下来的话&…

icon图标在线制作生成的方法

我们在实际的建站过程中,经常需要制作自己的icon图标文件;又或者我们需要把windows系统里的应用图标改成自定义的图标样式,那么有什么办法能够快速的将一张普通图片经过裁剪等操作后,制作生成一张icon图标文件呢,参考这…

如何给生成的exe加图标

一、简述 今天就简单介绍一下如何给exe加图标,其实很简单,但是主要是为了讲述另一个问题,这也是之前遇到的一个容易忽略的问题。 首先我们了解一下一共有多少个图标可以设置。 看到下面这张图,我们首先会了解到生成的一个exe程…

一键生成iosandroid应用图标

用的在线工具: https://toool.top/app-icon-generate 只需要准备一张 1024 x 1024 的图片 即可生成各个分辨率的应用图标 ,十分方便

奇舞周刊第 488 期:一个服务端同学的 Vue 框架入门及实践

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 一个服务端同学的 Vue 框架入门及实践 做为服务端同学,接触前端代码较少,刚毕业的时候用过 jQuery Bootstrap2/3,当时的感觉就是,容…

国内站的ai聊天网站

国内站的ai聊天网站 网站如下: https://chat-gpt.org/chat其他网站如下: 在线体验ChatGPT网站集合 UI与官方相似https://chat.theb.ai/https://chatgpt-35-turbo.com/https:

Threads实测:和推特很像,马斯克大呼不讲武德

自从马斯克买下了推特,这个全球最大的在线社区就永远不缺少乐子,马斯克的整活能力在全球网红中都算是顶尖的。只不过,以前他只能在自己的推特账号那一亩三分地上整活,把推特买回家后,整个推特都变成了他的“乐园”。前…

AIGC明星独角兽爆雷!7亿融资烧大半,拖欠员工工资,创始人被扒得千疮百孔...

丰色 萧箫 发自 凹非寺 Stable Diffusion背后团队创始人,被曝巨大丑闻! 这两天,福布斯发布的一则长新闻在网上病毒式传播: 30多位前员工投资人现身说法,细数Stability AI老板Emad Mostaque(伊玛德莫斯塔克&…

马化腾聊天截图,被疯狂转发。

推荐阅读: 《在一个公司死磕了 5~10 年的人最后都怎么样了?》 《西安,被误解为贼城似乎是一件很正常的往事......》 1 裁员 前一段时间,一个有大佬九边,写了一篇关于裁员的文章,被马化腾给转发了&#xff0…

在「机器人领域」使用ChatGPT提高生产力

最近几个月,ChatGPT 大火,它是OpenAI于去年11月底推出的人工智能聊天机器人程序,已经成为了历史上增长最快的消费者应用程序 [1]。毫无疑问,ChatGPT受到了各个行业的广泛关注。 其中在机器人领域,微软于今年2月20日发布…