视觉BEV基本原理和方案解析

BEV(Bird’s-Eye-View)是一种鸟瞰视图的传感器数据表示方法,它的相关技术在自动驾驶领域已经成了“标配”,纷纷在新能源汽车、芯片设计等行业相继量产落地。BEV同样在高德多个业务场景使用,例如:高精地图地面要素识别车道线拓扑构建车端融合定位中都扮演了重要角色。如图1‑1所示:

87150892f78d247a3284d1d2e8a849b0.jpeg

图1‑1 BEV在高德应用场景(仅列举部分)

a)高精底图 b)地面要素识别 c)车道线拓扑构建[1] d)车端融合定位(BEV特征和底图匹配)[2]

本文分享的内容主要包括两个部分:视觉BEV基本原理、方案解析。

1.BEV基础

1.1.引言

如图1‑2所示,BEV具有如下优势:

1) BEV视图尺度变化小。在PV空间(即透视图,类似通常行车记录仪所采集的车辆前视图)中,物体近大远小,物体的大小和类别、远近都有关,而在BEV空间中,物体的大小只和类别有关;

2) BEV空间是决策友好空间。BEV空间更接近3D真实空间的平面空间,而PV空间是真实物理世界在透视投影下的视图,以图1‑2的车道线举例,在真实世界中平行的两条车道线,在BEV空间下还是平行的,在PV空间却是相交的。相比之下,BEV空间下的信息能更方便地被下游规控模块理解和使用。

本章将介绍BEV基础知识。首先介绍BEV的核心“视角转换模块”的基本原理,包括2D->3D和3D->2D两种路线,然后介绍BEV使用的魔法“可形变模块”,最后介绍BEV方案中常用的损失函数

414f28138c8bdfc2aac8eded394431c8.jpeg

图1‑2 BEV空间和PV空间的图像可视化

a) BEV空间 b) PV空间

1.2.视角转换

如1.1所述,在BEV空间下进行数据处理和操作具有尺度变化小、决策友好的优势,但原始的图像数据是在PV空间下的,如何将PV空间的数据转换到BEV空间或者是3D空间(有3D空间下的数据,将其拍扁就能转到BEV空间)呢?这就是视角转换模块要干的事。

1.2.1. 2D->3D转换模块

2D->3D转换模块基本思想是从2D像素或者特征出发去找3D空间下的对应表示,类似深度估计。下面介绍主流的2D->3D转换方法。

LSS(Lift-Splat-and-Shot)[3]是主流的2D->3D转换方法,如图1‑3所示,Lift指对各相机的图像显式地估计特征点的深度分布,得到包含图像特征的视锥(点云);Splat——结合相机内外参把所有相机的视锥(点云)分配到BEV空间的网格中,对每个格子中的多个视锥点进行pooling计算,形成BEV特征图;Shoot——用task head处理BEV特征图,输出感知结果。最后将C维的特征和D维的深度分布做外积,得到每个深度下的特征,深度概率越大,对应特征响应就越强。

5fc9a6a38f2189a0b5041ce2cd19fda7.png

图1‑3 LSS示意

每个特征点生成系列离散深度点,再为深度点生成特征[3]

Pseudo-LiDAR是另一种2D->3D转换方法,如图1‑4所示,相比LSS为特征点预测一系列离散深度,Pseudo-LiDAR直接预测深度图,每个像素都有且仅有一个深度。

35b0791c788b5c6a9c0e86e02a94202c.png

图1‑4 Pseudo-LiDAR示意

预测深度图,根据原始图像和深度图映射至3D空间[4]

1.2.2. 3D->2D转换模块

3D->2D转换模块基本思想是根据3D点查找对应的2D特征,类似3D空间投影到PV空间。下面介绍主流的3D->2D转换方法。

如图1‑5所示,将3D参考点根据成像原理投影到PV空间获取对应图像特征的方式可以认为是显式映射,这里的参考点可以使用预设的BEV空间的参考点,也可以使用网络生成。

8f22b130563004986782bd98cbed04f5.png

图1‑5 显式映射[5]

