集智书童 | YOLO+混合注意力机制 | YOLOv5再加4.3%才可以做对手,Transformer混合设计依旧可以卷
本文来源公众号“集智书童”,侵权删,干货满满。YOLOv5重出江湖!
原文链接:https://mp.weixin.qq.com/s/vb7HsA0fKDgRc3uC8Z-2yw
在工业生产过程中,由于低效率、不统一的评估、高成本以及缺乏实时数据,传统的手动检测焊接缺陷不再被应用。
为了解决表面贴装技术中焊接缺陷检测的低准确率、高误检率和计算成本问题,提出了一种新方法。该方法是一种专门针对焊接缺陷检测算法的混合注意力机制,通过增加准确度并降低计算成本来提高制造过程中的质量控制。混合注意力机制包括提出的增强多头自注意力机制和协调注意力机制,以增加注意力网络感知上下文信息的能力,并提高网络特征利用率。协调注意力机制增强了不同通道之间的连接,减少了位置信息损失。混合注意力机制增强了网络感知长程位置信息和学习局部特征的能力。
改进的算法模型具有良好的焊接缺陷检测能力,mAP达到91.5%,比Yolov5高4.3%,并优于其他比较算法。与版本相比,平均精确率、精确度、召回率和每秒帧数指标也有所提高。在满足实时检测要求的同时,检测准确度的提高是可以实现的。
1 Introduction
表面贴装器件(SMD)引脚在自动生产过程中容易产生焊接缺陷,如引脚短路和引脚偏移,如图1所示。在焊接缺陷检测中,传统的手动检测方法已不再适应工业生产的发展。手动检测效率低、评估不统一、成本高且缺乏实时数据。
计算机视觉是计算机硬件和软件的结合,与工业相机和光源一起捕捉图像。它在各种工业场景中得到应用,用于自动化制造并提高产品质量。基于计算机视觉的焊接缺陷检测系统具有实时、连续和无接触的特点。这种方法可以取代手动检测并提高结果的准确性。目前,计算机视觉在缺陷检测中已得到广泛应用。因此,使用计算机视觉检测焊接缺陷已成为主流趋势。近年来,深度学习技术作为计算机视觉的一个分支得到了迅速发展。正在开发的自动化焊接缺陷检测方法还比较缺乏。焊接缺陷检测方法可以分为三个主要组,即基于特征的方法,统计方法和深度学习方法。
深度学习方法由于其卷积神经网络(CNN)结构,可以从焊接接头图像中学习有效信息和规则,解决人工设计规则难以提取有效特征的问题。深度学习神经网络(DNN)的结构可以分为单阶段和两阶段网络。尽管两阶段DNN比单阶段更准确,但浅层特征需要谨慎利用,以避免在特征提取阶段丢失信息,导致检测率降低。此外,单阶段方法在实时性能方面表现良好,但检测效果对小缺陷区域和低分辨率图像不佳。在缺陷检测的特征提取模块中,目标特征信息丢失过多,导致小缺陷检测率不理想,从而造成严重的漏检问题。深度学习方法使用深度神经网络提取特征,但随着深度神经网络层数的加深,一些浅层信息容易丢失,导致小尺寸目标的漏检。为解决这一问题,采用多尺度特征融合方法在特征提取过程中融合深层和浅层特征,增强不同网络层之间的信息传输。因此,优化特征融合方法可以提高小尺寸目标的检测准确性。
Feature Pyramid Network(FPN)通过多次上采样输入图像,获取不同尺度的特征图像。它将高 Level 的抽象语义信息与特征提取过程中的低级细节,如从上到下提取的轮廓纹理信息相结合,以实现特征提取增强的目标。然而,尽管FPN系统地提取了低级和高级特征,但其特征融合能力仍然无法满足需求,使得浅层特征信息难以保留。
为了在高层和低层特征之间解决缺失信息的问题,刘等人设计了一种Path Aggregation Network(PANet),在特征金字塔的底部连接自下而上的增强路径。这个过程是为了缩短信息融合的传输路径,以增加特征金字塔架构的检测能力。双向特征金字塔网络(BiFPN)是在PANet的基础上构建的,其中只有一个输入的节点被删除,以减少参数计算的数量。通过额外的跳跃传输路径,直接将输入和输出层特征连接,以增强浅层特征的融合能力。BiFPN为每个层赋予自适应学习的权重,并通过权重分配使网络感知不同层的重要性。
多尺度特征融合在小型目标检测中得到广泛应用,通过结合高层语义信息和低层详细信息,显著提高了小型物体的检测性能。然而,FPN的构建主要分为跨层连接和并行分支。虽然这种机制提高了性能,但增加了额外的参数计算和存储空间。因此,需要研究设计一种能够增强缺陷检测器特征融合能力的金字塔特征网络架构。作者提出了一种混合注意力机制来提高特征金字塔网络的特征融合能力。作者将增强的FPN应用到YOLOv5检测模型中。本文设计了比较实验和消融实验,以验证所提出方法在焊接缺陷数据集上的有效性。本文的整体流程图如图2所示。
本文的主要工作和创新点如下。
-
提出了一种新颖的增强多头自注意力机制(EMSA),以增强网络感知上下文信息的能力,扩大网络特征利用率范围,并使网络具有更强的非线性表达能力。
-
本文将坐标注意力机制(CA)与EMSA相结合,设计了一种混合注意力机制(HAM)网络,以解决特征金字塔网络中浅层特征损失问题,增加网络感知远程位置信息和学习局部特征的能力。
-
混合注意力机制改进了FPN,并提高了其将功能和网络通道之间的信息传递进行融合的能力。
-
改进的FPN被应用到YOLOv5检测模型中,这提高了YOLOv5的焊接缺陷检测能力,显著解决了小缺陷的低检测率问题,同时增强了缺陷检测模型的通用适用性。
2 Related Work
2.1 Feature Pyramid Network
Feature Pyramid Network(FPN)是一种常用的特征融合方法,用于目标检测,它是一种提取金字塔特征表示的网络模型。通常在目标检测的特征融合阶段使用。在对 Backbone 网络进行底向上特征提取操作后,将FPN连接到相应层的前后相邻特征图,从上到下、横向依次结合 Backbone 网络特征层次中的两个相邻层,构建一个特征金字塔。尽管FPN简单且有效,但仍有某些方面的缺陷。在每一层的特征融合之前,不同层之间存在语义鸿沟,直接融合将对多尺度特征表示能力产生负面影响。在特征融合过程中,金字塔网络高级特征信息在缩放过程中可能会丢失。
基于FPN结构的Path Aggregation Network(PANet)在YOLO目标检测框架及其变体中得到了广泛应用。该网络具有两条特征融合路径,即自上而下和自下而上。这种方法减少了深层和浅层特征之间的融合距离,优化了FPN网络的特征融合方法,提高了目标检测效果。然而,由于添加了自下而上的路径,低级特征信息可能会在网络层加深时丢失,额外的路径增加了计算复杂性和网络参数,降低了网络模型的检测速度。双向特征金字塔网络(BIFPN)引入了跳跃连接,利用跳跃连接在特征输入和输出层之间传递信息。因为操作在同一层,这种方法可以与较少的参数结合更多的特征。为了实现更多的特征融合,BIFPN计算同一层参数多次,将每条双向路径视为一个特征网络层。
自适应空间特征融合(ASFF) 是在2019年提出的一种具有自适应能力的特征融合算法。它可以通过权重选择自适应地获取重要信息,从而提高特征融合的有效性。通过学习不同特征图之间的连接,ASFF可以解决特征金字塔中不同大小的特征之间的不一致问题。它具有易实现、低成本和广泛应用的优点。钱等人[1]提出了一种中心化特征金字塔(CFP),它基于全局显式中心化特征规则,可以在目标检测模型中使用。这种方案提出了一种通用的内层特征调整方法,使用轻量级多层感知机(MLP)捕获全长度距离相关性,并强调使用内层特征规则,可以有效地获取全面但差异化的特征表示。CFP网络可以有效提高YOLOv5和YOLOX的目标检测能力。它在公共数据集MS-COCO上提高了mAP值1.4%,但计算复杂性相对较高。
FPN在多个涉及缺陷检测的实例中得到了应用。Chen等人[14]使用YOLOv3进行SMD LED芯片缺陷检测,使用基本FPN作为特征融合模块。它对缺失组件、缺失线和反向极性缺陷的检测率合理,但对表面缺陷的检测率较低。原因是表面缺陷的大小相对较小且分布位置不确定,因此难以检测。Yang等人[17]使用YOLOv5进行钢材表面缺陷检测,使用Path Aggregation Feature Pyramid Network(PAFPN)作为特征融合模块检测钢材表面六种缺陷,实现了良好的实时检测结果,但对小型缺陷目标的检测率较低。Du等人[15]使用增强的YOLOv5进行PCB缺陷检测,使用BiFPN作为特征融合模块检测PCB表面缺陷。mAP50指数达到95.3%,但对任务孔和开路缺陷的小型缺陷的mAP值较低。任务孔缺陷是指由于PCB上的焊盘插座中缺乏焊料而形成的孔效应。开路缺陷指的是PCB上的电路断开。
Han等人[10]设计了一种YOLO改进方案,用BiFPN代替原始PAFPN,并在BiFPN中使用自注意力机制将上采样和下采样处理模块嵌入,以提高表面缺陷检测任务中模型的检测率。然而,检测较小缺陷的能力较弱。因此,为了提高缺陷检测网络的检测性能,有必要设计一种增强的注意力机制来提高FPN的特征融合能力,从而减少对小尺寸缺陷的漏检率。近年来,许多研究利用注意力机制来增强缺陷检测框架的检测能力。注意力机制是一种使神经网络能够专注于特定目标的功能。
2.2 Attention Mechanism
众多的输入信息包括任务所需的关键和无关信息。注意力机制可以关注这些关键信息,同时过滤无关信息。注意力机制的灵感来源于人类视觉系统,它可以快速浏览图像,定位感兴趣的目标区域,并增强对目标区域的关注,从而获取该区域的重要信息并抑制来自其他无关区域的干扰。胡等人提出了一个名为Squeeze and Stimulation(SE)的注意力模块。这个注意力模块通过挖掘特征通道之间的互依赖关系来自适应地修正每个通道的权重参数,使网络能够关注更多的关键特征信息。吴等人[17]扩展了空间维度,并设计了卷积块注意力模块(CBAM)。
通过顺序构建通道注意力模块(CAM)和空间注意力模块(SAM),增强了网络分离和增强特征信息的能力。有效通道注意力(ECA)模块[18]使用一维卷积操作来提取通道之间的依赖关系,实现跨通道交互。它解决了SE由于压缩维度减少而无法有效提取通道之间依赖关系的问题。ECA具有较低的计算复杂性,对网络速度的影响较小。
张等人[19]将ECA嵌入YOLOv5的特征融合网络中,用于太阳能电池表面缺陷检测,增强了PAFPN融合太阳能电池表面缺陷特征的能力,从而进一步提高缺陷检测率。在数据集上的mAP50值为84.23%。然而,ECA对较小特征图的计算开销较大。
为了更好地检测钢表面的表面缺陷,钱等人[18]将CA机制引入检测网络。mAP值为79.23%,而召回值为62.4%。CA机制需要计算整个特征图的注意力权重,因此无法捕捉长程依赖关系。为了解决小面积检测中的长程依赖关系,收集语义信息至关重要。另一方面,视觉Transformer(ViT)完全依赖自注意力来捕捉长程全局关系,其准确性优于卷积神经网络(CNN)。ViT在2020年被引入计算机视觉领域,并在视觉领域取得了良好的性能。
2.3 Vision Transformer
视觉Transformer在计算机视觉领域取得了良好的性能,因为它使用了多头自注意力(MSA)机制。MSA机制是一种与CNN不同的特征提取方法,可以建立全局依赖关系并扩展图像的感知场。与CNN相比,ViT的感知面积更大,可以收集更多的上下文信息。
然而,由于过滤器效率低下,一些对检测至关重要的信息被移除。ViT没有利用特征定位、翻译不变性和图像尺度的先验知识。ViT捕获充分信息的能力比CNN弱,且不能利用图像本身特征定位、翻译不变性和图像尺度的先验知识。ViT模型设计采用缩放点积注意力机制。ViT首先将图像分成非重叠、固定大小的图像块,并将图像块 flatten 成一维向量进行线性投影,以实现特征提取。
Swin Transformer是另一种Transformer类型。Swin Transformer利用局部注意力和位移窗口多头自注意力机制(SW-MSA)实现局部和全局特征之间的交互,在各种视觉任务中取得良好结果,并解决了ViT局部信息易受损害的问题。
自注意力机制和注意力机制之间的区别在于, Query 和键来自不同的来源,而自注意力机制的 Query 和键来自同一组元素。朱等人设计了一个用于无人机图像中微小目标检测的Transformer预测头YOLOv5(TPH-YOLOv5)模型。该模型使用Transformer检测低分辨率特征图,增强网络提取不同局部信息的能力,并实现高密度目标更好的性能。然而,将Transformer模块分布在模型的多个部分导致了显著的计算工作量。
3 Proposed Enhanced Feature Pyramid Network
3.1 Hybrid Attention Feature Pyramid Network Architecture
在焊接接头缺陷检测任务中,有些小缺陷难以检测。增强FPN的特征融合能力可以帮助提高小缺陷的检测效果。为了增强FPN的特征融合能力,本研究提出了一种混合注意力特征金字塔网络(HA-FPN),如图3(a)所示。
在基本FPN中添加混合注意力机制(HAM)可以增强FPN感知上下文信息的能力。同时,它还扩大了对特征信息的利用,解决了位置信息严重损失的问题。HAM网络结构如图3(b)所示。
3.2 Hybrid attention mechanism
混合注意力机制(HAM)模块是基于Transformer结构的。首先,输入特征经过深度卷积(DWConv)残差块以实现参数共享并增强局部特征的学习。
接下来,使用Layer Normalization(LN)进行规范化处理。然后,通过两个注意力机制模块,即增强多头自注意力(EMSA)和坐标注意力(CA),对输出进行处理。最后,经过LN层进行规范化,并最终通过MLP层输出处理结果。
整个处理过程如图1所示。
在公式(1)中,X表示输入特征,Y表示输出特征,X1、X2和X3是中间特征。DWconv表示深度可分卷积,LN表示层规范化,CA表示坐标注意力,EMSA表示增强多头自注意力。MLP是多层感知机。
3.2.1 (1)Enhanced Multi-head Self Attention
提出了一种新颖的EMSA模块,如图3(b)所示,用于同时获取上下文信息和全局特征,使用CA机制捕捉准确的位置特征并有效地捕捉通道间的信息。
然后,执行由EMSA和CA捕获的信息特征的融合,以增强特征金字塔网络的特征融合能力。
设计概念基于Transformer中的MSA机制,如图4(a)所示。EMSA的结构如图4(b)所示。EMSA的整个处理过程如图3.2所示。
在公式(3.2)中,表示输入特征,表示输出特征,和表示中间特征。Q、K和V分别表示 Query 矩阵、Key矩阵和Value矩阵。线性是线性变换操作,SiLU是Sigmoid线性单元激活函数,FC表示全连接处理,d是标量因子。
首先,Q、K和V组件通过全连接(FC)层形成,然后对三个组件分别进行线性变换。将变换后的Q和K矩阵相乘,然后对它们进行一系列非线性处理。然后,使用全连接层输入SiLU激活函数,这与神经元内的信号传输模型非常相似,因此更符合某些生物实现机制,更好地模拟人脑的信息处理机制。经过全连接层后,使用Tanh激活函数进行处理,输出结果是一个与线性变换的V组件相乘的矩阵。
最后,将全连接层与原始输入特征相融合,以获得最终输出结果。与原始的MS-A相比,EMSA具有更多的非线性变换,这可以使注意力网络具有更强的上下文感知能力,进一步增强网络对特征利用范围的使用,并使网络具有更强的非线性表达能力。
3.2.2 (2)Coordinate attention
本研究将坐标注意力(CA)机制引入HAM,以增强FPN的位置信息融合能力。CA机制可以有效地增强不同通道之间的关联,并提高网络对远程位置信息的感知能力。CA机制的操作过程如图5所示。
对于输入H(输入特征图的高度)W(输入特征图的宽度)C(输入特征图的通道数),首先,从图像的高度和宽度维度进行全局平均池化,得到具有尺寸H1C和1WC的特征图;然后,将两个尺寸的特征图拼接在一起,并通过共享卷积从通道维度降低维数,得到尺寸为1(W+H)C/r的特征图。经过非线性层处理后,非线性表达能力得到提高。
接着,为了增加维数,使用11卷积,将特征图从宽度和高度维度恢复到A和B尺度,并通过HardSigmaid分配权重。为了加速CA机制的处理速度,使用HardSigmoid替换原来的Sigmoid激活函数进行权重分配。HardSigmoid不需要指数运算,因此其计算速度比Sigmoid快。最后,特征图的尺寸变为HWC。
3.3 Improved Feature Fusion Network In YOLOv5
作者将HAFPN作为特征融合模块使用在YOLOv5中,替换了原来的PAFPN结构。
原始特征融合网络架构如图6(a)所示。它包括卷积(Convolution)、批量归一化(Batch Normalization)和SiLu激活函数(CBS)、跨阶段部分(CSP)瓶颈结构,其中包含3个卷积(C3)和空间金字塔池化快速(SPPF)。
与FPN相比,PAFPN具有更好的网络准确性,但对于焊接接头中一些小缺陷的检测效果不佳,网络尺寸较大且参数较多。作者提出的强化方法增强了FPN网络的特征融合能力,以提高识别准确性,同时确保检测速度。原始特征融合网络架构如图6(b)所示。
4 Experiment
4.1 Experimental Environment
实验的硬件和软件环境如表1所示。
4.2 Datasets
焊接接头缺陷数据集包含3154张缺陷焊接接头图像,这些图像是通过Couple-Charged Device(CCD)工业相机获得的。其中两种缺陷类型,分别是无效和足部偏移。其中,1680个是无效缺陷,1474个是足部偏移缺陷。数据集被随机分为训练集、验证集和测试集,其中训练集、验证集和测试集的比例分别为80%、10%和10%,用于模型训练、验证和测试。数据集的准备方法是参考进行适应和修改的。
4.3 Evaluation criterion
本次实验的评价指标包括公式(4.1)计算的精确度(Precision)、公式(4.2)计算的召回率(Recall)、公式(4.3)计算的平均精确度(Mean Average Precision,mAP)以及每秒帧数(Frames Per Second,FPS)。在公式中,TP表示正确预测的阳性样本数量,FP表示错误预测的阳性样本数量,FN表示实际为阳性但预测为阴性的样本数量。P表示精确度,R表示召回率。
4.4 Experiments and analysis of results
4.4.1(1) Comparative experiment
为了验证本研究中提出的混合注意力机制的效果,使用 Heatmap 可视化方法比较了不同注意力机制在缺陷区域的聚焦能力,如图7所示。
如果不使用注意力机制,YOLOv5对焊接接头缺陷的注意力较弱。添加多个注意力机制后,显示了一定的改进。其中,SE和ECA的缺陷注意力改进较小,甚至出现了下降效果。CBAM和CA注意力对缺陷注意力有增强作用。Transformer和Swin Transformer对小尺寸的移动缺陷的注意力较差。
本研究中提出的混合注意力机制显著增加了缺陷位置的 Heatmap 覆盖效果。它对小缺陷的聚焦能力更关键,位置定位更准确,证明了混合注意力可以结合上下文内容聚焦更多像素,证明了混合注意力的有效性。
为了验证HAFPN算法的优越性,作者在同一数据集上比较了不同FPN算法的缺陷检测性能。CSPDarknet53始终作为特征提取 Backbone 网络。比较的特征融合算法包括FPN、PAFPN、A。
Table 1. 实验环境2. 所有缺陷的检测指标均高于FPN、PAFPN、BiFPN和CFPNet。不足缺陷的精度略低于ASHF。HAFPN的整体精确度、召回率和mAP值均优于其他网络,其中精确度为3.8%、9.4%、1.3%、9.7%、6.9%更高,召回率为0.5%、4.8%、0.7%、1.5%、1.2%更高,mAP值为3%、4.3%、0.9%、3.2%和3.4%更高。
本研究使用HAFPN改进YOLOv5缺陷检测模型,并在焊接接头缺陷数据集上与不同检测模型进行比较。比较模型包括一阶段检测模型如YOLOv4 [DCL21],YOLOv5 [G22],YOLOv7 [WBL23]和YOLOv8 [G23],改进后的YOLOv5检测模型如STC-YOLOv5,TPH-YOLOv5和两阶段检测模型Faster R-CNN [RHGS15]。
表3记录了实验结果。与YOLO系列算法相比,作者的模型在整体精确度、召回率和mAP指标上取得了最佳表现。在检测速度方面,尽管FPS低于原始YOLOv5模型,但高于其他模型,其精确度、召回率和mAP分别为9.4%、4.8%和4.3%,比YOLOv5高9.4%、4.8%、4.3%。
与Faster R-CNN相比,召回值较低,但速度快三倍,提出的算法具有有效的实时性能。与STC-YOLOv5和TPH-YOLOv5相比,作者的模型在精确度上增加了6.4%、2.4%,召回率增加了3.1%、2.2%,mAP增加了2.8%、0.6%,FPS增加了22.5%、31.6%。
作者使用改进后的YOLOv5网络对原始YOLOv5网络的检测性能进行了视觉比较,如图8所示。
在12个引脚中,前9个存在缺陷。可以发现,原始YOLOv5网络在检测小尺寸的不足缺陷目标时,对于移位缺陷(前两个引脚)的检测存在遗漏。改进后的网络检测能力得到了增强,避免了遗漏和误检的发生。在图8(b)中,所有缺陷都被正确检测到,实现了更好的检测结果。
4.4.2 (2) Ablation Study
为了验证改进方法中注意力模块对网络检测性能的影响,作者设计了使用CSPDarknet53作为 Backbone 的网络剪枝实验。将CA和EMSA添加到FPN和PAFPN的两个特征金字塔中,比较了它们在网络检测效果上的差异,如表4所示。
如表2所示,在FPN中,将EMSA添加到FPN导致精确度、召回率和mAP分别提高了3.3%、0.2%和2.1%。在将EMSA和CA的混合注意力机制添加到PAFPN中后,精确度、召回率和mAP分别提高了2.9%、4.2%和3%。在将EMSA和CA的混合注意力机制添加到PAFPN中后,精确度、召回率和mAP分别提高了2.4%、4%和1.7%。
5 Conclusions
为了提高工业场景中SMT焊点缺陷检测的准确性并减少缺陷焊点的漏检率和误报率,作者提出了一种深度学习的增强多头自注意力机制用于SMT焊点缺陷检测方法,以提高特征利用率,并使网络具有更强的非线性表达能力。作者将CA机制与EMSA机制相结合,构建了一种混合注意力机制网络。该混合注意力机制用于增强FPN,提高其融合特征的能力,并增强网络通道之间的信息传输。增强后的FPN应用于YOLOv5模型,从而提高了YOLOv5对焊点缺陷的检测能力,特别是解决了小尺寸缺陷的低检测率问题,同时提高了缺陷检测模型的泛化能力。
本方法通过改进注意力机制增强了网络的特征融合能力。实验结果显示,作者的方法在焊点缺陷数据集上实现了91.5%的mAP,比比较模型高4.3%。与流行的自注意力改进模型STC-YOLO和TPH-YOLOv5相比,mAP分别提高了2.8%和0.6%,FPS指数分别提高了159.8,比STC-YOLO和TPH-YOLOv5分别高22.5和31.6。这表明作者的模型在实时性方面表现良好,对工业场景的应用有益。下一步将是继续改进网络,使其模型参数更轻量化,同时进一步提高焊点缺陷的检测准确性。
参考
[1].YOLO ALGORITHM WITH HYBRID ATTENTION FEATURE PYRAMID NETWORK FOR SOLDER JOINT DEFECT DETECTION
论文下载链接:YOLO algorithm with hybrid attention feature pyramid network for solder joint defect detection (arxiv.org)
THE END!
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。
相关文章:

集智书童 | YOLO+混合注意力机制 | YOLOv5再加4.3%才可以做对手,Transformer混合设计依旧可以卷
本文来源公众号“集智书童”,侵权删,干货满满。YOLOv5重出江湖! 原文链接:https://mp.weixin.qq.com/s/vb7HsA0fKDgRc3uC8Z-2yw 在工业生产过程中,由于低效率、不统一的评估、高成本以及缺乏实时数据,传统…...
Codeforces Round 894 (Div. 3)----->C. Flower City Fence
题目总思路: 要判断是否对称,只需要判断两个放法得到的图形是否相同(竖着放,横着放),这两个放法有个很重要的特性:就是数组中大于1的个数,就是横着放时,第一竖排的高度。…...

CryoEM - CryoAI: Amortized Inference of Poses 工程源码复现
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136384544 Paper: CryoAI: Amortized Inference of Poses for Ab Initio Reconstruction of 3D Molecular Volumes from Real Cryo-EM Images CryoAI: 基于摊…...
项目预备知识
导入两个头文件 #include <graphics.h> // 引入 EasyX 的图形库头文件 #include <conio.h> // 引入 conio.h 以使用 getch() 窗口创建函数:小黑屏 initgraph(640, 480, SHOWCONSOLE); closegraph(); //关闭一个窗口 设置背景颜色:这…...

