ImageNet 2.0?自动驾驶数据集迎来自动标注新时代

引言: 3DGS因其渲染速度快和高质量的新视角合成而备受关注。一些研究人员尝试将3DGS应用于驾驶场景的重建。然而,这些方法通常依赖于多种数据类型,如深度图、3D框和移动物体的轨迹。此外,合成图像缺乏标注也限制了其在下游任务中的直接应用。这些挑战促使研究者们寻求更简便高效的解决方案。

©️【深蓝AI】编译

论⽂题目:EGSRAL:An Enhanced 3D Gaussian Splatting based Renderer with Automated Labeling for Large-Scale Driving Scene

论文作者:Yixiong Huo, Guangfeng Jiang, Hongyang Wei, Ji Liu, Song Zhang, Han Liu, Xingliang Huang, Mingjie Lu, Jinzhang Peng, Dong Li, Lu Tian, Emad Barsoum

论文地址:https://arxiv.org/abs/2412.15550

为了解决上述问题,作者提出了EGSRAL,这是一种基于3DGS的方法,完全依赖训练图像而无需额外的标注。EGSRAL增强了3DGS在建模动态物体和静态背景方面的能力,并引入了一种新颖的适配器用于自动标注,能够根据现有的标注生成相应的注释。此外,研究人员还提出了一种分组策略,用于解决在渲染大规模复杂场景时的透视问题。这些创新使得EGSRAL在无需额外标注的情况下,能够高效地处理复杂的驾驶场景,并生成大量带标注的图像数据。

实验结果表明,EGSRAL在多个数据集上实现了最先进的性能。结合3DGS强大的多视角合成能力,该方法有望成为自动驾驶领域的ImageNet2.0,为该领域贡献出极大地图像数据集。

1、引入

合成逼真的新视角在计算机视觉和图形学领域中是一个复杂而关键的挑战。随着神经辐射场(NeRFs)的快速发展,自由视角合成逐渐转向大规模视角合成领域,特别是在合成对自动驾驶至关重要的街景方面。然而,由于地理位置的复杂性、多样的环境和变化的道路条件,模拟户外环境具有很大挑战。图像到图像的转换方法被提出用于通过学习源图像与目标图像之间的映射来合成语义标注的街景。虽然这些方法能够生成视觉上令人印象深刻的街景图像,但在局部细节中往往会出现明显的伪影和纹理不一致的问题。此外,合成图像的视角相对统一,这在复杂的自动驾驶场景中应用时也带来了挑战。

为了解决这些挑战,Drive-3DAu引入了一种使用NeRF的3D数据增强方法,旨在在3D空间中增强驾驶场景。DGNR提出了一个新颖的框架,通过从场景中学习密度空间来指导点基渲染器的构建。同时,READ提供了一个大规模的驾驶模拟环境,用于生成用于先进驾驶辅助系统的逼真数据。基于3DGS的方法由于其优越的生成能力,已被用于合成驾驶场景。尽管这些方法生成了适用于自动驾驶的逼真图像,但它们无法同时合成新视角并提供相应的2D/3D标注框,而这些标注框对于监督模型训练至关重要。因此,提升大规模场景的新视角合成能力并实现新视角的自动标注仍然是自动驾驶领域的关键挑战。

为了克服这些挑战,作者提出了一种名为EGSRAL的新框架,基于增强的3DGS技术。该框架在提高新视角合成质量的同时,能够生成相应的标注。具体而言,团队提出了一个形变增强模块,用于细化高斯形变场,增强对动态物体和静态背景的建模能力。此外,他们还引入了一个不透明度增强模块,利用神经网络取代原有的可学习参数,显著提升了复杂驾驶场景的建模能力。进一步地,为了解决在渲染大规模复杂场景时视角不合理的问题,即不应包含被遮挡的远处高斯点,研究人员还为原始3DGS提出了一种分组策略。