相比显式映射,隐式映射不再通过投影映射,而是让网络自己学特征和3D坐标的映射。如图1‑6所示,它先生成视锥空间下的一系列点,再转换到3D空间下,然后将提取的图像特征和3D点传入encoder,encoder处理后输出的就是带有3D坐标信息的特征。

28e113d4c310b262542c89ca813f91c5.png

图1‑6 隐式映射[6]

1.3. 可形变模

要介绍的可形变模块有两种,可形变卷积可形变注意力,可形变模块的作用更容易通过可形变卷积理解,所以先介绍可形变卷积。

可形变卷积是在卷积的基础上添加offset得到的,如图1‑7最左边的a) 所示,普通卷积通过人工设计的pattern整合pattern内采样点的信息,其pattern设计好后就是固定的,可形变卷积,如图1‑7 b) 所示,可以计算出每个采样点的offset,采样点+offset才是真实的采样点,使得卷积的pattern形式更加灵活,且一定程度上可学习。

f8253f45605384c3a0322a6eee031502.jpeg

图1‑7 可形变卷积示意

a) 普通卷积 b) 可形变卷积[7]

如图1‑8所示,注意力机制需要通过Q (query) 找到K (key),获得K的信息,这个过程也存在可变形的操作空间,让网络自己学习参考点的偏移量。

7ddc546225e615150b54253e173b25ec.png

图1‑8 可变形注意力示意[8]

1.4. 损失函数

损失函数大部分与任务相关,且大同小异,这里集中介绍下后续方案解析需要用到的一些共性的损失函数。

Box Loss (包围盒损失函数) 是目标检测常用的几何损失函数,常采用L1 Loss的形式:

63a3701406cf604f06d9e1e7d0977ccb.jpeg

Focal Loss是交叉熵损失函数的拓展,常用于分类问题。普通交叉熵损失函数在正负样本不均衡时表现不佳,因此引入平衡交叉熵。另外普通交叉熵损失函数对于难例无法重点学习,因此引入难例聚焦。最终形式为:

f8787ec8ce775e509ed62afbd953e76e.jpeg

2. 视觉BEV方案解析

2.1. 引言

第一章的内容为第二章的方案解析打下知识基础,接下来第二章主要解析具有代表性的视觉BEV方案,主要根据视角转换模块的类型对方案进行分类,首先介绍2D->3D的代表性方案,然后介绍3D->2D的代表性方案。

2.2. 2D->3D代表性方案解析

2D->3D的代表性BEV方案有BEVDetBEVDepth,下面我们逐一介绍。

2.2.1. BEVDet

3D目标检测跟踪由基于PV空间的方法主导,BEV语义分割跟踪由基于BEV空间的方法主导,那么PV空间和BEV空间哪个更适合做自动驾驶感知呢?是否可以在同一的框架下做这些任务?作者为了回答这两个问题,提出了如图2‑1所示的基于BEV空间的3D目标检测框架,BEVDet。BEVDet主要由四个部分组成,分别为图像特征编码器,视角转换模块,BEV特征编码器,检测头。

b46ac4041ac0ec391f7cfca3a585ffd1.png

图2‑1 BEVDet框架[9]

图像特征编码器(Image-view Encoder)使用2D Backbone网络,如ResNet、SwinTransformer等,对输入的多视角图像做多尺度特征提取,得到多尺度特征。

视角转换模块(View Transformer)对输入的多视角图像特征使用LSS进行离散深度分布预测,获得3D视锥特征。

3D视锥特征经过pooling操作拍扁到BEV空间,BEV特征编码器(BEV Encoder)对BEV空间下的特征做多尺度特征提取,得到BEV特征。

最后送入检测头进行3D目标检测,分类监督使用的损失函数为Focal loss,包围盒监督使用的损失函数为L1 loss。

2.2.2. BEVDepth

作者实验发现LSS估计的深度替换成随机值影响不大,而采用真值深度对指标提升很大,因此得出LSS估计深度不准的结论,如图2‑2所示,在没有明确的深度监督的情况下,很难输出准确,泛化性强的深度感知结果,要想获得更好的检测结果,需要更准的深度,因此引入深度监督训练深度子网络。

