ActiveAnno3D采用主动学习实现领域自适应,实现大规模数据集的快速标注(代码开源)

news2024/10/6 10:37:35

Abstract

大规模数据集的策划仍然成本高昂且需要大量时间和资源。数据通常需要手动标注,创建高质量数据集的挑战依然存在。在这项工作中,我们使用主动学习填补了多模态3D目标检测研究的空白。我们提出了ActiveAnno3D,这是一种主动学习框架,用于选择最具信息量的训练数据样本进行标注。我们探索了各种持续训练方法,并整合了在计算需求和检测性能方面最有效的方法。此外,我们在nuScenes和TUM交通路口数据集上使用BEVFusion和PV-RCNN进行了大量实验和消融研究。结果表明,在使用TUM交通路口数据集的一半训练数据时,使用PV-RCNN和基于熵的查询策略可以实现几乎相同的性能(77.25 mAP对比83.50 mAP)。在使用一半训练数据时,BEVFusion达到了64.31的mAP,而在使用完整的nuScenes数据集时达到了75.0的mAP。我们将主动学习框架集成到proAnno标注工具中,以实现AI辅助的数据选择和标注,并将标注成本降至最低。最后,我们在我们的网站上提供代码、权重和可视化结果:https://active3d-framework.github.io/active3d-framework。

图片

Introduction

标注过程仍然是一个挑战,尤其是对于3D点云。据文献[17]所述,标注一个精确的3D框需要标注人员超过100秒的时间。这相当于nuScenes数据集的标注时间达到7,937小时。由于深度学习模型需要大量标注数据,创建大规模标注3D数据集在开发强大3D感知模型时是一大挑战。为了缓解这一挑战,主动学习旨在通过查询少量未标注数据的标签来减少标注成本,从而在标注尽可能少的样本的情况下最大化模型性能。尽管主动学习通过选择最具信息量的图像和点云帧显著降低了标注成本,但它也会由于反复的模型训练和评估周期而增加计算开销。

Related Research

主动学习技术大致可分为两类:一种依赖于特定任务的特定模型,另一种则更普遍地作用于数据本身,与数据要解决的问题无关(有时称为“基于多样性的方法”)。尽管这些技术可以结合起来创建一个采样策略,但使用基于任务或模型的主动学习策略的好处在于,理论上所选数据将对所需任务的性能优化。

主动学习在自动驾驶中的应用必须具备以下特点:

多任务:识别对一个任务最优的数据是一个良好的开始,但在实际操作中,如果主动学习的目的是减少标注预算,那么这对于必须使用相同精心策划和采样数据来解决多个任务的自动系统帮助不大——例如轨迹预测,标志和灯光检测与分类,动态目标检测和跟踪,车道检测,车辆地标识别等。幸运的是,多任务一致性测量可以通过考虑多个目标任务的性能来指导采样。

多模态:虽然自动驾驶车辆测试床可能配置了多种传感器,但3D目标检测领域的最新技术,关键在于无碰撞驾驶,利用了LiDAR(用于精确测距)和图像(用于语义实用性)。在撰写本文时,nuScenes 3D目标检测排行榜上的前33个模型都使用了这两种模态(实际上,其中两种在中间位置进一步包括了雷达)。大多数3D检测的主动学习研究不包括视觉模态,即使包括,其图像相关模块也未纳入学习循环。我们在最先进的LiDAR+相机架构上引入了主动学习。

开放集:我们还注意到,自动驾驶领域的数据本质上是开放集,这意味着今天数据集中标注的项目可能并不能完全代表在实际驾驶环境中可能出现的所有项目。标准的主动学习方法在开放集设置中由于标注数据和未标注数据之间的类别分布不匹配而不能有效执行,这也强有力地说明了在主动学习模型的分类阶段重要性,因为分类中的不确定性提供了一种识别开放集类别实例的手段。Safaei等人表明使用封闭集熵在类别概率和距离熵在学习特征上可以是有效的学习策略,能够有效地在未知的开放集池中学习,尽管这尚未应用于自动驾驶数据,因为他们的实验是在CIFAR和TinyImageNet基准上进行的。这进一步激发了我们在自动驾驶领域探索基于熵的主动学习。

图片

Method

1、采用主动学习进行3D目标检测
3D目标检测对自动驾驶和移动机器人至关重要,但构建精确的3D目标检测器依赖于大量标注数据集的可用性,而在有限的标注预算下,这是一项特别具有挑战性的任务。主动学习提供了一种有前途的解决方案,通过仅查询未标注数据池的一小部分数据的标签来减少标注成本。基于标准的查询选择过程迭代地选择最具信息量的样本进行后续模型训练,直到标注预算耗尽。在此基础上,我们将基于池的主动学习框架部署到一个仅使用LiDAR的两阶段3D目标检测器和一个多模态3D目标检测器上,采用了中的熵查询策略。我们研究了使用持续训练策略来解决主动学习资源消耗大的问题.

图片