总的来说,研究工作的贡献如下: (1) 提出了一个名为EGSRAL的增强型3DGS渲染器,能够基于现有数据集的标注合成带有相应标注的新视角图像。EGSRAL引入了形变增强模块和不透明度增强模块,提升了3DGS在复杂场景中的建模能力。 (2) 此外,为了解决在渲染大规模复杂场景时视角不合理的问题,提出了原始3DGS的分组策略。 (3) 与之前仅关注新视角合成的方法不同,作者还提出了一种带有三个约束的适配器,能够将相邻的标注框转换为自动驾驶领域中新视角的标注框。 (4) 实验结果表明,该方法在大规模场景的渲染性能上优于现有方法。此外,带有相应标注的新视角图像显著提升了2D/3D检测模型的性能。这一成果不仅展示了3DGS在实际应用中的潜力,也为未来自动驾驶和计算机视觉领域的研究提供了新的思路和方法。

▲图1|全文方法总览©️【深蓝AI】编译

2、具体方法与实现

基于结构光测量(SfM)方法估计的驾驶场景输入图像序列和点云,EGSRAL框架能够从多个视角合成逼真的驾驶场景,同时自动标注相应的新合成视图。本文还提出了一种分组策略,以解决大规模驾驶场景中的透视问题。本文的框架分为两部分:增强型3DGS渲染和新视角自动标注,如图1所示为整体EGSRAL框架示意图,本文先对这个图进行一个整体的解读,由图可见,EGSRAL框架首先对输入图像进行对齐,随后使用由结构光测量(SfM)生成的点云来初始化3D高斯。一个可变形网络(橙色模块)构建3D高斯形变场,而形变增强模块(DEM)(黄色模块)对该形变场进行优化。不透明度增强模块(OEM)(蓝色模块)则负责优化不透明度。为了应对大规模复杂场景中的透视问题,采用了基于分组的训练和渲染策略(绿色模块)。此外,适配器通过三个约束条件(橙色)进行训练,以增强其坐标关系建模能力。在推理阶段,这些模块将渲染并合成带有相应标注的新视角图像。同时,本文通过创新模块对其进行了扩展,以改进新视角合成。对于自动标注,本文引入了一个适配器,用于转换相机姿态和边界框,生成新视角的相应注释。

2.1 增强型3DGS渲染

3DGS通常用于建模静态场景,其处理动态场景的能力有限。近期的研究集中于改进动态场景的建模。本文以可变形3DGS作为基线,并将其应用于自动驾驶场景的重建。这种方法为静态背景和动态物体使用统一的形变场。为了更好地表示每个高斯原语的状态,本文引入了状态属性d ∈ Rd×1,隐式指示原语是静态还是动态。本文通过结合形变增强模块进一步增强了形变场。该模块解码每个高斯原语的状态属性d和时间编码γ(t),以确定形变场的调整因子。认识到不透明度在渲染中的重要性,本文还引入了不透明度增强模块以提升建模能力。

可变形3DGS网络。为了减少数据依赖性,本文仅使用图像数据进行驾驶场景重建。首先,通过SfM初始化一组3D高斯G(x,r,s,σ)其中x、r、s和σ分别代表高斯原语的位置、四元数、缩放和不透明度。为了更好地建模动态3D高斯,可变形3DGS引入了一个形变场,该形变场以位置x和时间t为输入,分别预测x、r和s的偏移量δx、δr和δs。随后,这些形变后的3D高斯G(x+δx,r+δr,s+δs,σ)通过一个可微分的瓷砖光栅化器渲染出新图像:

C\{u,v\} = \sum_{i \in N} T_i \alpha_i c_i

其中,C\{u,v\}表示(u, v)像素的渲染颜色,Ti是由定义的透射率,ci是每个高斯原语的颜色,αi通过评估带有协方差矩阵的2D高斯并乘以每个原语的学习不透明度计算得到。然而,可变形3DGS在有效建模动态物体和静态背景方面存在困难。本文认为这是由于3D高斯无法充分表示动态和静态元素。为了解决这一问题,本文为每个高斯原语引入了状态属性d,并将其作为输入传递给可变形网络。此增强提升了网络捕捉高斯原语状态的能力:

(\delta x, \delta r, \delta s) = F_{\theta} (\gamma(sg(x)), \gamma(t), d)