4ed1c06343d875044793735e47ce7c7d.png

图2‑2 LSS的深度预测结果和BEVDepth的深度预测结果的对比[10]

图2‑3是BEVDepth的框架,也能大致分为图像特征编码器,视角转换模块,BEV特征编码器,检测头四个部分。图像特征编码模块大同小异,后续不再展开说明。

54eeb384f273f04a0eca75818bd50bb8.png

图2‑3 BEVDepth框架[10]

视角转换模块的核心是深度估计,深度估计网络DepthNet的框架如图2‑4所示,首先使用MLP对相机内参进行特征化,然后用SE (Squeeze-and-Extraction) 对图像特征进行通道加权,然后经过3个残差块以及可形变卷积,得到深度。深度再与图像特征进行外积,得到3D视锥特征。

760e2a2aa139c3c4909f97fd137e30d9.png

图2‑4 深度估计网络框架[10]

相机和用于监督的点云之间的外参可能不准,内参也可能不准,都会导致深度估计有偏,因此BEV特征编码器引入深度修正对3D视锥特征的深度进行修正,然后进行高效体素池化获得BEV特征。

检测头所使用的损失函数和BEVDet是一致的,不做赘述。深度监督使用的损失函数为二分类交叉熵。

2.3. 3D->2D代表性方案解析

前面介绍的2D->3D的方案始终绕不过深度估计,深度估计难免会引入误差,换个思路,先有3D点,再根据3D点找2D特征的方式无需进行深度估计,避免了这部分误差。3D->2D的代表性方案有Detr3D、BEVFormer和PETR。

2.3.1. Detr3D

如图2‑5所示,Detr3D是Detr在3D目标检测的扩展,也是使用query进行特征获取,然后进行检测。Detr3D的图像特征编码器大同小异,不再赘述。

55a2469c8d6a1353c4f0980e5a958e7d.png

        图2‑5 Detr3D框架[5]

特征转换模块首先使用object query生成3D参考点,将参考点投影到PV空间获取图像特征,获取到的图像特征能进一步优化物体的3D表征,得到物体的3D特征。

将特征送入检测头进行目标检测,可以得到一系列的检测结果。普遍地,大家会用NMS等后处理方式获得最终用于Loss计算的检测结果,如图2‑6所示,Detr3D继承了Detr的做法,采用双边图匹配获得与真值一一对应的检测结果。损失函数与前面所述并未本质差异,不做赘述了。

9b4e1ca810ba9ef55ffa1eaabc307e69.png

图2‑6 双边图匹配获得与真值一一对应的检测结果[11]

2.3.2. BEVFormer

行车过程有天然的时序特点,当前帧看到的车道线,在后续几帧大概率也是存在且可见的,如何利用这个时序特点是前述方案没有考虑的。BEVFormer引入时序信息进一步增强BEV的检测能力。BEVFormer的图像特征编码模块和前述大同小异,不做赘述。

BEVFormer的核心是中间的BEV特征编码模块,BEV特征编码模块的核心是时序自注意力(Temporal Self-Attention)和空间交叉注意力(Spatial Cross-Attention),时序注意力是为了利用历史帧BEV特征增强当前帧BEV特征,空间交叉注意力则是为了从图像特征获取信息。

5ad9b8513345ccd90f915575b5b17275.png

图2‑7 BEVFormer框架[12]

具体地,BEVFormer的时序自注意力首先利用车辆运动信息将当前帧BEV特征和历史帧BEV特征进行对齐,然后再使用自注意力融合两者信息,由于车辆运动信息可能不准,不同时刻周围的可利用信息分布也不一致,所以具体使用的是图2‑8所示的可变形注意力机制。

6a8acda13b92101a78bdbf2a56c54537.png

图2‑8 时序可变形自注意力[12]

BEVFormer的空间交叉注意力首先为每个格子在Z方向上采样4个值,得到一个格子上的4个参考点,然后与图像特征进行交叉注意力,获得图像特征。如图2‑9所示,这里的交叉注意力也采用可变形注意力机制。