redis实战笔记汇总
文章目录 1 NoSQL入门概述1.1 能干嘛?1.2 传统RDBMS VS NOSQL1.3 NoSQL数据库的四大分类1.4 分布式数据库CAP原理 BASE原则1.5 分布式集群简介1.6 淘宝商品信息的存储方案 2 Redis入门概述2.1 是什么?2.2 能干嘛?2.3 怎么玩?核心…...

elment-ui table表格排序后 清除排序箭头/恢复默认排序 的高亮样式
问题描述: 1.默认排序是按照名称升序排列(图一) 2.在选择了筛选项以及其他排序方式之后,箭头高亮是这样的(图二) 3.当我点击清空按钮后,类型清空了,并且传给后端的排序方式是名称/升…...
MySQL数据库基本操作(二)
查询语句 1. 排序查询* 语法:order by 子句* order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式:* ASC:升序,默认的。* DESC:降序。 * 注意:* 如果有多个排序条件&#…...

Unity(第十部)时间函数和文件函数
时间函数 using System.Collections; using System.Collections.Generic; using UnityEngine;public class game : MonoBehaviour {// Start is called before the first frame updatefloat timer 0;void Start(){//游戏开始到现在所花的时间Debug.Log(Time.time);//时间缩放值…...

【Java学习笔记】
常见算法 查找算法 1.基本查找 public class BasicSearchDemo01 {public static void main(String[] args) {//基本查找//核心://从0索引开始挨个往后查找//需求:定一个方法利用基本查找,查询某个元素是否存在//数据如下:{131&…...

Python列表生成式你学会了吗
1.最基本的列表生成方式 生成 1-10 之间的整数的一个列表 list1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(list1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] list2 list(range(1, 11)) print(list2) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2.通过程序的方式生成[4, 9, 16, 25,…...

【Mybatis】快速入门 基本使用 第一期
文章目录 Mybatis是什么?一、快速入门(基于Mybatis3方式)二、MyBatis基本使用2.1 向SQL语句传参2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型参数2.2.4 实体…...

在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁
内核-用户空间鸿沟 构建自己的 TCP栈是一项极具挑战的任务。通常,当用户空间应用程序需要互联网连接时,它们会调用操作系统内核提供的高级 API。这些 API 帮助应用程序 连接网络创建、发送和接收数据,从而消除了直接处理原始数据包的复杂性。…...

STM32-ADC一步到位学习手册
1.按部就班陈述概念 ADC 是 Analog-to-Digital Converter 的缩写,指的是模拟/数字转换器。它将连续变量的模拟信号转换为离散的数字信号。在 STM32 中,ADC 具有高达 12 位的转换精度,有多达 18 个测量通道,其中 16 个为外部通道&…...
【文件管理】关于上传下载文件的设计
这里主要谈论的是产品设计里面的文件管理,比如文件的上传交互及背后影响到的前后端设计。 上传文件 场景:一条记录,比如个人信息,有姓名,出生年月,性别等一般的字段,还可以允许用户上传附件作为…...

微服务架构 SpringCloud
didi单体应用架构 将项目所有模块(功能)打成jar或者war,然后部署一个进程--医院挂号系统; > 优点: > 1:部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可。 > 2:技术单一:项目不需要复杂的技术栈,往往一套熟…...

前端 css 实现标签的效果
效果如下图 直接上代码: <div class"label-child">NEW</div> // css样式 // 父元素 class .border-radius { position: relative; overflow: hidden; } .label-child { position: absolute; width: 150rpx; height: 27rpx; text-align: cente…...

SLAM基础知识-卡尔曼滤波
前言: 在SLAM系统中,后端优化部分有两大流派。一派是基于马尔科夫性假设的滤波器方法,认为当前时刻的状态只与上一时刻的状态有关。另一派是非线性优化方法,认为当前时刻状态应该结合之前所有时刻的状态一起考虑。 卡尔曼滤波是…...

云时代【6】—— 镜像 与 容器
云时代【6】—— 镜像 与 容器 四、Docker(三)镜像 与 容器1. 镜像(1)定义(2)相关指令(3)实战演习镜像容器基本操作离线迁移镜像镜像的压缩与共享 2. 容器(1)…...

【QT+QGIS跨平台编译】之五十三:【QGIS_CORE跨平台编译】—【qgssqlstatementparser.cpp生成】
文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…...

JMeter性能测试基本过程及示例
jmeter 为性能测试提供了一下特色: jmeter 可以对测试静态资源(例如 js、html 等)以及动态资源(例如 php、jsp、ajax 等等)进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一系列各种形式的…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...