其中Fθ,代表可变形网络的参数,sg(·)表示停止梯度操作,γ是位置编码。形变增强模块(DEM)。为了进一步增强动态物体的建模能力,本文提出了一个形变增强模块,根据高斯原语的时间t和状态属性d微调形变场。具体而言,本文使用状态属性d和时间编码γ(t)作为输入,输出每个高斯原语形变场的调整因子αp:

\alpha_p = \text{sigmoid} (\text{MLP}_1 (F_{\beta} (d, \gamma(t), x - c_{\text{view}})))

其中,表示动态编码网络的参数,是激活函数。此外,在驾驶场景中,本文使用不透明度调整因子ασ动态调整动态物体的不透明度,以更有效地建模其出现和消失: 其中,tanh(·)是激活函数。通过使用调整因子αp和ασ,本文将形变后的3D高斯属性从G1修改为G(x+δx,r+δr,s+δs),使形变场能够更详细地建模动态物体和静态背景。 不透明度增强模块(OEM)。如图像渲染公式所示,当前像素的渲染依赖于高斯原语的颜色和不透明度。为了增强不透明度预测的能力,本文通过将不透明度初始化为可训练参数σ′ ∈ R16×1,并引入一个轻量级网络加速不透明度优化: σ=Fη 其中,Fη是不透明度增强模块的参数。

▲图2|分组策略图示©️【深蓝AI】编译

分组策略(GPS)。之前基于3DGS的驾驶场景重建方法未考虑大规模场景。为了解决这一问题,本文提出了一种分组策略。如图2(a)所示,本文使用固定的图像间隔将场景划分为N组,并为每个高斯原语分配一个组识别id,这使本文能够基于这些组id执行后续的克隆、拆分和渲染。通过分组策略,本文解决了不合理视场的问题。如图2(c)所示,原始3DGS的渲染视场包括远处被遮挡的高斯原语(绿色矩形),这是不切实际的。通过分组(红色矩形),本文将视场限制在特定范围内,从而通过排除该范围外的高斯原语减少优化负担。与DrivingGaussian的静态增量训练模式不同,本文的方法避免了顺序分组训练和为每个组单独使用可变形网络,减少了模型数量并缩短了训练时间。然而,高斯原语的不同位置分布可能影响收敛性。为了解决这一问题,本文引入了多组联合优化策略。如图2(b)所示,每组独立执行前向传播以累积梯度。所有组完成前向传播后,本文执行梯度反向传播以优化网络参数,稳定可变形网络的训练。此外,为了解决3DGS在初始帧中的重建质量差的问题,本文提出了重叠训练策略。具体而言,对于每组,本文使用前一组的N张图像训练当前组,显著提高了重建质量。

2.2 新视角自动标注

适配器需求。本文的方法利用图像序列(数据集)构建场景点云,并使用SfM方法估计相机姿态和参数。生成的点云和相机姿态定义在SfM方法生成的新坐标系中。然而,图像序列的3D注释和相应的相机姿态定义在原始世界坐标系中。因此,存在两个不同的坐标系:原始世界坐标系(OWCS)和SfM方法估计的世界坐标系(EWCS)。本文的渲染器基于EWCS进行训练,因为它接受EWCS中的估计点和相机姿态作为输入。用于生成新视角图像的新相机姿态也基于EWCS,这使得在OWCS中利用数据集的3D注释变得复杂。需要一个变换适配器来建立这两个坐标系之间的关系,使本文能够有效地利用3D注释。该适配器将坐标从OWCS转换为EWCS。因此,来自OWCS的新视角相机姿态可以转换为EWCS并输入渲染器生成新视角图像。

本文的适配器。本文使用神经网络来建模两个坐标系中相机姿态的转换关系,该网络以OWCS中的相机姿态作为输入,预测EWCS中的相应相机姿态。本文将相机姿态表示为包含旋转和平移信息的3×4矩阵。因此,输入和输出的形状均为3×4。本文使用多层感知器(MLP)构建适配器,如图3所示,适配器的主干由8层MLP组成,输出头是一个简单的线性层,用于预测EWCS中的相机姿态。为了优化适配器,本文在训练过程中引入了三个约束条件。