ed1923eca24ae9de44081a35af30ee78.png

图2‑9 空间可变形交叉注意力[12]

损失函数的计算和Detr3D一致,不再赘述。

2.3.3. PETR

3D->2D的方案一般都需要将参考点投影到PV空间,再取图像特征,PETR避免了复杂的3D->2D转换及特征采样,直接让网络自己学习2D-3D的映射。PETR的框架如图2‑10所示,包括图像特征编码器、3D坐标生成器、3D特征编码器(3D Position Encoder)、3D特征解码器和检测头。图像特征编码器大同小异,不再赘述。

0e9fa144ddba170273f9e560352781e1.png

图2‑10 PETR框架[6]

3D坐标生成器生成视锥空间的一系列3D点,具体地,首先将相机视锥空间离散成大小为的网格,网格中的每一点用表示。3D空间中一个点用表示。通过相机内外参可以将相机视锥空间转换到3D空间中。最后再进行归一化。

2D图像特征和3D坐标一起送入到3D特征编码器中,2D特征进行卷积通道降维,3D坐标进行位置编码,然后将处理后的2D特征和3D坐标编码整合,最后特征展平。

41c98538b7f52132284a7cee9b4d8ddc.png

图2‑11 3D特征编码器[6]

3D特征解码器先在3D空间生成一系列随机点,再通过MLP生成可学习的query,query在3D特征中取特征,最后使用检测头进行检测。损失函数与Detr3D大同小异,不再赘述。

3. 总结展望

本文从BEV的基础出发,介绍了视觉BEV具有代表性的方案。视觉BEV已经展现出强大的场景理解能力。但是还存在很多值得探索且有挑战的方向[13]:

深度估计是BEV的核心,LSS、Pseudo-LiDAR、激光蒸馏、立体视觉或运动恢复结构等都是有前景的方向。

如何融合传感器的信息也是至关重要的,使用Transformer的自注意力、交叉注意力融合不同模态的特征已经被证明是个可行的方向。多模态中CLIP的文本-图像对也是个很有启发的思路。

泛化性是深度学习亘古不变的话题和努力的方向,在一个设备(数据)上训练好的模型在另一个设备(数据)表现是否一样好。每个设备都要付出训练成本是让人难以接受的。如何将模型和设备解耦在未来一段时间都将是重要的研究方向。

大模型或者基础模型已经在不同领域上取得令人印象深刻的结果,并一举成为SOTA。在BEV感知中如何利用大模型中丰富的知识,在更多的任务上取得更好的效果,这将会逐步引起人们的重视。

4. 参考文献

[1] Bencheng Liao, Shaoyu Chen, Xinggang Wang, et al. Maptr: Structured modeling and learning for online vectorized hd map construction[J]. arXiv preprint arXiv:2208.14437,2022,

[2] Yuzhe He, Shuang Liang, Xiaofei Rui, et al. EgoVM: Achieving Precise Ego-Localization using Lightweight Vectorized Maps[J]. arXiv preprint arXiv:2307.08991,2023,

[3] Jonah Philion and Sanja Fidler. Lift, splat, shoot: Encoding images from arbitrary camera rigs by implicitly unprojecting to 3d[A].  Springer: 194-210

[4] Yan Wang, Wei-Lun Chao, Divyansh Garg, et al. Pseudo-lidar from visual depth estimation: Bridging the gap in 3d object detection for autonomous driving[A]. 8445-8453

[5] Yue Wang, Vitor Campagnolo Guizilini, Tianyuan Zhang, et al. Detr3d: 3d object detection from multi-view images via 3d-to-2d queries[A].  PMLR: 180-191

[6] Yingfei Liu, Tiancai Wang, Xiangyu Zhang, et al. Petr: Position embedding transformation for multi-view 3d object detection[A].  Springer: 531-548

[7] Jifeng Dai, Haozhi Qi, Yuwen Xiong, et al. Deformable convolutional networks[A]. 764-773

[8] Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable detr: Deformable transformers for end-to-end object detection[J]. arXiv preprint arXiv:2010.04159,2020,

