目标检测算法YOLOv6简介
YOLOv6由Chuyi Li等人于2022年提出,论文名为:《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》,论文见:https://arxiv.org/pdf/2209.02976 ,项目网页:https://github.com/meituan/YOLOv6 ,最新发布版本为0.4.1,License为GPL-3.0。
以下内容主要来自论文:
1.Introduction:
(1).我们凭经验(empirically)观察到激励我们重新设计YOLO框架的几个重要因素:
1).RepVGG的重新参数化(reparameterization)是一种高级技术,但在检测中尚未得到充分利用。
2).基于重参数化的检测器的量化也需要细致的处理,否则在训练和推理过程中由于其异构(heterogeneous)配置而导致性能下降将很难处理。
3).以前的工作往往不太关注部署(deployment),其延迟(latencies)通常是在V100等高成本机器上进行比较。与真实的服务环境相比,硬件上存在差距。
4).考虑到架构差异,标签分配(label assignment)和损失函数设计等高级领域特定策略需要进一步验证。
5).对于部署,我们可以容忍训练策略的调整,提高准确率性能但不增加推理成本。
(2).总结YOLOv6主要方面:
1).我们针对不同场景(diverse scenarios)的工业应用,重塑(refashion)了一系列不同规模的网络。不同规模的架构会有所不同,以实现最佳的速度和准确性权衡(trade-off),其中小型模型具有普通的单路径主干网络(single-path backbone),而大型模型则构建在高效的多分支块(multi-branch blocks)上。
2).我们为YOLOv6注入了自蒸馏(self-distillation)策略,在分类任务和回归任务上都执行。同时,我们动态调整来自教师和标签(teacher and labels)的知识,以帮助学生模型(student model)在所有训练阶段更有效地学习知识。
3).我们广泛验证了标签分配、损失函数和数据增强技术的先进检测技术,并有选择地采用它们来进一步提高性能。
4).我们在RepOptimizer和逐通道蒸馏(channel-wise distillation)的帮助下改革了检测的量化方案,从而实现了快速、准确的检测器。
2.Method:YOLOv6的改进设计由以下组件组成:网络设计、标签分配、损失函数、数据增强、易于行业应用(industry-handy)的改进以及量化和部署
(1).Network Design:Backbone:与其他主流架构相比,我们发现RepVGG主干网络在小型网络中以相似的推理速度配备了更多的特征表示能力,但由于参数和计算成本的爆炸性增长,它很难被缩放(scaled)以获得更大的模型。在这方面,我们将RepBlock作为我们小型网络的构建块(building block)。对于大型模型,我们修改了更高效的CSP块,名为CSPStackRep Block。Neck:YOLOv6的Neck采用了继YOLOv4和YOLOv5之后的PAN拓扑。我们使用RepBlocks或CSPStackRep Blocks增强颈部(Neck)以获得RepPAN。Head:我们简化了解耦头(decoupled head),使其更加高效,称为高效解耦头(Efficient Decoupled Head)。
单阶段(one-stage)目标检测器一般由以下部分组成:a backbone, a neck and a head。Backbone主要决定特征表示能力,同时其设计也对推理效率有着至关重要的影响,因为它承载着很大一部分计算成本。Neck用于聚合低级物理特征与高级语义特征,然后构建各级金字塔特征图。Head由多个卷积层组成,它根据Neck组装(assembled)的多级特征来预测最终的检测结果。从结构的角度来看,它可以分为基于锚的和无锚的(anchor-based and anchor-free),或者更确切地说,参数耦合头和参数解耦头(parameter-coupled head and parameter-decoupled head)。
在YOLOv6中,基于硬件友好的网络设计原则,我们提出了两个可缩放的可重参数化的Backbone和Neck以适应不同尺寸的模型,以及具有混合通道(hybrid-channel)策略的高效解耦头。YOLOv6的整体架构如下图所示:
1).Backbone: 主干网络的设计对检测模型的有效性和效率有很大影响。之前的研究表明,多分支网络(multibranch networks)通常可以比单路径(single-path)网络实现更好的分类性能,但通常会降低并行度(parallelism)并导致推理延迟增加。相反,像VGG这样的普通单路径网络具有高并行性和更少内存占用的优势,从而带来更高的推理效率。最近在RepVGG中,提出了一种结构重新参数化(re-parameterization)方法,将训练时多分支拓扑与推理时简单架构解耦(decouple),以实现更好的速度精度权衡。
受上述工作的启发,我们设计了一个高效的可重参数化主干网络,表示为EfficientRep。对于小型模型,在训练阶段,主干网络的主要组成部分是RepBlock,如下图(a)所示。在推理阶段,每个RepBlock通过ReLU激活函数转换为3*3卷积层堆栈(表示为RepConv),如下图(b)所示。通常,3*3卷积在主流 GPU和CPU上进行了高度优化,并且具有更高的计算密度。因此,EfficientRep Backbone充分利用了硬件的计算能力,从而显着降低了推理延迟,同时增强了表示能力。
然而,我们注意到,随着模型容量的进一步扩大,单路径普通网络(single-path plain network)中的计算成本和参数数量呈指数级增长。为了在计算负担和准确性之间实现更好的权衡(trade-off),我们修改了CSPStackRep块来构建中型和大型网络的主干网络。如下图(c)所示,CSPStackRep Block由三个1*1卷积层和一个由两个带有残差连接的RepVGG块或RepConv(分别在训练或推理时)组成的子块堆栈组成。此外,采用跨阶段部分(cross stage partial,CSP)连接来提高性能,而无需过多的计算成本。与CSPRepResStage相比,它具有更简洁的外观,并考虑了准确性和速度之间的平衡。
2).Neck:在实践中,多尺度的特征集成(feature integration at multiple scales)已被证明是目标检测的关键且有效的部分。我们采用YOLOv4和 YOLOv5改进的PAN拓扑作为我们的检测颈(neck)的基础。此外,我们将YOLOv5中使用的CSPBlock替换为RepBlock(针对小模型)或CSPStackRep Block(针对大模型),并相应调整宽度和深度。YOLOv6的Neck表示为Rep-PAN。
3).Head:
Efficient decoupled head:YOLOv5的检测头是一个耦合头(coupled head),在分类和定位分支之间共享参数,而FCOS和YOLOX中的对应检测头将两个分支解耦(decouple),并在每个分支中引入额外的两个3*3卷积层以提高性能。在YOLOv6中,我们采用混合通道(hybrid-channel)策略来构建更高效的解耦头(decoupled head)。具体来说,我们将中间3*3卷积层的数量减少到只有一个。head的宽度由backbone和neck的宽度乘数共同缩放(jointly scaled)。这些修改进一步降低了计算成本,以实现更低的推理延迟。
Anchor-free:无锚检测器因其更好的泛化能力和解码预测结果的简单性而脱颖而出。其后处理(post-processing)的时间成本大大降低。无锚检测器有两种类型:基于锚点的检测器和基于关键点的检测器。在YOLOv6中,我们采用基于锚点的范式(paradigm),其框回归分支实际上预测从锚点到边界框四个边的距离。
(2).Label Assignment:我们通过大量实验评估了YOLOv6上标签分配策略的最新进展,结果表明TAL更有效且更适合训练。标签分配负责在训练阶段将标签分配给预定义的锚点。之前的工作提出了各种标签分配策略,从简单的基于IoU的策略和内部ground-truth方法到其他更复杂的方案。
1).SimOTA:OTA将目标检测中的标签分配视为最优传输问题。它从全局角度为每个ground-truth目标定义正/负训练样本。SimOTA是OTA的简化版本,减少了额外的超参数并保持了性能。YOLOv6早期版本采用SimOTA作为标签分配方法。然而,在实践中,我们发现引入SimOTA会减慢训练过程。而陷入训练不稳定的情况也并不罕见。因此,我们希望有SimOTA的替代品。
2).Task alignment learning:任务对齐学习(Task Alignment Learning, TAL)首先在TOOD中提出,其中设计了分类分数和预测框质量的统一度量(unified metric)。IoU被替换为这个指标(metric)来分配目标标签。在一定程度上缓解了任务(分类和框回归)错位(misalignment)的问题。
TOOD的另一个主要贡献是关于任务对齐头(task-aligned head, T-head)。T-head堆叠卷积层来构建交互特征,在其之上使用任务对齐预测器(Task-Aligned Predictor, TAP)。PP-YOLOE对T-head进行了改进,将T-head中的层注意力(layer attention)替换为轻量级的ESE注意力,形成ET-head。然而,我们发现ET-head会降低我们模型中的推理速度,并且不会带来任何精度增益。因此,我们保留了高效解耦头的设计。
此外,我们观察到TAL可以比SimOTA带来更多的性能提升并稳定训练。 因此,我们采用TAL作为YOLOv6中默认的标签分配策略。
(3).Loss Function:主流的anchor-free目标检测器的损失函数包括分类损失、框回归损失和目标损失。对于每个损失,我们使用所有可用的技术进行系统地实验,最终选择VariFocal Loss作为我们的分类损失,选择SIoU/GIoU Loss作为我们的回归损失。目标检测包含两个子任务:分类和定位,对应两个损失函数:分类损失和框回归损失。对于每个子任务,近年来提出了各种损失函数。
1).Classification Loss:提高分类器的性能是优化检测器的关键部分。Focal Loss对传统的交叉熵损失(cross-entropy loss)进行了修改,以解决正例与负例之间、难样本与易样本(hard and easy samples)之间的类别不平衡问题。为了解决训练和推理之间质量估计和分类使用不一致的问题,质量焦点损失(Quality Focal Loss, QFL)进一步扩展了焦点损失,将分类分数和定位质量(localization quality)联合表示,用于分类监督(supervision)。而VariFocal Loss(VFL)源于Focal Loss,但它对正样本和负样本的处理不对称。通过考虑不同重要程度的正样本和负样本,它平衡了来自两个样本的学习信号。Poly Loss将常用的分类损失分解为一系列加权多项式基。它在不同的任务和数据集上调整多项式系数,通过实验证明比交叉熵损失和焦点损失更好。我们在YOLOv6上评估所有这些高级分类损失,最终采用VFL。
2).Box Regression Loss:框回归损失提供了精确定位边界框的重要学习信号。L1损失是早期作品中原始的框回归损失。逐渐地,各种精心设计的框回归损失涌现,例如IoU系列损失和概率损失。
IoU-series Loss:IoU损失将预测框的四个边界作为一个整体进行回归。由于其与评价指标(evaluation metric)的一致性,已被证明是有效的。 IoU有多种变体,如GIoU、DIoU、CIoU、α-IoU和SIoU等相关的损失函数。SIoU应用于YOLOv6-N和YOLOv6-T,而其他则使用GIoU。
Probability Loss:分布焦点损失(Distribution Focal Loss, DFL)将框位置的底层连续分布(underlying continuous distribution of box locations)简化为离散概率分布。它考虑了数据中的模糊性和不确定性,而不引入任何其他强先验框,这有助于提高框定位精度,特别是当真实框的边界模糊(blurred)时。在DFL的基础上,DFLv2开发了一个轻量级子网络,利用分布统计数据和真实定位质量(real localization quality)之间的密切相关性,进一步提高检测性能。然而,DFL通常会比一般框回归输出多17倍的回归值,从而导致大量开销。额外的计算成本极大地阻碍了小模型的训练。而DFLv2由于额外的子网络进一步增加了计算负担。在我们的实验中,DFLv2在我们的模型上带来了与DFL类似的性能增益。因此,我们在YOLOv6-M/L中只采用DFL。
3).Object Loss:目标损失首先在FCOS中提出,用于降低低质量边界框的分数,以便在后处理中将其过滤掉。它也被用于YOLOX中以加速收敛并提高网络精度。作为像FCOS和YOLOX这样的无锚(anchor-free)框架,我们已经尝试将目标损失引入YOLOv6。不幸的是,它并没有带来太多积极的影响。
(4).Industry-handy improvements:我们引入了额外的常见实践和技巧来提高性能,包括自蒸馏(self-distillation)和更多的训练周期(epochs)。对于自蒸馏,分类和框回归分别由教师模型(teacher model,是一个已经充分训练且表现良好的模型,它用于指导另一个待训练或较简单的模型(通常被称为student model或学生模型)的学习过程)监督。DFL使得框回归的蒸馏成为可能。此外,软标签和硬标签(soft and hard labels)的信息比例通过余弦衰减动态下降,这有助于学生在训练过程中的不同阶段选择性地获取知识(knowledge)。另外,我们在评估时遇到了没有添加额外灰色边框(gray borders)而导致性能受损的问题,为此我们提供了一些补救措施。以下技巧可以在实际实践中使用。它们并不是为了公平比较,而是稳定地产生性能增益,而不需要太多繁琐的工作。
1).More training epochs:经验结果表明,随着训练时间的增加,检测器的性能不断提高。我们将训练持续时间从300 epoch延长到400 epoch以达到更好的收敛(convergence)。
2)Self-distillation:为了进一步提高模型精度,同时不引入太多额外的计算成本,我们应用经典知识蒸馏技术来最小化教师和学生(teacher and the student)预测之间的KL散度(KL-divergence)。我们将教师限制为学生本身,但经过预先训练,因此我们称之为自蒸馏。注意,KL散度通常用于衡量数据分布之间的差异。然而,目标检测中有两个子任务,其中只有分类任务可以直接利用基于KL散度的知识蒸馏。 由于DFL损失,我们也可以在框回归上执行它。
3).Gray border of images:我们注意到,在评估YOLOv5和YOLOv7实现中的模型性能时,每个图像周围都有半步灰色边框(half-stride gray border)。虽然没有添加有用的信息,但它有助于检测图像边缘附近的目标。这个技巧也适用于YOLOv6。然而,额外的灰色像素明显降低了推理速度。没有灰色边框,YOLOv6的性能会恶化(deteriorates)。我们假设该问题与Mosaic增强中的灰色边框填充有关。进行了在最后一个epoch关闭Mosaic增强的实验(也称为淡出策略)以进行验证。对此,我们改变灰色边框的区域,并将带有灰色边框的图像直接调整为目标图像大小。结合这两种策略,我们的模型可以保持甚至提高性能,而不会降低推理速度。
(5).Quantization and deployment:为了解决基于量化重参数化(reparameterization)模型的性能下降问题,我们使用RepOptimizer训练YOLOv6以获得PTQ友好的权重。我们进一步采用带有通道蒸馏(channel-wise distillation)和图形优化的QAT来追求极限性能。
对于工业部署,通常的做法是采用量化来进一步加快运行时间,而不会影响太多性能。训练后量化(Post-training quantization, PTQ)仅使用较小的校准集(calibration set)直接量化模型。而量化感知训练(quantization-aware training , QAT)通过访问训练集进一步提高性能,通常与蒸馏结合使用。然而,由于YOLOv6中大量使用重新参数化块(re-parameterization blocks),以前的PTQ技术无法产生高性能,而在训练和推理过程中匹配假量化器(fake quantizers)时很难结合QAT。我们在这里展示部署过程中的陷阱(pitfalls)和解决方法。
1).Reparameterizing Optimizer:RepOptimizer在每个优化步骤中提出梯度重新参数化。该技术还很好地解决了基于重新参数化的模型的量化问题。因此,我们以这种方式重建YOLOv6的重新参数化块,并使用RepOptimizer对其进行训练以获得PTQ友好的权重。
2).Sensitivity Analysis:我们通过将量化敏感(quantization-sensitive)操作部分转换为浮动计算(float computation)来进一步提高PTQ性能。为了获得灵敏度分布,常用的有几个指标:均方误差(MSE)、信噪比(SNR)和余弦相似度。通常为了进行比较,人们可以选择输出特征图(在激活某一层之后)来计算有或没有量化的这些指标。作为替代方案,也可以通过打开和关闭特定层的量化来计算验证AP。我们在使用RepOptimizer训练的YOLOv6-S模型上计算所有这些指标,并选择前6个敏感层以浮动方式运行。
3).Quantization-aware Training with Channel-wise Distillation:如果PTQ不足,我们建议采用量化感知训练(QAT)来提高量化性能。为了解决训练和推理过程中假量化器不一致的问题,有必要在RepOptimizer的基础上构建QAT。此外,在YOLOv6框架内采用了逐通道蒸馏(channel-wise distillation,后来称为CW Distill),如下图所示。这也是一种自蒸馏方法,其中教师网络就是FP32精度的学生本身。
GitHub:https://github.com/fengbingchun/NN_Test
相关文章:

目标检测算法YOLOv6简介
YOLOv6由Chuyi Li等人于2022年提出,论文名为:《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》,论文见:https://arxiv.org/pdf/2209.02976 ,项目网页:https://github.c…...

如何修复显示器或笔记本电脑屏幕的黄色色调?这里提供几种方法
序言 如果你的笔记本电脑屏幕呈淡黄色,则可以启用夜灯功能。该问题也可能源于连接松散的显示电缆、损坏的显卡驱动程序或错误配置的显示器设置。以下是一些故障排除步骤,你可以尝试解决此问题。 禁用夜间模式 夜间模式功能旨在减少显示器的蓝色色调,使屏幕看起来更温暖,…...
5.14 力扣每日一题 贪心
2244. 完成所有任务需要的最少轮数 class Solution { public:int minimumRounds(vector<int>& tasks) {int ntasks.size(),sum0;sort(tasks.begin(),tasks.end()); //排序就不用哈希表int a;for(int i0;i<n;){int ct0;atasks[i];while(i<n&&tasks[i]a…...

wordpress 访问文章内容页 notfound
解决: 程序对应的伪静态规则文件.htaccess是空的 网站根目录下要有 .htaccess 文件,然后将下面的代码复制进去。 <ifmodule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRew…...

【Python探索之旅】列表
目录 特点 入门 访问元素 新增元素 修改元素 插入元素 删除元素 完结撒花 前言 在Python中,列表(List)是最常用的数据结构之一,类似于其他语言,如Java,与其不同啊Python中不需要声明数据类型。它提供了一种灵活且高效的方式…...
搜维尔科技:深入探讨Varjo XR头显在汽车行业的可能性
搜维尔科技:深入探讨Varjo XR头显在汽车行业的可能性 搜维尔科技:深入探讨Varjo XR头显在汽车行业的可能性...

YOLOv8预测流程-原理解析[目标检测理论篇]
接下来是我最想要分享的内容,梳理了YOLOv8预测的整个流程,以及训练的整个流程。 关于YOLOv8的主干网络在YOLOv8网络结构介绍-CSDN博客介绍了,为了更好地介绍本章内容,还是把YOLOv8网络结构图放在这里,方便查看。 1.前言…...

TCP超时重传机制
一、TCP超时重传机制简介 TCP超时重传机制是指当发送端发送数据后,如果在一定时间内未收到接收端的确认应答,则会认为数据丢失或损坏,从而触发重传机制。发送端会重新发送数据,并等待确认应答。如果在多次重传后仍未收到确认应答&…...
Oracle 的 RMAN(Recovery Manager) 和 DM(达梦数据库)的 DMRman异同
Oracle 的 RMAN(Recovery Manager) 和 DM(达梦数据库)的 DMRman异同 Oracle 的 RMAN(Recovery Manager) 和 DM(达梦数据库)的 DMRman 是两个分别用于不同数据库系统的备份和恢复工具…...
HVV面试题2024护网蓝队面试题
一. 目前有防火墙,全流量检测,态势感知,IDS,waf,web服务器等设备,如何搭建一个安全的内网环境,请给出大概拓扑结构 (适用于中高级) 搭建安全内网环境拓扑结构࿱…...
算法题--华为od机试考试(组成最大数、第k个排列、最小传输时延)
目录 组成最大数 题目描述 输入描述 输出描述 示例1 输入 输出 示例2 输入 输出 解析 答案 第k个排列 题目描述 输入描述 输出描述 示例1 输入 输出 示例2 输入 输出 解析 答案 最小传输时延 题目描述 输入描述 输出描述 示例1 输入 输出 解析…...

2024 年最新本地、云服务器安装部署 miniconda 环境详细教程(更新中)
Anaconda 概述 Anaconda 是专门为了方便使用 Python 进行数据科学研究而建立的一组软件包,涵盖了数据科学领域常见的 Python 库,并且自带了专门用来解决软件环境依赖问题的 conda 包管理系统。主要是提供了包管理与环境管理的功能,可以很方便…...

Python进行excel处理-01
最近干采购,每个月要对供应商的对账单,对对应的采购订单号和物料编号的价格和数量,是不是和物料管控总表里面的价格数量是不是一致,于是写了一个代码。 从总表里面找到,对账单里对应采购订单和物料编码的数据…...

苹果macOS无法给App麦克风授权解决办法
好久没有在电脑上录制课程了,有些东西还是录下来记忆深刻,却意外发现MAC系统升级后无法授权给第三方的App使用摄像头和麦克风,而录屏软件是需要开启麦克风和摄像头才能录制屏幕上的操作和声音,官方提示在第三方APP若有使用摄像头和…...
图的深度优先遍历
way:栈,map(或set,只是我想用map)记录是否访问过,放入时记录为已访问,打印,邻接的没访问过先入cur,再入邻接的节点,放入一个邻接的节点后及时break去下一个深…...

13 华三三层链路聚和
13 华三三层链路聚和 AI 解析 华三三层静态路由是指在华三交换机上配置的一种路由方式。它通过在交换机上手动配置路由表,将不同网络之间的数据进行转发。 华三三层静态路由的配置步骤如下: 1. 配置交换机接口的IP地址:在交换机上选择要配…...

C# 下载安装,使用OfficeOpenXml
下载安装OfficeOpenXml模块 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Text.RegularEx…...

Spring整体流程源码分析
DisableEncodeUrlFilter 防止sessionId被泄露 包装器模式 WebAsyncManagerIntegrationFilter WebAsyncManagerIntegrationFilter通常与Spring MVC的异步请求处理机制一起使用,确保在使用Callable或DeferredResult等异步处理方式时,安全上下文能够正…...

使用XxlCrawler抓取全球航空公司ICAO三字码
目录 前言 一、数据源介绍 1、目标网站 2、页面渲染结构 二、XxlCrawler信息获取 1、创建XxlCrawler对象 2、定义PageVo对象 3、直接PageVO解析 4、自定义解析 总结 前言 长距离旅行或者出差,飞机一定是出行的必备方式。对于旅行达人或者出差人员而言&…...

Java String转JSONObject时保持字段顺序不变
Java String转JSONObject时保持字段顺序不变 问题背景解决方案 问题背景 在业务接口开发过程中,有一个新增接口,需要支持批量新增数据,这时入参就需要用到 json 格式数据,且包含 list 集合,比如这样的数据格式&#x…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...