2、熵查询: 在主动学习中,查询策略是选择下一个要注释的数据样本的关键。熵查询是一种策略,用于评估模型预测的不确定性。熵 H(X) 使用以下公式计算:

H(X)=−i∑(P(xi)logP(xi))

这里,P(xi) 表示模型分配给类 xi 的概率。高熵表示不确定性较高,表明这些样本对于注释来说是最具信息量的。
3、仅LiDAR的3D物体检测中的主动学习: 首先,使用两阶段的PV-RCNN模型进行仅LiDAR的3D物体检测。在推理阶段,使用各种查询策略,包括基于不确定性、基于多样性和混合方法,每种方法都有其选择信息样本的特定标准。其中一种提到的策略是T-CRB(临时一致性CRB),设计用于从未标记数据池中选择最具信息量的时间一致性点云集。
4、 选择一个目标检测模型

图片

5、持续训练策略采用了一种主动学习方法,其中初始的3D检测器在最初标记的数据集上进行预训练。查询策略通过连续的训练周期识别最具信息量的数据样本,并从“神谕”那里获取标签。随后,使用增强的训练集更新初始模型。然而,这个过程以其时间和资源密集性为特征,因为模型在每个训练周期都会从头开始重新训练,使用不断扩展的标记数据集。此外,这种方法忽略了在先前训练周期中积累的知识。为了解决这一挑战,我们增强了主动训练周期,通过整合多种连续训练策略。

Experiments

下图提供了与主动学习中各种查询策略相关的3D物体检测性能见解。评估涵盖了诸如BADGE 、CoreSet 、蒙特卡洛抽样、置信度抽样、CRB以及时间修改的CRB(T-CRB)等多种策略。这种分析有助于精确定位最有效的方法,以适应TUM交通十字路口数据集的独特特征。表II中的结果显示,在TUM交通十字路口数据集上,PV-RCNN检测器使用随机抽样查询策略表现优于熵查询策略,如图4左侧所示。然而,在LiDAR+摄像头模型中,情况并非如此。如图4右侧所示,在除第四轮外的每一轮中,熵查询策略都优于随机查询策略。

图片

图片

图片

总结

文章的主要贡献包括:
1、提出了ActiveAnno3D框架,用于选择对训练最有信息量的样本进行标记。
2、探索了不同的持续训练方法,并集成了计算需求和检测性能最高效的算法。

3、在nuScenes和TUM Traffic Intersection数据集上对BEVFusion和PV-RCNN进行了广泛的实验和消融研究。将ActiveAnno3D集成到proAnno标记工具中,以实现AI辅助数据选择和标记,最小化标记成本。

引用:

ActiveAnno3D - An Active Learning Framework for Multi-Modal 3D Object Detection

欢迎关注我的公众号auto_driver_ai(Ai fighting), 第一时间获取更新内容。

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

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

相关文章

基于香橙派AIpro搭建的车牌识别系统

引言 本人正有学习嵌入式的想法,正好碰到机会让我搞了块OrangePi AIpro(香橙派AIpro)开发板,正合我意,直接上手进行体验,顺便给大家分享下我的实践过程。 开发板介绍与初次启动 OrangePiAIPro开发板是香…

7_1_SVPWM概述

1、SPWM 正弦脉宽调制法(SPWM)是将每一正弦周期内的多个脉冲作自然或规则的宽度调制,使其依次调制出相当于正弦函数值的相位角和面积等效于正弦波的脉冲序列,形成等幅不等宽的正弦化电流输出。 通过调整占空比使等效电流近似为正弦…

【BUUCTF-PWN】13-jarvisoj_level2_x64

参考:BUU pwn jarvisoj_level2_x64 64位函数调用栈 - Nemuzuki - 博客园 (cnblogs.com) 64位,开启了NX保护 执行效果如下: main函数: vulnerable_function函数 read函数存在栈溢出,溢出距离为0x808 查找后门…

YOLOv8改进 | 代码逐行解析(三) | YOLO中的Mosaic增强详解(带你分析你的数据集是如何输入给模型,mosaic)