[9] Junjie Huang, Guan Huang, Zheng Zhu, et al. Bevdet: High-performance multi-camera 3d object detection in bird-eye-view[J]. arXiv preprint arXiv:2112.11790,2021,

[10] Yinhao Li, Zheng Ge, Guanyi Yu, et al. BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection[J]. Proceedings of the AAAI Conference on Artificial Intelligence,2023,37(2): 1477-1485

[11] Nicolas Carion, Francisco Massa, Gabriel Synnaeve, et al. End-to-end object detection with transformers[A].Springer: 213-229

[12] Zhiqi Li, Wenhai Wang, Hongyang Li, et al. Bevformer: Learning bird’s-eye-view representation from multi-camera images via spatiotemporal transformers[A].Springer: 1-18

[13] Hongyang Li, Chonghao Sima, Jifeng Dai, et al. Delving into the Devils of Bird's-eye-view Perception: A Review, Evaluation and Recipe[J]. arXiv preprint arXiv:2209.05324,2022,

推荐阅读

  • 高德Go生态建设和研发实践

  • 实战|抽丝剥茧还原真相,记一次神奇的崩溃

  • 重新认识架构—不只是软件设计

  • 基于车道级数据的导航场景构建与还原仿真

  • Android高性能高稳定性代码覆盖率技术实践

关注「高德技术」,了解更多

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Attention Transformer

来源老师课件,方便以后复习。 课参考链接: http://jalammar.github.io/illustrated-transformer/ 之前的知识链接: 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数: 多头…

【413.等差数列划分】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int nnums.size();if(n<3) return 0;vector<int> dp(n);dp[2]dp[1]dp[0]0;if(nums[2]-nu…

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内) 路虽远,行则将至;事虽难,做…

Nacos在Windows本地安装并启动教程

Nacos在Windows本地安装并启动教程 Nacos注册中心和Eureka是两种常见的服务注册与发现组件&#xff0c;它们在以下方面存在一些区别&#xff1a; 开源项目&#xff1a;Nacos是阿里巴巴开源的项目&#xff0c;而Eureka是Netflix开源的项目。 功能特性&#xff1a;Nacos在服务注册…

实验二 Python运算符和内置函数的使用《Python程序设计》实验指导书

实验二 Python运算符和内置函数的使用 一、实验目的和要求 &#xff08;一&#xff09;熟练掌握运算符的使用。 &#xff08;二&#xff09;熟练掌握内置函数的使用。 二、实验内容 &#xff08;一&#xff09;输入三角形的3个边长a、b、c&#xff0c;求三角形的面积area…

YOLO目标检测——机油泄露检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;机械设备维护、工业生产监控、环保监管等数据集说明&#xff1a;机油泄露检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、co…

go语言 | 图解字节青训营抖音(一)

前言 本文大致介绍了本人及本人所在小组为第五届字节跳动青训营后端专场大项目需求 —— 「实现一个极简版抖音」的部分实现细节。 需求 本届后端青训营大项目要求实现一个极简版抖音的后端服务&#xff0c;该后端服务通过 HTTP 协议向已被设计好的前端 App 传递数据&#xf…

【漏洞复现】IP-guard WebServer 远程命令执行

漏洞描述 IP-guard是一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。互联网上披露IP-guard WebServer远程命令执行漏洞情报。攻击者可利用该漏洞执行任意命令,获取服务器控制权限。 免责声明 技术文章仅供参考,任何个人和…

Android平台 - APP备案

今年因 工业和信息化部 要求&#xff0c;Andorid各大厂商陆续发出通知&#xff0c;需要各应用公司及时进行app备案&#xff0c;如过期未进行备案则会被陆续下架&#xff01; 正好在统计Andorid各平台对于app备案时间节点要求&#xff0c;故此予以总结&#xff08;一切均已平台为…

亚马逊美国站CPC认证ASTM F963测试项目要求有哪些?

ASTM F963是美国材料和试验联合会&#xff08;ASTM&#xff09;制定的儿童玩具安全性的标准规范&#xff0c;专门针对儿童玩具产品的安全性进行了规定和要求。 ASTM F963标准的内容和要求包括&#xff1a; 1、物理机械性能&#xff1a;规定了玩具的物理机械性能要求&#xff0…