适配器的约束条件。为了有效训练适配器,本文需要数据集中两个坐标系中的相机姿态。可以直接获取这些系统中相同帧的相机姿态对,每对包括OWCS和EWCS中的相机姿态。本文采用smoothL1损失,确保适配器的预测与EWCS中对应的SfM相机姿态紧密匹配,给定OWCS中的原始相机姿态。相机姿态约束的损失函数为:

L_p = \text{smoothL1} (P_A, P_S)

其中,Lp是现有相机姿态约束的损失,PA是适配器在给定OWCS中相机姿态P时预测的姿态,PS是SfM在EWCS中生成的对应姿态。应用初始约束后,适配器可以在两个坐标系之间转换现有相机姿态。然而,由于相机姿态对的数量有限,适配器的泛化能力受限,导致在未包含在现有对中的新相机姿态下表现不佳。为了解决这一问题,本文引入了新的相机姿态约束。

新视角相机姿态约束旨在通过利用现有数据约束新相机姿态,增强适配器的泛化能力。基于同一物体在两个相机坐标系中的投影一致性规则,本文提出了一种为新相机姿态构建投影约束的方法。具体而言,针对数据集中的相机姿态P,作者使用随机位置变换(RPT)模块采样一个附近的新姿态Pnov。该新姿态在估计世界坐标系(EWCS)中对应一个相机姿态Pnov S,但这一对应关系是隐式的,无法直接获得。接下来,作者选取当前相机姿态之后的N个相机姿态对,并将它们投影到两个不同坐标系中的新相机姿态平面。对应的投影点需要在两个坐标系中的像素坐标保持一致。

如图3所示,首先通过坐标转换模块(CCM)利用坐标转换公式将原始世界坐标系(OWCS)中的点转换到相机坐标系中。然后,在新相机姿态的坐标系中,相对姿态Pn+i nnov被表示出来。接下来,这些点被投影到新相机姿态的平面上。图3还展示了点投影模块(PPM),该模块负责将相机坐标系中的点投影到像素坐标系中。

▲图3|坐标系转换图示©️【深蓝AI】编译

接下来,本文利用相机内参矩阵计算新相机姿态平面上的像素坐标。具体来说,首先通过相机内参矩阵和相机姿态的平移部分,将相对相机姿态的三维坐标转换为像素坐标系中的二维坐标。这样得到的像素坐标用于后续的投影约束。投影约束的目标是确保在估计的新相机姿态下,不同坐标系中的相机姿态投影结果一致。为了实现这一点,适配器需要通过训练,使得在新相机姿态下,相对姿态的像素坐标在不同坐标系中保持一致。

由于仅依赖像素坐标的约束只能限制坐标之间的比例关系,而无法确定具体的位置信息,适配器在这种情况下难以收敛到理想的结果。为了解决这一问题,本文将相机坐标系中的位置信息约束纳入整体损失函数中。考虑到真实相机内参与通过结构光测量方法估计的相机内参相似,本文假设在适配器训练的初始阶段,相机坐标系中的位置信息是一致的。随着训练的进行,可以逐步减少对相机坐标系位置约束的权重,从而优化适配器的性能。

整体损失函数综合了现有相机姿态约束、三维坐标系中的相机姿态约束以及投影像素坐标中的相机姿态约束。这些损失项分别通过不同的权重进行调节,以确保适配器在训练过程中能够有效地学习两个坐标系之间的转换关系。通过这种多重约束的方式,适配器不仅能够准确预测新相机姿态,还能够在不同视角下保持投影的一致性,从而提升自动标注的准确性和可靠性。

注释生成。在推理阶段,如图1所示,作者首先从数据集中获取原始相机姿态。该姿态经过随机位置变换(RPT)模块进行仿射随机变换,生成新的姿态。接着,新姿态被输入到适配器中,生成对应于估计世界坐标系的姿态。将新姿态输入渲染器后,可以生成相应的新视角图像。同样,对原始数据集的注释应用相同的仿射变换,得到对应的新标注,这与新视角渲染的图像相对应。最后,将新视角渲染与新标注生成结合,生成带有注释的新视角图像,实现了自动标注。

