南开大学联合同济大学发布最新SOTA Occ OPUS:使用稀疏集进行占据预测,最快实现8帧22FPS

news2024/11/16 7:25:06

Abstract

占据预测任务旨在预测体素化的 3D 环境中的占据状态,在自动驾驶社区中迅速获得了关注。主流的占据预测工作首先将 3D 环境离散化为体素网格,然后在这些密集网格上执行分类。然而,对样本数据的检查显示,大多数体素是未占据的。对这些空体素执行分类需要次优的计算资源分配,并且减少这些空体素需要复杂的算法设计。为此,我们提出了一个新的占据预测视角:将其公式化为简化的集合预测范式,无需显式的空间建模或复杂的稀疏化程序。我们提出的框架称为 OPUS,使用 transformer 编码器-解码器架构,通过一组可学习的查询同时预测占据位置和类别。首先,我们使用 Chamfer 距离损失将集合到集合的比较问题扩展到前所未有的规模,使得端到端训练此类模型成为可能。随后,使用基于学习位置的最近邻搜索自适应地分配语义类别。此外,OPUS 还引入了一系列非平凡策略来增强模型性能,包括粗到细学习、一致性点采样、自适应重加权等。最终,与当前最先进的方法相比,我们最轻量的模型在 Occ3D-nuScenes 数据集上以接近 2 倍的 FPS 达到了更高的 RayIoU,而我们最重的模型则在 RayIoU 上超越了之前的最佳结果 6.1。

代码获取:https://github.com/jbwang1997/OPUS

 欢迎加入自动驾驶实战群

Introduction

与已经成熟的框表示法相比,基于体素的占据预测能够为周围场景提供更精细的几何和语义信息。例如,使用边界框描述车门打开的车辆或支撑脚展开的起重机并不简单,而占据预测可以自然地描述这些不常见的形状。因此,占据预测在自动驾驶社区中迅速受到重视。

最近的方法大多依赖于密集数据表示,特征点与物理体素之间有直接的一对一对应关系。然而,大多数物理体素是空的。例如,在 SemanticKITTI 数据集中,约 67% 的体素是空的,而在 Occ3D-nuScenes 数据集中,这一比例超过 90%。这种占据数据的稀疏性使得直接密集表示极其低效,因为大多数计算资源都用于空体素。为缓解这种低效,研究人员探索了稀疏的潜在表示,例如三视角表示或缩减解空间的方法,显著减少了计算成本。然而,这些方法仍将占据预测视为在特定位置上的分类问题,导致需要复杂的中间设计和显式的 3D 空间建模。

在这项工作中,我们将任务公式化为直接的集合预测问题,在并行回归占据位置的同时对相应的语义标签进行分类。我们提出的框架 OPUS 利用 transformer 编码器-解码器架构,包括:(1)一个图像编码器从多视角图像中提取 2D 特征;(2)一组可学习的查询用于预测占据位置和语义类别;(3)一个稀疏解码器使用相关图像特征更新查询特征。我们的 OPUS 消除了显式空间建模或复杂稀疏化过程的需求,提供了一个简洁的端到端解决方案。

3.Method

在这一部分中,我们首先回顾当前基于查询的稀疏化方法用于占据预测(3.1节)。然后,3.2节描述了我们将任务视为直接集合预测问题的公式化。最后,我们在3.3节详细介绍了所提出的OPUS框架。

3.1 回顾基于查询的占据稀疏化

使用稀疏查询的Transformer为解决占据表示中的固有稀疏性提供了有前景的途径。减少查询数量的一种显著方法是将每个查询分配给一块体素,而不是单个体素,如PETRv2中提出的那样。然而,这种方法仍然对3D空间生成密集预测,因此未能有效解决冗余问题。另一方面,VoxFormer和SparseOcc则将稀疏查询仅分配给已占据的体素。VoxFormer采用深度估计模块来识别可能占据的体素,而SparseOcc则通过多个阶段逐步过滤出空区域。然而,它们的稀疏化过程依赖于准确识别体素的占据状态,因此容易累积误差。此外,它们的流程需要复杂的3D空间的中间描述,妨碍了无缝的端到端操作。