cocos3.4.2 2d射线检测 和 animation动画

2D的射线检测 ,注:目标必须有2d刚体和2d碰撞器 ,且项目设置内必须是这个物理系统 //起点位置let objs new Vec2(this.node.getWorldPosition().x, this.node.getWorldPosition().y);// 终点 let obje new Vec2(objs.x 100, objs.y);// 射线检测let results PhysicsSystem2…

Python入门简介及下载安装,超详细教学!

文章目录 一、Python简介&#xff1a;Python解释器的类型Python的运行机制1、查看 Python 版本2、第一个Python3.x程序3、Python 应用 二、Python安装&#xff08;windows&#xff09;1、下载2、安装步骤&#xff1a; 三、运行Python1、交互式解释器&#xff1a;扩展&#xff1…

(预热2024最新)Java毕业设计、课程设计参考题目(全网最新 共计800多个)

临近期末或是毕业季&#xff0c;计算及专业的童鞋们最头疼的要数为毕设、课设选题目&#xff0c;不能太老旧、也不能太新颖&#xff08;无参考案例&#xff09;&#xff0c;慕代码为大家整理了近两年设计选题&#xff0c;让你直接上手开始选&#xff0c;省去了冥思苦想。从过来…

echarts 实现分割型柱状图示例

该示例有如下几个特点&#xff1a; ①实现数据过多时滚动展示&#xff08;echarts 数据过多时展示滚动条-CSDN博客&#xff09; ②实现tooltip自定义样式&#xff08;echarts 实现tooltip提示框样式自定义-CSDN博客&#xff09; ③鼠标放置时柱状图颜色更改 代码如下&#xff…

Android Fragment 要你何用?2.0版本

作者&#xff1a;小鱼人爱编程 1. 老生常谈&#xff1a;为什么需要Fragment? 先看Activity、Fragment、View三者的关系&#xff1a; Activity 拥有生命周期&#xff0c;但是需要和AMS通信(跨进程)&#xff0c;比较臃肿。 View 不需要和AMS通信&#xff0c;但没有生命周期&…

Ubuntu18.04安装Moveit框架

简介 Moveit是一个由一系列移动操作的功能包组成的集成化开发平台,提供友好的GUI,是目前ROS社区中使用度排名前三的功能包,Moveit包含以下三大核心功能,并集成了大量的优秀算法接口: 运动学:KDL,Trac-IK,IKFast...路径规划:OMPL,CHMOP,SBPL..碰撞检测:FCL,PCD... 一、更新功…

【PIE-Engine 数据资源】中国叶面积指数(LAI)月度合成产品

文章目录 一、 简介二、描述三、波段四、示例代码运行结果参考资料 一、 简介 数据名称中国叶面积指数&#xff08;LAI&#xff09;月度合成产品时间范围2002-2021年空间范围全国数据来源航天宏图代码片段var images pie.ImageCollection(“EMDO/MODIS_MONTH_LAI_CHINA”) 二…

Stable Diffusion进阶玩法说明

之前章节介绍了Stable Diffusion的入门&#xff0c;介绍了文生图的魅力&#xff0c;可以生成很多漂亮的照片&#xff0c;非常棒 传送门&#xff1a; Stable Diffusion新手村-我们一起完成AI绘画-CSDN博客 那我们今天就进一步讲讲这个Stable Diffusion还能做些什么&#xff0c; …

Stable Diffusion - StableDiffusion WebUI 软件升级与扩展兼容

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134463035 目前&#xff0c;StableDiffusion WebUI 的版本是 1.6.0&#xff0c;同步更新 controlnet、tagcomplete、roop、easy-prompt-selector等…

openpyxl获取单元格的主题色的颜色值

&#x1f4e2;作者&#xff1a; 小小明-代码实体 &#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/as604049322 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 欢迎讨论&#xff01; openpyxl 支持以下几种颜色类型&#xff1a; RGB (Red, Green, …