一、本文介绍 本文给大家带来的是YOLOv8中的Mosaic增强代码的详解,可能有部分人对于这一部分比较陌生,有的读者可能知道Mosaic增强但是不知道其工作原理,具体来说Mosaic增强就是指我们的数据集中的图片在输入给模型之前的一个处理过程(我们的图片并不是直接就输入给模型了…

信号量——Linux并发之魂

欢迎来到 破晓的历程的 博客 引言 今天,我们继续学习Linux线程本分,在Linux条件变量中,我们对条件变量的做了详细的说明,今天我们要利用条件变量来引出我们的另一个话题——信号量内容的学习。 1.复习条件变量 在上一期博客中&…

音频流格式启用数据流

音频流格式启用数据流 音频流格式启用数据流使用 AudioStreamBasicDescription 结构在哪里以及如何设置流格式 音频流格式启用数据流 在单个样本帧级别处理音频数据时,就像使用音频单元一样,仅仅指定正确的数据类型来表示音频是不够的。单个音频样本值中…

【spring MVC的执行流程】

SpringMVC可以说是Servlet的封装,屏蔽了Servlet的很多细节,比如Servlet再获取参数的时候需要不停地getParameter,现在只要在SpringMVC方法定义对应的JavaBean,只要属性和参数名一致,SpringMVC就可以帮我们实现将参数封装到JavaBea…

android应用的持续构建CI(三)-- 手动签名

一、背景 关于android应用的签名及其原理,很多文章都有讲述,无意重复赘述。 本文紧接上文,站在运维的角度,对开发是透明的。 但是它又和gradle build 构建动作是紧密相关的。 第一步使用jdk的keytool生成证书文件,…

kubeadm快速部署k8s集群

Kubernetes简介 Kubernetes,简称k8s,容器编排引擎,以API编程的方式管理安排各个容器的引擎。 k8s会在多台node服务器上调度pod进行部署和扩缩容每个pod内部可以含有多个container每个container本质上就是一个服务进程 1、k8s集…

Python 3.x 下的 3D 游戏引擎

在 Python 3.x 中,有几个比较流行的用于开发 3D 游戏的引擎和库。虽然 Python 自身不是一个主流的游戏开发语言,但是可以通过这些库和引擎结合其它语言或者底层渲染引擎来实现复杂的游戏开发。 1、问题背景 在 Linux 系统中,尤其是 Debian 7…

clone()方法

在Java中,clone() 方法是一个非常有趣且强大的工具,用于创建对象的一个副本。这个方法位于 Object 类中,因此可以被所有类使用。让我们讨论一下它的几个要点: 什么是克隆? 克隆就是创建一个对象的新副本,这…

3-1 激活函数和神经网络思想

3-1 激活函数和神经网络思想 主目录点这里

机器学习原理之 -- 梯度提升树(GBT)原理详解

梯度提升树(Gradient Boosting Trees, GBT)是一种强大的机器学习算法,广泛应用于分类和回归任务。它通过集成多个弱学习器(通常是决策树)来构建一个强大的预测模型,具有较高的准确性和鲁棒性。本文将详细介…

android应用的持续构建CI(四)-- 依赖环境(兼容多版本的gradle和jdk)

一、背景 android应用的构建前提是,安装好了gradle和jdk。在实际使用的过程中,不同的android应用,对gradle和jdk的版本要求不一。 于是,在jenkins服务器上,我们需要安装多种版本的gradle和jdk。 安装过jdk的小伙伴应…

Rethinking Federated Learning with Domain Shift: A Prototype View

CVPR2023,针对分布式数据来自不同的域时,私有模型在其他域上表现出退化性能(具有域转移)的问题。提出用于域转移下联邦学习的联邦原型学习(FPL)。核心思想是构建集群原型和无偏原型,提供富有成效的领域知识和公平的收敛目标。将样本嵌入拉近到属于相同语义的集群原型,而…

昇思25天学习打卡营第10天|利用 MindSpore 实现 BERT 对话情绪识别的完整攻略

目录 环境配置 导入模块和库 准备数据集 数据集下载和压缩 数据加载和数据预处理 进行模型的构建和优化器的设置 配置和准备模型的训练过程 测量训练操作的执行时间 模型验证 模型推理 自定义推理数据集 环境配置 首先,利用“%%capture captured_output”来捕获…

银湖资本在中国设立公司运营点,全球投资巨头的新篇章!

近日,全球知名私募股权投资公司银湖资本宣布在中国设立公司运营点。一点是银湖资本在国内安置了两个办事营业点,一个在黑龙江,一个在广州等一线城市。这一举动标志着银湖资本在全球范围内的扩展进入了新的阶段,同时也展示了其对中…

iOS手机竖着拍的照片被旋转了90°的原因以及解决方案

EXIF.getData(IMG_FILE, function () { // IMG_FILE为图像数据 var orientation EXIF.getTag(this, “Orientation”); console.log(“Orientation:” orientation); // 拍照方向 }); 获取拍照方向的结果为1-8的数字: 注意:对于上面的八种方向中&a…

Xilinx FPGA:vivado关于真双端口的串口传输数据的实验

一、实验内容 用一个真双端RAM,端口A和端口B同时向RAM里写入数据0-99,A端口读出单数并存入单端口RAM1中,B端口读出双数并存入但端口RAM2中,当检测到按键1到来时将RAM1中的单数读出显示到PC端,当检测到按键2到来时&…

从单体服务到微服务:预初始化属性多模式 Web 应用开发记录<四> FreeMarker 视图首次渲染优化

欢迎关注公众号&#xff1a;冬瓜白 相关文章&#xff1a; 多模式 Web 应用开发记录<一>背景&全局变量优化多模式 Web 应用开发记录<二>自己动手写一个 Struts多模式 Web 应用开发记录<三>预初始化属性 经过一段时间的开发和测试&#xff0c;我们成功地…