当前方法的困境主要来自于将任务视为分类问题,每个查询被限制在特定的物理区域内进行语义标签分类。这一限制严重限制了查询的灵活性,无法自适应地关注适合的区域。为了解决这个问题,我们提出允许每个查询自主确定其相关区域,从而消除这一限制。最终,我们将占据预测视为一个直接的集合预测问题,每个查询同时预测点的位置和语义类别。

3.2 集合预测问题

我们工作的核心在于将占据预测任务概念化为集合预测任务。我们将地面真值中占据的体素记为{Pg, Cg},其中|Pg| = |Cg| = Vg。对于{pg, cg} ∈ {Pg, Cg}中的每个条目,pg表示体素中心的3D坐标,而cg存储相应体素的语义类别。给定预测的{P, C},我们面临的主要挑战是设计有效的策略进行集合到集合的匹配。换句话说,我们必须确定如何使用地面真值数据来监督无序的预测。

一种方法是采用匈牙利算法。然而,之前的讨论和实验表明其扩展性有限。与其追求预测结果与地面真值之间的一对一匹配,我们认识到匹配的目的是在预测中获得准确的位置和类别。这促使我们将任务解耦为两个并行目标:(1)鼓励预测的位置准确且全面。(2)确保为预测的点分配正确的地面真值语义类别。

第一个目标专注于通过Chamfer距离损失对齐预测点和地面真值点的分布,这在点云领域中被广泛验证。公式如下:

图片

最小化Chamfer距离可以使预测与地面真值的分布相似,从而直接学习占据体素,而不需要知道其顺序。

关于第二个目标,尽管由于位置不同,直接比较C和Cg是无效的,但我们可以利用体素的空间局部性找到代理。属于同一物体的附近点通常具有相同的语义标签,因此我们建议为每个预测点分配其在地面真值中的最近邻体素的类别:

图片

这里,

图片

是更新后的类别,用于监督预测的C的学习。

值得注意的是,公式(1)和(2)的计算可以高效并行地在GPU设备上执行。因此,单次匹配可以在毫秒内快速处理,从而将占据预测任务视为直接集合预测问题的大规模训练变为可行。接下来,我们详细讨论所提出的OPUS框架的具体细节。

3.3 OPUS的详细说明

这一部分描述了OPUS框架,如图2所示。首先,从多视角图像中提取图像特征。接着,初始化一组可学习的查询𝑄点位置 𝑃和分数𝐶。随后,这些查询特征和预测结果被输入到一系列解码器中,通过与图像特征的相关性进行迭代优化。在每个阶段,预测的位置和分数都会接受真实值的监督,从而为整个框架提供端到端的训练。可以看出,最重要的结构是多重解码器的序列。因此,接下来我们将详细说明解码器的输入/输出,以及如何在解码器中聚合和更新特征。

图片

符号表示:将可学习查询、点位置和点分数的集合分别表示为 

图片

,在输入解码器之前,以及表示为

图片

,对应第 𝑖个解码器的输出。所有这些集合的长度均为 𝑄,对应于查询的数量。每个查询特征

图片

,𝑖∈{0,1,⋯,6},在我们的实现中,通道大小 𝐶设为256。为了减少查询的数量(这是模型效率的瓶颈),每个查询 𝑞𝑖预测 𝑅𝑖个点,而不是单一一个点。因此,𝑝𝑖∈𝑃𝑖和 𝑐𝑖∈𝐶𝑖的大小分别为 𝑄×𝑅𝑖×3和 𝑄×𝑅𝑖×𝑁,其中 𝑁代表语义类别的数量。

粗到细的预测:从低层次特征准确预测高级语义信息是困难的。因此,我们允许模型在早期阶段预测“稀疏”的占据结果,而不是尝试预测整个3D环境的占据情况,如图2所示。为实现这一目标,我们采用粗到细的策略,逐步增加从一个查询生成的点数。换句话说,对于i∈{1,2,⋯,6},我们总是有

图片