3.实验

作为一个数据集生成方法,本文的实验设置和大多数数据集生成方法类似,主要从生成质量,标注精度两个角度出发,对方法进行评估,值得Highlight的一点是作者做了大量的可视化实验,因此我们能够很清晰明了的观测到本方法的具体效果。

▲图4|数值实验©️【深蓝AI】编译

图4所示为数值对比实验,需要关注的点有两个地方,第一个是算法的PSNR,这代表图像渲染质量,直接决定了数据集的好坏,显然本文的算法在多个数据集上与当前的SOTA方法相比都取得了领先。

▲图5|标注生成可视化实验©️【深蓝AI】编译

▲图6|标注生成数值实验©️【深蓝AI】编译

图5为可视化的标注生成实验效果,包含了室外的多个不同场景,从标注的可视化结果来看能够直观清晰的体会到本文方法自动标注生成的出色效果,标注的Bonding Box仅仅的贴住了物体的边缘。图6所示的标注生成数值结果取得的优秀成绩也佐证了这一点。

总结

在本文中,作者提出了 EGSRAL,这是一种新颖的基于3DGS的渲染器,它配备了一个自动标注框架,能够合成带有相应标注的新视角图像。对于新视角渲染,我们引入了两个有效的模块来提升 3DGS对复杂场景进行建模的能力,并提出了一种分组策略以解决大规模场景视角不合理的问题。对于新视角自动标注,作者提出了一种适配器来为新视角生成新的标注。实验结果表明,EGSRAL 在新视角合成方面显著优于现有方法,并且在带标注图像上实现了卓越的目标检测性能。

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

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

相关文章

stm32 智能语音电梯系统

做了个stm32智能语音控制的电梯模型,总结一下功能,源码用ST的HAL库写的,整体流程分明。 实物图 这个是整个板子的图片,逻辑其实并不复杂,只是功能比较多,在我看来都是一些冗余的功能,但也可能是…

多模态论文笔记——CogVLM和CogVLM2

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型的LoRA版本——CogVLM和CogVLM2。在SD 3中使用其作为captioner基准模型的原因和优势。 文章目录 CogVLM论文背景VLMs 的任务与挑战现有方法及…

【react】Redux的设计思想与工作原理

Redux 的设计理念 Redux 的设计采用了 Facebook 提出的 Flux 数据处理理念 在 Flux 中通过建立一个公共集中数据仓库 Store 进行管理,整体分成四个部分即: View (视图层)、Action (动作)、Dispatcher (派发器)、Stor…

PCB层叠结构设计

PCB层叠结构设计 层叠结构设计不合理完整性相关案例:在构成回流路径时,由于反焊盘的存在,使高速信号回流路径增长,造成信号回流路径阻抗不连续,对信号质量造成影响。 PCB层叠结构实物:由Core 和 Prepreg&a…

爬虫在分析网站结构时的注意事项及代码示例

在进行网络爬虫的开发时,准确分析目标网站的结构是至关重要的一步。这不仅关系到爬虫的效率和效果,还涉及到是否能够合法合规地获取数据。本文将探讨在分析网站结构时需要注意的几个关键点,并提供相应的代码示例。 1. 网站的响应方式 首先&…

LLM训练的数据以及流程,怎么微调

LLM训练的数据以及流程,怎么微调 训练数据来源 互联网文本:从网页、新闻文章、博客、论坛等收集大量的文本内容。例如,Common Crawl项目会定期抓取大量的网页数据,为LLM训练提供了丰富多样的文本来源,这些数据涵盖了各种领域和主题,如科技、文化、娱乐、政治等.书籍文献…

【Cesium】七、设置Cesium 加载时的初始视角

文章目录 一、前言二、实现方法2.1 获取点位、视角2.2 设置 三、App.vue 一、前言 在前面的文章 【Cesium】三、实现开场动画效果 中有提到过 虽然也能回到初始点位但是有一个明显的动画过程。下面方法加载时就是在初始点位 没有动画效果,根据需求选择。 本文参考…

Edge安装问题,安装后出现:Could not find Edge installation