值得注意的是,在这里 Chamfer 距离相较于匈牙利算法有另一个优势:即使预测的数量少于真实值,分配也不会收敛到真实值的局部形状。这是因为匈牙利算法由于缺乏分布约束,可能会将预测分配给真实值的任意子集。相比之下,Chamfer 距离保持了全局视角,考虑点的整体分布,而不是强制执行严格的一对一对应。这确保了预测点即使数量较少,也能更均匀地分布,并能代表实际的3D环境。

解码器的细节:我们的解码器类似于 SparseBEV,这是一种高效且稀疏的目标检测器。对于给定的查询

图片

及其对应的点位置

图片

第𝑖个解码器首先通过一致点采样(Consistent Point Sampling)聚合图像特征,这是一种在我们后续讨论中详细介绍的新方案。随后,查询特征通过图像特征和查询特征的自适应混合以及所有查询之间的自注意力更新为

图片

,这一操作类似于 SparseBEV 的操作。最后,一个包含线性层、层归一化(LayerNorm)和 ReLU 层的预测模块生成语义类别

图片

(大小为

图片

)和位置偏移

图片

(大小为

图片

。由于

图片

不能直接加到

图片

上,因为维度不一致,我们首先计算

图片

沿第一个维度的平均值,然后将结果复制

图片

次得到

图片

。最终位置为

图片

一致点采样:SparseBEV 中使用的特征采样方法不适用于我们的方法,因为它是专为检测输入而设计的。因此,我们提出了一种新的一致点采样(CPS)过程,旨在从 M 个图像特征中采样3D点并聚合特征。给定输入

图片

我们采样 S 个点并通过以下公式找到它们在第𝑚个图像特征中的相应坐标:

图片

其中

图片

 表示从当前3D空间到第𝑚个图像坐标的投影矩阵。

图片

使用线性层从查询特征𝑞生成 S 个3D点。

图片

图片

分别表示𝑝中 R 个点的均值和标准差。值得注意的是,我们用标准差

图片

对预测的偏移

图片

进行重新加权,以继承先前预测的分散度。本质上,如果输入的 𝑝包含多样化的点,我们倾向于更积极地采样;否则,我们在更窄的范围内采样点。实验表明,这一操作明显增强了预测性能。

并非所有

图片

中的坐标都是可行的,因为采样点可能在相应的摄像头中不可见。因此,我们生成一个掩码集

图片

,如果

图片

,则第 s 个值为1,否则为0,其中

图片

图片

。接下来,我们从图像特征

图片

中聚合信息,以用于后续的自适应混合阶段。具体地,我们有:

图片

其中

图片

表示

图片

中的第 s 个元素,

图片

是点 

图片

映射到第𝑚个图像特征中的坐标。操作𝐵指的是双线性插值。

图片

是由线性变换生成的点 

图片

在第 𝑚个图像特征上的权重,由查询特征𝑞生成。

带有自适应重加权的训练损失:我们框架的训练目标是监督

图片

的学习,真实值为

图片

。点位置可以用公式(1)进行训练。然而,原始的 Chamfer 距离损失关注于点分布的整体相似性,忽略了每个个体是否足够准确。实验中我们观察到这导致了不理想的表现。为了解决这个问题,我们采用了一种简单但有效的重新加权策略,以强调错误点,并修改 Chamfer 距离损失如下:

图片

其中

图片

是对距离最近真值较远的点进行惩罚的重新加权函数。在我们的实现中,我们使用一个阶跃函数,当 

图片

时W(d)=5,否则为1。

对于分类,我们首先使用公式(2为 

图片

生成目标类别

图片

。随后,语义类别可以用传统的分类损失进行训练。在我们的实现中,我们采用了带有手动搜索权重的 Focal Loss ,并将修改后的损失称为 FocalLossR。最终,所提出的 OPUS 的训练目标变为:

图片

其中

图片

明确鼓励初始点

图片

捕捉数据集的一般模式。

Experiment

定量性能。在本部分中,我们将OPUS与之前最先进的方法在Occ3D-nuScenes数据集上进行比较。我们的方法不仅在RayIoU指标上取得了优异的性能,并在mIoU上也获得了具有竞争力的结果,同时还展示了出色的实时性能。如表1所示,OPUS-T(8帧)达到了22.4 FPS,显著快于稠密模型的对手,几乎是稀疏对手SparseOcc(8帧)速度的1.3倍。尽管只使用了7帧历史数据,它的38.4 RayIoU结果轻松超过了其他模型,包括RayIoU为33.5(下降4.9)的FB-Occ(16帧)和RayIoU为35.1(下降3.3)的SparseOcc(16帧)。同样,OPUS-S(8帧)和OPUS-M(8帧)在性能与效率之间实现了良好的平衡。OPUS的最重版本最终实现了41.2的RayIoU,相比之前的最佳结果有显著的6.1的提升。

图片

可视化。我们在图3中可视化了预测的占据情况。可以观察到,FB-Occ相比稀疏方法产生了更稠密的结果。尽管在3D环境中看起来是完整的,但其预测的占据结果被严重高估,尤其是在远距离区域。高估可能会提升mIoU指标,但RayIoU主要考虑沿射线的第一个被占据的体素,因此会受到严重的惩罚。结果显示,FB-Occ获得了最佳的39.1 mIoU,但却有最差的RayIoU值。

图片

OPUS中提出策略的效果。在我们的工作中,我们为Chamfer距离损失和focal loss引入了自适应重新加权策略,并使用一致的点采样和粗到细的预测策略。我们在表2中展示了这些策略的影响。在没有额外优化的情况下,OPUS基线模型实现了17.4 mIoU和29.2 RayIoU。将原始CD损失替换为我们修改的CDR显著提高了mIoU和RayIoU,分别提升了6.4和0.9,展示了在此任务中关注错误预测位置的重要性。FocalLossR进一步提高了两个指标,分别增加了1.4。引入公式(3)中的σp进一步提升了mIoU和RayIoU,分别增加了0.4和0.8,展示了在当前采样过程中考虑之前点分布的有效性。提出的粗到细的查询预测策略逐步增加了各阶段生成的点数量。这一策略不仅减少了早期阶段的计算量,还显著提高了模型性能,尤其是在mIoU上,增加了1.7。这些结果突显了各个组件的累积效益,展示了它们的集成如何带来显著的性能提升。

图片

粗到细预测的可视化。我们在图4中可视化了不同阶段的预测结果。在图4(a)所示的基线场景中,所有解码器回归相同数量的点,我们观察到各阶段点分布不一致,并且在远距离处有大量的假阴性预测,特别是被圆圈标记的部分。这可能是由于在早期阶段学习细粒度占据表示的困难,阻碍了整个框架的高效训练。相比之下,我们的粗到细策略显著缓解了早期阶段的学习困难,从而提升了模型性能。最终,各阶段之间的点分布更加一致,最终的预测表现出更少的假阴性,如图4(b)所示。

图片

预测点的可视化。在图6中,我们选择了几个查询并可视化了它们的预测点。值得注意的是,大多数查询倾向于预测具有一致类别的点,甚至来自同一实例的点,如图6(a)-(g)所示。一个有趣的观察是,预测点在具有大体积的类别中往往表现出多样化的分布,例如可驾驶表面和人行道。相反,对于尺寸较小的对象,例如交通锥、摩托车和汽车,点分布则更紧密,符合实例的大小。这些模式可以通过图5进一步验证,我们在该图中展示了来自三类选择类别的查询点的标准差。这些结果突显了我们的模型在适应各种对象类别不同空间特征方面的有效性。

图片

初始点处理的影响。表3比较了初始点P0的三种不同处理方式。网格初始化将BEV空间划分为均匀分布的柱体,并有序地将柱体中心分配为初始位置,这种方法在BEVFormer中使用。随机初始化为每个位置分配一个在3D空间中的均匀分布。初始化之后,P0在训练期间保持可学习性。在随机初始化的基础上,我们的OPUS进一步对P0添加了真实值分布的监督(即公式(6)中的CDR(P0, Pg))。表6的结果显示,随机初始化优于网格初始化,分别实现了23.1的mIoU和29.9的RayIoU,而网格初始化则为22.8的mIoU和28.3的RayIoU。这种改进可能是因为随机初始化提供了更为多样化的3D分布。此外,引入的监督进一步提升了0.6的mIoU和0.2的RayIoU。这些结果揭示了随机初始化的有效性以及对初始位置附加监督的额外提升。

图片

结论

本文的贡献总结如下:

1.首次将占据预测视为直接的集合预测问题,促进了稀疏框架的端到端训练。
2.引入了若干策略,包括粗到细学习、一致性点采样和自适应重加权,以提高 OPUS 的性能。
3.在 Occ3D-nuScenes 上的大量实验表明,OPUS 可以在 RayIoU 结果上超越最新的方法,同时保持实时推理速度。

文章引用:OPUS: Occupancy Prediction Using a Sparse Set

最后别忘了,帮忙点“在看”。  

您的点赞,在看,是我创作的动力。

AiFighing是全网第一且唯一以代码、项目的形式讲解自动驾驶感知方向的关键技术。

南开大学联合同济大学发布最新SOTA Occ OPUS:最快实现8帧22FPS

扫码加入自动驾驶实战知识星球,即可跟学习自动驾驶感知项目:环境配置,算法原理,算法训练,代码理解等。

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

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

相关文章

Linux:编译,调试和Makefile

一丶vim编译器 ### 基本概念 模式:Vim有几种不同的模式,包括: 命令/正常/普通模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 插入模…

xpath在爬虫中的应用、xpath插件的安装及使用

安装 1、打开谷歌浏览器进入扩展程序安装页面(右上角会有"开发者模式按钮")默认是关闭的,当安装此插件时需要把开发者模式打开。 2、下载下来的xpath_helper是zip格式的,需要解压缩即可安装。 3、重启浏览器,再次点击扩展程序即…

CAN通信详解

1、CAN介绍 1.1、什么是CAN? CAN(Controller Area Network) 即控制器局域网,是ISO国际标准化的串行通信协议。 开发目的:为了满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”…

9.25 C++继承 多态

手动实现队列 #include <iostream>using namespace std;class My_queue { private:struct Node //队列结构体{int data;Node *next;Node(int value):data(value),next(nullptr){}};Node *front;Node *rear;int size;public:My_queue():front(nullptr),rear(nullptr),siz…

EMQX MQTT 服务器启用 SSL/TLS 安全连接,使用8883端口

1.提前下载安装openssl 2.新建openssl文件夹打开在命令行操作 3.按照下面的操作进行 MQTT 安全 作为基于现代密码学公钥算法的安全协议&#xff0c;TLS/SSL 能在计算机通讯网络上保证传输安全&#xff0c;EMQX 内置对 TLS/SSL 的支持&#xff0c;包括支持单/双向认证、X.509 …

如何使用ssm实现线上旅游体验系统+vue

TOC ssm691线上旅游体验系统vue 绪论 课题背景 身处网络时代&#xff0c;随着网络系统体系发展的不断成熟和完善&#xff0c;人们的生活也随之发生了很大的变化。目前&#xff0c;人们在追求较高物质生活的同时&#xff0c;也在想着如何使自身的精神内涵得到提升&#xff0…

进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结

目录 1. 浮点数在内存中的存储 1.1 浮点数的大V表示法 1.2 浮点数的存储格式 1.3 浮点数的存入规则 1.4 浮点数的读取规则 1.5 补充&#xff1a;移码与掩码 1.6 题目解析 2. 易错的二进制知识 2.0 符号位到底会不会参与运算&#xff1f; 2.0.1 存储前的编码变化运算 …

【Zynq从零开始】汇总导航

Welcome 大家好&#xff0c;欢迎来到瑾芳玉洁的博客&#xff01; &#x1f611;励志开源分享诗和代码&#xff0c;三餐却无汤&#xff0c;顿顿都被噎。 &#x1f62d;有幸结识那个值得被认真、被珍惜、被捧在手掌心的女孩&#xff0c;不出意外被敷衍、被唾弃、被埋在了垃圾堆。…

《Object-Centric Learning with Slot Attention》中文校对版

系列论文研读目录 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列论文研读目录摘要引言2 方法2.1 插槽注意力模块2.2 对象发现2.3 集合预测 3 相关工作4 实验4.1 对象发现4.2 集合预测 5 结论更广泛的影响 摘要 学习复杂场景的以对象为中心的表示是…

erlang学习:Linux命令学习5

从本地上传文件 使用rz命令选择文件&#xff0c;将本地文件上传至linux服务器 rz与本地文件中的txt文本文件内容相同 将上传的文件按行分割 split -l 1 study.txt -d -a 1 study_-l:按行分隔&#xff0c;每1行对study.txt文件进行切割 -d:添加数字后缀 -a 1:以1位数数字做尾…

Java_Day03学习

Day03 构造方法目的 为类的属性赋值构造方法调用 //调用带参方法时&#xff0c;要先实例化类&#xff0c;创建对象再调用&#xff1b; eg&#xff1a;public class Max_and_Min {//方法:访问修饰符 返回类型 方法名(形式参数类型 形参&#xff0c;形参类型 形参) {}public v…

速刷DuckDB官网24小时-掌握核心功法

简介 DuckDB 是面向列的本地 OLAP 数据库&#xff0c;SQLite是面向行的本地 OLTP 数据库。duckdb是 数据分析师得力助手&#xff0c;可以很好的直接读取本地的各种结构化数据文件&#xff0c;速度显著快于主流的pandas等工具。 duckdb通过加载插件可以成为各种RDBMS数据库的中…

Linux突发网络故障常用排查的命令

测试环境 系统&#xff1a;Ubuntu 18硬件&#xff1a;单核2G ping 用于测试客户机和目标主机通信状况&#xff0c;是否畅通。以及测量通信的往返时间&#xff0c;判断网络质量的好坏。 它通过发送ICMP回显请求消息到目标主机&#xff0c;并等待返回的ICMP回显回复消息。 pin…

C#和数据库高级:继承与多态

文章目录 一、继承的基本使用继承的概念&#xff1a;继承的特点&#xff1a;为什么使用继承&#xff1f; 二、继承的关键字1、this关键字2、base关键字3、Protected关键字4、子类调用父类的构造函数的总结&#xff1a; 三、继承的特性继承的传递性&#xff1a;继承的单根性&…

C/C++逆向:循环语句逆向分析

在逆向分析中&#xff0c;循环语句通常会以特定的汇编模式或结构体现出来。常见的循环语句包括 for 循环、while 循环和 do-while 循环。由于不同的编译器会根据代码优化的级别生成不同的汇编代码&#xff0c;分析循环的模式也可能会有所不同。以下是三种常见循环语句的汇编分析…

【源码+文档+调试讲解】人事管理系统设计与实现Python

摘 要 人事管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff…

【数据结构】剖析二叉树(Binary Tree)

目录 &#x1f4af;引言 &#x1f4af;二叉树的定义与基本概念 &#xff08;一&#xff09;定义 &#xff08;二&#xff09;节点结构 &#xff08;三&#xff09;二叉树的形态 &#x1f4af;二叉树的遍历 &#xff08;一&#xff09;前序遍历&#xff08;Preorder Trav…

机器人控制器设计与编程基础实验高效版本-ESP32等单片机实验报告

只需要课程大纲或进度表wokwi 大模型工具&#xff0c;就可以完全掌握嵌入式系统基础实验的所有核心点。 LCD // Learn about the ESP32 WiFi simulation in // https://docs.wokwi.com/guides/esp32-wifi https://wokwi.com/projects/321525495180034642#include <WiFi.h>…

【AI学习】Lilian Weng:What are Diffusion Models?

读OpenAI 的 Lilian Weng博客《What are Diffusion Models?》 文章链接:https://lilianweng.github.io/posts/2021-07-11-diffusion-models/ 通过浏览器的在线翻译&#xff0c;直接截图了。翻译的有些问题&#xff0c;但是基本能大概看明白了。 我只是个人的记录&#xff0c;…

开发经验总结: 读写分离简单实现

背景 使用mysql的代理中间件&#xff0c;某些接口如果主从同步延迟大&#xff0c;容易出现逻辑问题。所以程序中没有直接使用这个中间件。 依赖程序逻辑&#xff0c;如果有一些接口可以走读库&#xff0c;需要一个可以显示指定读库的方式来连接读库&#xff0c;降低主库的压力…