解决:需要再安装(MicrosoftEdgeWebView2RuntimeInstallerX64)。 网址:https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/?formMA13LH#download 如果已经安装了edge,那就再下载中间这个独立程序安装就…

日期时间选择(设置禁用状态)

目录 1.element文档需要 2.禁用所有过去的时间 3.设置指定日期的禁用时间 <template><div class"block"><span class"demonstration">起始日期时刻为 12:00:00</span><el-date-pickerv-model"value1"type"dat…

【《python爬虫入门教程11--重剑无峰168》】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找&#xff1f;-- 如果用edge也是类似的1.chrome…

grep -nr递归过滤文本时,如何忽略node_modules目录

在使用 grep -nr 递归过滤文本时&#xff0c;如果需要忽略 node_modules 目录&#xff0c;可以使用 --exclude-dir 参数&#xff0c;具体方法如下&#xff1a; 方法 1&#xff1a;使用 grep --exclude-dir grep -nr "your_search_text" --exclude-dirnode_modules .…

Spring Boot 3 文件下载、多文件下载以及大文件分片下载、文件流处理、批量操作 和 分片技术

在 Spring Boot 3 中&#xff0c;实现文件下载、多文件下载以及大文件分片下载需要结合以下功能&#xff1a;文件流处理、批量操作 和 分片技术。以下是详细实现方案&#xff1a; 1. 单文件下载 基础的单文件下载实现&#xff0c;可以参考以下代码&#xff1a; GetMapping(&…

系统架构风险、敏感点和权衡点的理解

系统架构是软件开发过程中的关键环节&#xff0c;它决定了系统的可扩展性、稳定性、安全性和其他关键质量属性。然而&#xff0c;架构设计并非易事&#xff0c;其中涉及的风险、敏感点和权衡点需要仔细考虑和处理。本文将详细探讨系统架构风险、敏感点和权衡点的概念&#xff0…

locate() 在MySQL中的用法

语法&#xff1a; 在MySQL中&#xff0c;LOCATE() 是一个字符串函数&#xff0c;用于返回一个子字符串在另一个字符串中第一次出现的位置。如果子字符串不存在&#xff0c;则返回0。这个函数的语法如下&#xff1a; LOCATE(substring, string[, start])substring&#xff1a;…

智能电话机器人优势是什么

在当今数字化转型加速的背景下&#xff0c;智能电话机器人&#xff08;IVR&#xff09;作为客户服务和业务流程优化的重要工具&#xff0c;正逐渐成为企业提升运营效率和服务质量的关键组成部分。 提高服务效率与响应速度 智能电话机器人能够自动处理大量重复性的查询和事务&…

leetcode热题100(79. 单词搜索)dfs回溯 c++

链接&#xff1a;79. 单词搜索 - 力扣&#xff08;LeetCode&#xff09; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的…

安全运营 -- splunk restapi 最小权限

0x00 背景 最小化权限原则&#xff0c;为每个功能&#xff0c;每个账户分配最小的权限。 0x01 实践 只需要7个 capability: Youll need to add certain capabilities to that user or that userss role(s).[capability::rest_apps_management] * Lets a user edit settings …

C++ 设计模式:备忘录模式(Memento Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 状态模式 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。这个模式在需要保存和恢复对象状态的场景中非常有用&#xff…

用PicGo向Github图床上传图片,然后通过markdown语言显示图片

目录 下载PicGo软件图床GitHub设置在Markdown中使用图片 下载PicGo软件 先进入Pic官网&#xff0c;然后点击下图中的免费下载 然后点击下载下图中PicGo-Setup-2.4.0-beta.9.exe这个可执行软件 图床GitHub设置 点击PicGo中的图床设置&#xff0c;再点击其中的Github&#xff…

鸿蒙开发:实现键值数据库存储

前言 鸿蒙当中数据持久化存储&#xff0c;为我们提供了多种的实现方式&#xff0c;比如用户首选项方式&#xff0c;关系型数据库方式&#xff0c;键值型数据库方式&#xff0c;文件存储方式等等&#xff0c;对于数据量比较的小的&#xff0c;我们直接选择轻量级的用户首选项方式…