当前位置: 首页 > news >正文

【Backbone】TransNeXt:最新ViT模型(原理+常用神经网络汇总)

文章目录

  • 一、近几年神经网络 Backbone 回顾
    • 1.Densenet 与 Resnet
    • 2.CBP
    • 3.SENet
    • 4.GCNet
    • 5.DANet
    • 6.PANet 与 FPN
    • 7.ASPP
    • 8.SPP-net
    • 9.PSP-net
    • 10.ECA-Net
  • 二、TransNeXt(2023)
    • 1.提出问题
    • 2.Aggregated Pixel-focused Attention
      • 2.1 Pixel-focused Attention(像素聚焦注意力机制)
      • 2.2 Aggregating Diverse Attentions in a Single Mixer Query embedding
      • 2.3 Overcoming Multi-scale Image Input
      • 2.4 Feature Analysis
    • 3.Convolutional GLU(做信息交换)
      • 3.1 Motivation
      • 3.2 全新的Channel Mixer设计
    • 4.TransNeXt Architecture
    • 4.实验
    • 5.总结


一、近几年神经网络 Backbone 回顾

1.Densenet 与 Resnet

论文:Densely Connected Convolutional Networks (密集连接的卷积网络)
论文:Deep Residual Learning for Image Recognition (用于图像识别的深度残差学习)

方法简介」DenseNet是一种连接方式不同的卷积网络。在DenseNet中,每一层都直接连接到其他所有层,这使得信息传递更加直接和高效。相比之下,传统的卷积网络只有相邻层之间有连接。DenseNet有几个优点:它可以缓解梯度消失问题,增强特征传播,鼓励特征重用,并且需要的参数更少。在四个不同的基准任务上,DenseNet的表现都超过了现有的技术,同时它需要更少的计算资源。

在这里插入图片描述

方法简介」Resnet 即:深度残差学习框架,它使得训练深度神经网络更加容易。通过将层学习为相对于输入的残差函数,而不是无参考函数,该框架使得深度网络更易于优化,并且能够从增加的深度中获得更高的准确率。在ImageNet数据集上,这种深度残差网络的表现非常好,并且比以前的网络更深。此外,这种网络还在其他竞赛任务中获得了第一名。

在这里插入图片描述

2.CBP

论文:Compact Bilinear Pooling (紧凑型双线性池化)

「方法简介:」双线性模型在很多视觉任务上效果很好,但特征维度高不实用。论文提出了两种低维的双线性表示,和原来的一样有效,但只有几千维度,更适合后续分析。这种表示能让误差反向传播,优化整个视觉识别系统。作者通过创新的方法分析双线性池化得到这种表示,它为研究其他紧凑池化方法提供了新思路。实验证明,这种表示对图像分类和小样本学习有效。

在这里插入图片描述

3.SENet

论文:Squeeze-and-Excitation Networks (挤压和激励网络)

方法简介」挤压和激励网络是卷积神经网络的一个关键部分,它通过挤压和激励来调整网络中的信息流。挤压操作提取网络中的空间信息,激励操作则根据这些信息调整网络中的通道权重。这种网络结构能够有效地提高网络的表现,尤其是在处理图像分类等任务时。挤压和激励网络可以与现有的最先进的CNN结合使用,以实现更高的性能提升。

在这里插入图片描述

4.GCNet

论文:Global Context Network (全局上下文网络)

方法简介」Non-Local Network 是一种能捕捉图像中长距离依赖性的方法,但它的全局上下文对不同查询位置都是相同的。因此,作者创建了一个更简单的网络,它基于查询无关的公式,保持了 Non-Local Network 的准确性,但计算量更少。另外,作者还改进了 Non-Local 块的变换函数,用两层瓶颈替换了原本的一层,进一步减少了参数数量。由此产生的全局 上下文 (GC) 块能以轻量级方式有效地模拟全局上下文,并可应用于主干网络的多个层次以形成全局 上下文 网络 (GCNet)。

在这里插入图片描述

5.DANet

论文:Dual Attention Network for Scene Segmentation
用于场景分割的双注意力网络

「方法简介:」论文提出了一种叫做双注意力网络(DANet)的新网络,用于解决场景分割任务。DANet通过两种注意力模块,一是位置注意力模块,二是通道注意力模块,来捕获丰富的上下文依赖关系。这两种模块分别关注空间维度和通道维度上的依赖关系。DANet能自适应地融合局部特征和全局依赖关系,从而提升特征表示能力,得到更精确的分割结果。

6.PANet 与 FPN

论文1:Path Aggregation Network for Instance Segmentation (用于实例分割的路径聚合网络)
论文2:Feature Pyramid Networks for Object Detection (用于目标检测的特征金字塔网络)

方法简介」PANet网络,用于改进基于提议的实例分割框架的信息流。PANet通过自下而上的路径增强来增强整个特征层次,以在较低层中获得精确的定位信号,从而缩短了信息路径。它还提出了自适应特征池化,将特征网格和所有特征级别与提议子网络进行连接,使每个特征级别的有用信息能够直接传播到后续的提议子网络。此外,还创建了一个捕捉每个提议不同视图的互补分支,以进一步改善掩膜预测。这些改进易于实现,且几乎没有额外的计算开销。
在这里插入图片描述

FPN 是检测不同尺度物体的识别系统中的基本组成部分。但最近的深度学习目标检测器已经避免了金字塔表示,部分原因是它们计算和内存密集。本文利用深度卷积神经网络固有的多尺度、金字塔层次结构,以边际额外成本构建特征金字塔。从上到下的架构与侧向连接相结合,可在所有尺度上构建高级语义特征图。这种架构称为特征金字塔网络(FPN),作为通用特征提取器在几个应用中表现出显著改进。
在这里插入图片描述

7.ASPP

论文:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs
使用深度卷积网络、稀疏卷积和全连接CRF进行语义图像分割

「方法简介:」论文提出了DeepLab系统,用于解决语义图像分割任务。主要贡献有三点:首先,强调了稀疏卷积(Atrous Convolution)在密集预测任务中的重要性,它允许控制特征响应的计算分辨率,并有效扩大滤波器视野;其次,提出了稀疏空间金字塔池化(ASPP),以多尺度稳健分割对象;最后,结合DCNNs和概率图模型的方法,提高对象边界的定位精度。

在这里插入图片描述

8.SPP-net

论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
用于视觉识别的深度卷积网络中的空间金字塔池化

「方法简介:」现有的深度卷积神经网络(CNN)需要固定大小(例如224x224)的输入图像,论文为网络配备了另一种池化策略——“空间金字塔池化”,以消除上述要求。这种新的网络结构称为SPP-net,可以生成固定长度的表示,而无需考虑图像的大小/比例。金字塔池化对物体形变具有鲁棒性。由于这些优点,SPP-net总体上应改进所有基于CNN的图像分类方法。

在这里插入图片描述

9.PSP-net

论文:Pyramid Scene Parsing Network
⽤于语义分割的⾦字塔场景识别⽹络

「方法简介:」场景识别是一项具有挑战性的任务,因为它需要处理各种不同的场景和词汇。本文提出了一种新的方法,通过使用不同区域基于上下文的聚合和金字塔池化模块,以及提出的金字塔场景识别网络(PSPNet),来提高场景识别的性能。这种方法能够有效地利用全局上下文信息,并产生高质量的识别结果。PSPNet提供了一个优越的框架,用于像素级别的预测任务。

在这里插入图片描述

10.ECA-Net

论文:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
深度卷积神经网络的高效通道注意力

方法简介」论文介绍了Efficient Channel Attention (ECA)模块,这个模块能够提升深度卷积神经网络(CNN)的性能,同时保持较低的模型复杂度。它通过避免维度降低和采用局部通道交互策略来实现这一点。与ResNet50相比,ECA模块的参数和计算量更少,但性能提升超过2%。实验结果表明,ECA模块在图像分类、目标检测和实例分割等任务中表现出了更高的效率和良好的性能。
在这里插入图片描述


二、TransNeXt(2023)

论文:TransNeXt: Robust Foveal Visual Perception for Vision Transformers
代码:https://github.com/DaiShiResearch/TransNeXt

1.提出问题

  近年来,Vision Transformer(ViT)已成为各种计算机视觉任务的热门Backbone架构。ViT模型由两个关Key组件组成:自注意力层(Token混合器) 和 MLP层(通道混合器)。自注意力机制,通过计算Query和Key之间的相似性动态生成亲和矩阵,用于全局信息聚合方法,无需卷积的强归纳偏差,有着出色的特征提取潜力。然而,ViT 的编码设计,最初是为了语言建模,全局亲和矩阵的计算由于其平方复杂度和高内存消耗而面临挑战,这限制了其在高分辨率图像特征上的应用

  为了减轻 self-Attn 中固有的平方复杂度和内存消耗带来的计算和内存负担,稀疏注意力机制被提出。典型方法是局部注意力,限制了注意力在特征图上的一个窗口内。然而,由于其有限的感受野,这种方法通常需要交替堆叠与不同类型的Token混合器以实现跨窗口信息交换。另一种典型的方法是空间下采样注意力中的Key和Value(例如,池化,网格采样)。由于它牺牲了Query对特征图的细粒度感知,这种方法也存在一定的局限性。最近的研究 交替堆叠空间下采样注意力和局部注意力,取得了令人满意的表现结果。

  然而,最近的研究和实验表明,具有残差块的深度网络,类似于较浅的集成网络,表明堆叠块实现的跨层信息交换可能不如预期的那样有效。另一方面,局部注意力和空间下采样注意力与生物视觉的工作方式有显著不同。生物视觉 对视觉焦点附近特征的分辨率更高,而对远处特征的分辨率较低。此外,眼球移动时,生物视觉这种特性在图像中任何位置的像素上都保持一致,这意味着像素级的平移等价性。然而,在基于窗口分区的局部注意中,窗口边缘和中心的Token不被视为等价,这明显存在差异。

在这里插入图片描述
  由于残差连接中的 深度衰减效应,许多 ViT 模型在堆叠层时无法形成足够的信息混合。即使堆叠了很深的层,它们的窗口分区的痕迹也总是形成不自然的伪影,如图2所示。为此,作者 模拟生物视觉中人类视杆细胞视觉的信息感知,首先引入了像素聚焦注意力 它采用双路径设计。在一条路径中,每个Query具有对其最近邻居特征的细粒度注意力,而在另一条路径中,每个Query具有对空间下采样特征的粗粒度注意力,允许进行全局感知。这种方法是基于每个像素的,有效地模拟了眼球的连续移动。

  此外,作者将Query嵌入和位置注意力机制引入到像素聚焦注意力中,从而提出了聚合像素聚焦注意力,作者简称为 聚合注意力。这种方法进一步多样化地生成了亲和矩阵,而不仅仅是依赖Query和Key之间的相似性,从而在单个注意力层内聚合多个注意力机制。作者还重新评估了VIT
中的通道混合器设计要求,并提出了名为卷积GLU的新型通道混合器
。这种混合器更适合图像任务,并集成基于局部特征的通道注意力来增强模型的鲁棒性。

  作者提出 TransNeXt,这是一种分层视觉Backbone网络,其中包含聚合注意力作为Token混合器和卷积GLU作为通道混合器。通过在图像分类、目标检测和分割任务上的全面评估,作者证明了这些混合组件的有效性。TransNeXt-Tiny, 仅在lmageNet-1K上预训练,在lmageNet上的准确率达到 84.0%,超过了ConvNeXt-B。在COCO目标检测中,它使用DINO检测头,在分辨率为 384时,实现了55.1的框 mAP 比在384分辨率下预训练的ConvNeXt-L提高了1.7。作者的TransNeXtSmall/Base,仅在 384分辨率下进行 5 个epoch的微调,在lmageNet上的准确率达到了86.0,比在30 个 epoch 下微调的 previous state-of-the-art MaxViT-Base 提高了0.3%/0.5%。下图是一些指标:

在这里插入图片描述

2.Aggregated Pixel-focused Attention

2.1 Pixel-focused Attention(像素聚焦注意力机制)

  受 生物视觉系统 的工作原理的启发, Pixel-focused Attention 在每个Query附近具有细粒度的感知,同时同时保持全局信息的粗粒度意识。为了实现眼球运动中固有的像素级平移等价性,作者采用了一种双路径设计,包括 以Query为中心的滑动窗口注意力和池化注意力
在这里插入图片描述

为了在两个注意力路径之间诱导耦合,作者对两个路径的QueryKey相似度结果使用相同的softmax进行计算。这导致了细粒度和粗粒度特征之间的竞争,将像素聚焦注意力转化为多尺度注意力机制

  定义输入特征图上以 (i, j) 为中心的滑动窗口中的像素集合为 ρ(i, j) 。对于固定的窗口大小 k×k , ||ρ(i, j)|| = k2 。同时, 作者定义从特征图池化得到的像素集合为的 σ(X) 。对于池化大小 Hp×Wp,||σ(X) || = HpWp。因此, 像素聚焦注意力 (PFA) 可以如下描述:

在这里插入图片描述

  激活与池化为了在后续应用中利用PFA的线性复杂度模式进行大规模图像推理,作者 采用无参数的适应性平均池化进行空间降采样。然而,平均池化操作会严重损失信息。因此,作者在特征图池化之前,使用单层神经网络进行投影和激活,以压缩和提取有用的信息,从而在降采样后提高信息压缩率。降采样后,作者再次使用 Layer norm来规范化输出,以确保 Xσ(X) 的方差一致性。σ(X) = LayerNorm( AvgPool( GELU( Linear(X) ) ) )

2.2 Aggregating Diverse Attentions in a Single Mixer Query embedding

  视觉问答(VQA)任务许多视觉语言模型利用来自文本模态的Query,对来自视觉模态的Key进行交叉注意力,从而实现跨模态信息聚合。此外,已经证明在微调这些多模态模型以适应特定子任务时,合并并优化可学习的prefixQueryToken是有效且高效的

  将可学习的QueryToken集成到Backbone网络的注意力机制中(不同于传统的QKV注意力,它不使用输入中的Query,而是根据当前任务学习一个Query来执行交叉注意力),作者将这种方法归类为 可学习的Key-Value(LKV)注意力,并与QKV注意力相平行。作者发现,将传统QKV注意力中所有QueryToken的Query嵌入(QE)添加起来,可以实现与Query无关的信息聚合效果,且额外开销可以忽略不计。作者只需要修改方程如下:
在这里插入图片描述
  位置注意力: 信息聚合的另一种替代方法是使用一组可学习的Key,这些Key与来自输入的Query相互作用以获得注意力权重,即Query-Learnable-Value(QLV)注意力。这种方法与传统的QKV注意力不同,因为它破坏了Key和Value之间的一对一对应关系,导致为当前Query学习更多的隐式相对位置信息。因此,它通常与滑动窗口相结合在视觉任务中使用。与静态的亲和矩阵(如卷积或相对位置偏差)不同,这种通过数据驱动建模方法生成的亲和矩阵考虑了当前Query的影响,并可以基于它动态适应。

  作者观察到, 这种数据驱动建模方法 比静态相对位置偏差更具鲁棒性, 并且可以进一步增强局部建模能力。利用这一特点, 作者在每个注意力头中引入一组可学习的Token , 允许这些Token与Query相互作用以获得额外的动态位置偏差并将其添加到特征上 。使用这种增强只需要增加额外的计算开销 。作者只需要修改方程 4 如下:

在这里插入图片描述

2.3 Overcoming Multi-scale Image Input

  长度缩放余弦注意力与缩放点积注意力不同,长度缩放余弦注意力使用了余弦相似度,已被观察到可以生成更适中的注意力权重,并有效地增强了大型视觉模型的训练稳定性。长度缩放余弦注意力通常将一个额外的可学习系数乘到Query和Key的余弦相似度结果上,使得注意力机制可以有效地忽略不重要的Token。

  最近的研究发现,随着输入序列长度的增加,注意力输出的置信度会降低。因此,注意力机制的缩放因子应该与输入序列长度相关。进一步地,[52]提出了一个关于缩放点积注意力熵不变性的设计,以方便更好的泛化到未知长度。在[52]中,提供了当Query和Key被近似为具有大小 d \sqrt{d} d 的向量时,缩放点积注意力熵的估计:
在这里插入图片描述
长度缩放余弦注意力如下:
在这里插入图片描述
  对于余弦相似度, 作者定义Query和Key在其头维上进行 L2 正则化.模长为1。 τ \tau τ是每个注意力头初始化为 1 0.24 \frac {1}{0.24} 0.241的可学习变量.。N 表示每个Query与有效Key交互的次数, 不包括被 Mask Token的计数, μ \mu μ(i,j)表示位置 (i,j) 处的填充MaskToken集合:
在这里插入图片描述
在这里插入图片描述

2.4 Feature Analysis

  计算复杂度: 给定输入 X∈RC×H×W ,池化大小为 Hp×Wp, 窗口大小 k×k,作者考虑’激活与池化操作和线性投影的影响。像素聚焦注意力和聚合注意力的计算复杂度如下:

  作者观察到, 当池化大小 Hp×Wp 设置为与输入大小无关的值时, Ω \Omega Ω(PFA) 和 Ω \Omega Ω(AA) 的长度都线性地与输入序列的长度成正比。这意味着PFA和 AA 都可以在线性复杂度模式下进行推理。

3.Convolutional GLU(做信息交换)

3.1 Motivation

  ViT时代的门控通道注意力:以前的工作,由Squeeze-and-Excitation(SE)机制代表,首先将通道注意力引入计算机视觉领域,该机制使用一个带有激活函数的分枝来控制网络输出。在门控通道注意力中,门控分支具有比value分支更大的决策权,最终决定相应的输出元素是否为零。从这个角度来看,SE机制巧妙地使用全局平均池化后的特征作为门控分支的输入,实现更好的决策,同时解决了CNN结构中感受野不足的问题。然而,在ViT时代,全局感受野不再是稀缺的。

在这里插入图片描述

  各种全局Token混合器由自注意力表示,已经比全局平均池化实现了更高的全局信息聚合质量。这使得SE机制使用的全局池化方法表现出一些缺陷,例如该方法使特征图上的所有Token共享相同的门控信号,导致其通道注意力缺乏灵活性并过于粗糙。尽管如此,ViT结构缺乏通道注意力。最近的研究发现,将SE机制集成到通道混合器中可以有效提高模型鲁棒性,如图4所示。

  ViT时代的卷积:最近的研究表明,将3×3的零填充卷积引入到视觉Transformer中可以被视为一种条件位置编码(CPE),它有效地捕获了零填充带来的位置信息.。

3.2 全新的Channel Mixer设计

  Gated Linear Unit (GLU) :GLU是一种通道混合器,已在各种 NLP任务中显示出比多层感知机(MLP)更好的性能。GLU由两个线性投影组成,其中一个是通过激活函数激活的元素乘法。与SE机制不同,每个Token的gating信号都来自Token本身,并且其感受野大小不超过value分支的感受野。

  更优雅的设计:作者发现,在GLU的gating分支的激活函数之前,简单地添加一个最小形式的卷积,可以使它的结构符合基于最近邻特征的门控通道注意力的设计概念,并将其转换为门控通道注意力机制。作者称这种方法为卷积GLU,如图4所示。

  特征分析:在卷积GLU(ConvGLU)中的每个Token都具有基于其最近精细特征的独特gating信号,这解决了全局平均池化在SE机制中的过于粗糙的问题。它也满足了某些没有位置编码设计的ViT模型,这些模型需要由卷积提供的位置信息

此外,这种设计的值分支仍保持与MLP和GLU相同的深度,使其易于反向传播。

4.TransNeXt Architecture

   TransNeXt采用与PVTv2相同的四阶段分层Backbone网络和重叠块嵌入。聚合注意力在1-3阶段的池化特征大小也设置为 H 32 \frac {H}{32} 32H× W 32 \frac {W}{32} 32W , 与 PVTV2相同。在阶段4中, 由于特征图大小已减少到 H 32 \frac {H}{32} 32H× W 32 \frac {W}{32} 32W, 特征池化模块无法正常工作。作者采用了一种修改后的多头自注意力 (MHSA) 版本, 它应用Query嵌入和长度缩放余弦注意力。这与 PVTv2在第四阶段使用MHSA一致。对于1-4阶段的通道混合器, 作者使用卷积GLU与 GELU[22]激活。扩展比也遵循PVTv2的 [ 8,8,4,4 ] 设置。

在这里插入图片描述

  为了确保与典型MLP参数的一致性,卷积GLU的隐藏维数为 2 3 \frac {2}{3} 32× 的集合值。此外,作者将头维数设置为24,以在通道维度上被3整除。TransNeXt变体的具体配置可以在附录中找到。

4.实验

  ImageNet-1K分类:作者的代码基于PVTv2实现,并遵循DeiT的训练方法。模型从 scratch 在ImageNet-1K数据集上进行300个epoch的训练,利用自动混合精度(AMP)在8个GPU上进行训练

在这里插入图片描述

5.总结

  基于生物模仿视杆细胞视觉设计的Token混合器聚合注意力和一种具有门控通道注意力的通道混合器卷积GLU。作者将它们结合起来,提出一种强大的高度鲁棒的视觉模型TransNeXt,它在各种视觉任务如分类、检测和分割等方面都实现了最先进的性能。TransNeXt在多尺度推理的出色性能突显了它在解决深度衰减问题方面优于大型核策略的优势。此外,作者还提供了一个CUDA实现,在训练中实现了高达103.4%的加速,在推理中实现了60.5%的加速。不想看公式的,像素聚焦注意力总结如下:

在这里插入图片描述
在这里插入图片描述


相关文章:

【Backbone】TransNeXt:最新ViT模型(原理+常用神经网络汇总)

文章目录 一、近几年神经网络 Backbone 回顾1.Densenet 与 Resnet2.CBP3.SENet4.GCNet5.DANet6.PANet 与 FPN7.ASPP8.SPP-net9.PSP-net10.ECA-Net 二、TransNeXt(2023)1.提出问题2.Aggregated Pixel-focused Attention2.1 Pixel-focused Attention&#…...

使用Java将图片添加到Excel的几种方式

1、超链接 使用POI&#xff0c;依赖如下 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency>Java代码如下,运行该程序它会在桌面创建ImageLinks.xlsx文件。 …...

用什么台灯对眼睛最好?考公护眼台灯推荐

之前我一直觉得&#xff0c;孩子近视&#xff0c;是因为玩手机太多&#xff0c;看电子产品的时间过长&#xff0c;但后来控制孩子看电子产品时间的触底反弹与越来越深的度数告诉我&#xff0c;孩子近视的真正原因&#xff0c;我根本没有找到&#xff0c;后来看到一篇报告&#…...

【嵌入式开发 Linux 常用命令系列 4.2 -- .repo 各个目录介绍】

文章目录 概述.repo 目录结构manifests/default.xmlManifest 文件的作用default.xml 文件内容示例linkfile 介绍 .repo/projects 子目录配置和管理configHEADhooksinfo/excludeobjectsrr-cache 工作区中的对应目录 概述 repo 是一个由 Google 开发的版本控制工具&#xff0c;它…...

【C++学习手札】基于红黑树封装模拟实现map和set

​ &#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 &#x1f49c;本文前置知识&#xff1a; 红黑树 ♈️今日夜电波&#xff1a;漂流—菅原纱由理 2:55━━━━━━️&#x1f49f;──────── 4:29 …...

linux查看当前路径的所有文件大小;linux查看当前文件夹属于什么文件系统

1&#xff1a;指令查看当前路径所有文件内存空间大小&#xff1b;这样可以方便查询每个文件大小情况&#xff0c;根据需要进行删除 df -h // 根目录 du -ah --max-depth1 // 一级目录 虚拟机 du -ah -d 1 // 一级目录 设备使用 du -ah --max-depth2 // 二…...

PPT插件-好用的插件-超级文本-大珩助手

常用字体 内置了大量的常用字体&#xff0c;方便快捷的一键更换字体&#xff0c;避免系统字体过多卡顿 文字整理 包含删空白行、清理编号、清理格式&#xff0c;便于处理从网络上复制的资料 文本打散与合并 包含文本打散、文本合并&#xff0c;文本打散可实现将一个文本打散…...

Kafka中的Topic

在Kafka中&#xff0c;Topic是消息的逻辑容器&#xff0c;用于组织和分类消息。本文将深入探讨Kafka Topic的各个方面&#xff0c;包括创建、配置、生产者和消费者&#xff0c;以及一些实际应用中的示例代码。 1. 介绍 在Kafka中&#xff0c;Topic是消息的逻辑通道&#xff0…...

LAMP部署

目录 一、安装apache 二、配置mysql 三、安装php 四、搭建论坛 4、安装另一个网站 一、安装apache 1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld setenforce 0 httpd-2.4.29.tar.gz apr-1.6.2.t…...

DouyinAPI接口开发系列丨商品详情数据丨视频详情数据

电商API就是各大电商平台提供给开发者访问平台数据的接口。目前&#xff0c;主流电商平台如淘宝、天猫、京东、苏宁等都有自己的API。 二、电商API的应用价值 1.直接对接原始数据源&#xff0c;数据提取更加准确和完整。 2.查询速度更快&#xff0c;可以快速响应用户请求实现…...

AWS Remote Control ( Wi-Fi ) on i.MX RT1060 EVK - 3 “编译 NXP i.MX RT1060”( 完 )

此章节叙述如何修改、建构 i.MX RT1060 的 Sample Code“aws_remote_control_wifi_nxp” 1. 点击“Import SDK example(s)” 2. 选择“MIMXRT1062xxxxA”>“evkmimxrt1060”&#xff0c;并确认 SDK 版本后&#xff0c;点击“Next>” 3. 选择“aws_examples”>“aw…...

5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6&#xff1a;不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…...

python epub文件解析

python epub文件解析 代码BeautifulSoup 介绍解释 代码 import ebooklib from bs4 import BeautifulSoup from ebooklib import epubbook epub.read_epub("逻辑思维训练1200题.epub")# 解析 for item in book.get_items():# 提取书中的文本内容if item.get_type() …...

Visual Studio 2015 中 FFmpeg 开发环境的搭建

Visual Studio 2015 中 FFmpeg 开发环境的搭建 Visual Studio 2015 中 FFmpeg 开发环境的搭建新建控制台工程拷贝并配置 FFmpeg 开发文件测试FFmpeg 开发文件的下载链接 Visual Studio 2015 中 FFmpeg 开发环境的搭建 新建控制台工程 新建 Win32 控制台应用程序。 具体流程&…...

期末速成数据库极简版【存储过程】(5)

目录 【7】系统存储过程 【8】用户存储过程——带输出参数的存储过程 创建存储过程 存储过程调用 【9】用户存储过程——不带输出参数的存储过程 【7】系统存储过程 系统存储我们就不做过程讲解用户存储过程会考察一道大题&#xff0c;所以我们把重点放在用户存储过程。…...

Android Studio的代码笔记--IntentService学习

IntentService学习 IntentService常规用法清单注册服务服务内容开启服务 IntentService 一个 HandlerThread工作线程&#xff0c;通过Handler实现把消息加入消息队列中等待执行&#xff0c;通过传递的intent在onHandleIntent中处理任务。&#xff08;多次调用会按顺序执行事件…...

C语言 - 字符函数和字符串函数

系列文章目录 文章目录 系列文章目录前言1. 字符分类函数islower 是能够判断参数部分的 c 是否是⼩写字⺟的。 通过返回值来说明是否是⼩写字⺟&#xff0c;如果是⼩写字⺟就返回⾮0的整数&#xff0c;如果不是⼩写字⺟&#xff0c;则返回0。 2. 字符转换函数3. strlen的使⽤和…...

Redis rdb源码解析

前置学习&#xff1a;Redis server启动源码-CSDN博客 1、触发时机 1、执行save命令--->rdbSave函数 2、执行bgsave命令--->rdbSaveBackground函数或者&#xff08;serverCron->prepareForShutdown&#xff09; 3&#xff0c;主从复制-->startBgsaveForReplication…...

深入理解CyclicBarrier

文章目录 1. 概念2. CylicBarier使用简单案例3. 源码 1. 概念 CyclicBarrier 字面意思回环栅栏&#xff08;循环屏障&#xff09;&#xff0c;通过它可以实现让一组线程等待至某个状态&#xff08;屏障点&#xff09;之后再全部同时执行。叫做回环是因为当所有等待线程都被释放…...

微信小程序 - 格式化操作 moment.js格式化常用使用方法总结大全

格式化操作使用 1. 首先&#xff0c;下载一个第三方库 moment npm i moment --save 注&#xff1a;在微信小程序中无法直接npm 下载 导入 的&#xff08;安装一个就需要构建一次&#xff09; 解决&#xff1a;菜单栏 --> 工具 --> 构建 npm 点击即可&#xff08;会…...

学习pytorch18 pytorch完整的模型训练流程

pytorch完整的模型训练流程 1. 流程1. 整理训练数据 使用CIFAR10数据集2. 搭建网络结构3. 构建损失函数4. 使用优化器5. 训练模型6. 测试数据 计算模型预测正确率7. 保存模型 2. 代码1. model.py2. train.py 3. 结果tensorboard结果以下图片 颜色较浅的线是真实计算的值&#x…...

电子学会C/C++编程等级考试2021年09月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:抓牛 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 1、从X移动到X-1或X+1,每次移动花费一分钟 2、从X移动到2*X,每…...

Halcon联合winform显示以及处理

在窗口中添加窗体和按钮&#xff0c;并在解决方案资源管理器中调加了导入Halcon导出的.cs文件&#xff0c;运行出现下图的问题&#xff1a; 问题1&#xff1a;CS0017 程序定义了多个入口点。使用/main(指定包含入口点的类型&#xff09;进行编译。 解决方案1.&#xff1a; 右…...

【设计模式-4.3】行为型——责任链模式

说明&#xff1a;本文介绍设计模式中行为型设计模式中的&#xff0c;责任链模式&#xff1b; 审批流程 责任链模式属于行为型设计模式&#xff0c;关注于对象的行为。责任链模式非常典型的案例&#xff0c;就是审批流程的实现。如一个报销单的审批流程&#xff0c;根据报销单…...

单片机语言--C51语言的数据类型以及存储类型以及一些基本运算

C51语言 本文主要涉及C51语言的一些基本知识&#xff0c;比如C51语言的数据类型以及存储类型以及一些基本运算。 文章目录 C51语言一、 C51与标准C的比较二、 C51语言中的数据类型与存储类型2.1、C51的扩展数据类型2.2、数据存储类型 三、 C51的基本运算3.1 算术运算符3.2 逻辑…...

《每天一个Linux命令》 -- (5)通过sshkey密钥登录服务器

欢迎阅读《每天一个Linux命令》系列&#xff01;在本篇文章中&#xff0c;将介绍通过密钥生成&#xff0c;使用公钥连接管理服务器。 概念 SSH 密钥是用于安全地访问远程服务器的一种方法。SSH 密钥由一对密钥组成&#xff1a;公钥和私钥。公钥存储在远程服务器上&#xff0c;…...

kubernetes的服务发现(二)

如前面的文章我们说了&#xff0c;kubernetes的服务发现是服务端发现模式。它有一个服务注册中心&#xff0c;使用DNS作为服务的注册表。每个集群都会运行一个DNS服务&#xff0c;默认是CoreDNS服务。每个服务都会在这个DNS中注册。注册的大致过程&#xff1a; 1、向kube-apise…...

【矩阵论】Chapter 4—特征值和特征向量知识点总结复习

文章目录 1 特征值和特征向量2 对角化3 Schur定理和正规矩阵4 Python求解 1 特征值和特征向量 定义 设 σ \sigma σ为数域 F F F上线性空间 V V V上的一个线性变换&#xff0c;一个非零向量 v ∈ V v\in V v∈V&#xff0c;如果存在一个 λ ∈ F \lambda \in F λ∈F使得 σ (…...

Linux 进程地址空间

知识回顾 在 C 语言的学习过程中&#xff0c;我们知道内存是可以被划分为栈区&#xff0c;堆区&#xff0c;全局数据区&#xff0c;字符常量区&#xff0c;代码区的。他的空间排布可能是下面的样子&#xff1a; 其中&#xff0c;全局数据区&#xff0c;可以划分为已初始化全局…...

websocket vue操作

let websocket: WebSocket; /** websocket测试 */ function connectWebsocket() {if (typeof WebSocket "undefined") {console.log("您的浏览器不支持WebSocket");return;}// let ip window.location.hostname ":8080";let ip "10.192…...

腾讯云CentOS8 jenkins war安装jenkins步骤文档

腾讯云CentOS8 jenkins war安装jenkins步骤文档 一、安装jdk 1.1 上传jdk-11.0.20_linux-x64_bin.tar.gz 1.2 解压jdk安装包文件 tar -zxvf jdk*.tar.gz 1.3 在/usr/local 目录下创建java目录 cd /usr/local mkdir java 1.4 切到java目录&#xff0c;把jdk解压文件改名为jd…...

Linux: glibc: net/if.h vs linux/if.h

最近看到一段代码改动,用net/if.h替换了linux/if.h。仔细看了看这两个的区别: https://stackoverflow.com/questions/20082433/what-is-the-difference-between-linux-if-h-and-net-if-h 从网上搜了一下看到如下的一个编译错误,如果同时使用这两个if.h文件,需要将net/if.h…...

使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题

文章目录 一、 篇头二、 操作步骤2.1 编译AOSP AS工程文件2.2 将AOSP导入Android Studio2.3 切到Project试图2.4 等待index结束2.5 下载缺失的JDK 1.82.6 导入完成 三、 导入AS的好处3.1 本文案例演示源码编译错误AS对比同文件其余地方的调用AS错误提示依赖AS做错误修正 一、 篇…...

python random详解

文章目录 random简单示例1. 生成随机浮点数&#xff1a;2. 生成指定范围内的随机整数&#xff1a;3. 从序列中随机选择元素&#xff1a;4. 打乱序列顺序&#xff1a; 常用的方法及其解释和例子&#xff1a;1. random()&#xff1a;该方法返回一个0到1之间的随机浮点数。例如&am…...

java-两个列表进行比较,判断那些是需要新增的、删除的、和更新的

文章目录 前言两个列表进行比较&#xff0c;判断那些是需要新增的、删除的、和更新的 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实…...

【WPF.NET开发】WPF中的对话框

目录 1、消息框 2、通用对话框 3、自定义对话框 实现对话框 4、打开对话框的 UI 元素 4.1 菜单项 4.2 按钮 5、返回结果 5.1 模式对话框 5.2 处理响应 5.3 非模式对话框 Windows Presentation Foundation (WPF) 为你提供了自行设计对话框的方法。 对话框是窗口&…...

NLP项目实战01之电影评论分类

介绍&#xff1a; 欢迎来到本篇文章&#xff01;在这里&#xff0c;我们将探讨一个常见而重要的自然语言处理任务——文本分类。具体而言&#xff0c;我们将关注情感分析任务&#xff0c;即通过分析电影评论的情感来判断评论是正面的、负面的。 展示&#xff1a; 训练展示如下…...

一款可无限扩展的软件定时器开源框架项目代码

摘自链接 时间片轮询架构如何稳定高效实现&#xff0c;取代传统的标志位判断方式&#xff0c;更优雅更方便地管理程序的时间触发操作。 可以在STM32单片机上运行。...

GRE与顺丰圆通快递盒子

1. DNS污染 随想&#xff1a; 在输入一串网址后&#xff0c;会发生如下变化如果你在系统中配置了 Hosts 文件&#xff0c;那么电脑会先查询 Hosts 文件如果 Hosts 里面没有这个别名&#xff0c;就通过域名服务器查询域名服务器回应了&#xff0c;那么你的电脑就可以根据域名服…...

12.Mysql 多表数据横向合并和纵向合并

Mysql 函数参考和扩展&#xff1a;Mysql 常用函数和基础查询、 Mysql 官网 Mysql 语法执行顺序如下&#xff0c;一定要清楚&#xff01;&#xff01;&#xff01;运算符相关&#xff0c;可前往 Mysql 基础语法和执行顺序扩展。 (8) select (9) distinct (11)<columns_name…...

线性回归与逻辑回归:深入解析机器学习的基石模型

目录 一、线性回归 二、逻辑回归 逻辑回归算法和 KNN 算法的区别 分类算法评价维度...

电脑待机怎么设置?让你的电脑更加节能

在日常使用电脑的过程中&#xff0c;合理设置待机模式是一项省电且环保的好习惯。然而&#xff0c;许多用户对于如何设置电脑待机感到困扰。那么电脑待机怎么设置呢&#xff1f;本文将深入探讨三种常用的电脑待机设置方法&#xff0c;通过详细的步骤&#xff0c;帮助用户更好地…...

数据库对象介绍与实践:视图、函数、存储过程、触发器和物化视图

文章目录 一、视图&#xff08;View&#xff09;1、概念2、基本操作1&#xff09;创建视图2&#xff09;修改视图3&#xff09;删除视图4&#xff09;使用视图 3、使用场景4、实践 二、函数&#xff08;Function&#xff09;1、概念2、基本操作1&#xff09;创建函数2&#xff…...

arm平台编译so文件回顾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、几个点二、回顾过程 1.上来就执行Makefile2.编译第三方开源库.a文件 2.1 build.sh脚本2.2 Makefile3.最终编译三、其它知识点总结 前言 提示&#xff1a;这…...

【数据结构】顺序表的定义和运算

目录 1.初始化 2.插入 3.删除 4.查找 5.修改 6.长度 7.遍历 8.完整代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &…...

idea使用maven的package打包时提示“找不到符号”或“找不到包”

介绍&#xff1a;由于我们的项目是多模块开发项目&#xff0c;在打包时有些模块内容更新导致其他模块在引用该模块时不能正确引入。 情况一&#xff1a;找不到符号 情况一&#xff1a;找不到包 错误代码部分展示&#xff1a; Failure to find com.xxx.xxxx:xxx:pom:0.5 in …...

MetricBeat监控MySQL

目录 一、安装部署 二、开启mysql监控模块 三、编辑mysql配置文件 四、启动Metricbeat 五、查看监控图表 一、安装部署 metriceat的安装部署参考章节&#xff1a; Metricbeat安装使用&#xff0c;这里不再赘述。 二、开启mysql监控模块 进入metricbeat安装目录 ./metricb…...

Child Mind Institute - Detect Sleep States(2023年第一次Kaggle拿到了银牌总结)

感谢 感谢艾兄&#xff08;大佬带队&#xff09;、rich师弟&#xff08;师弟通过这次比赛机械转码成功、耐心学习&#xff09;、张同学&#xff08;也很有耐心的在学习&#xff09;&#xff0c;感谢开源方案&#xff08;开源就是银牌&#xff09;&#xff0c;在此基础上一个月…...

Esxi7Esxi8设置VMFSL虚拟闪存的大小

Esxi7Esxi8设置VMFSL虚拟闪存的大小 ESXi7,8 默认安装会分配一个 VMFSL(VMFS-L)(Local VMFS)很大空间(120G), 感觉很浪费, 实际给 8G 就可以了, 最少 6G , 经实验,给2G没法安装 . Esxi7是虚拟闪存的 修改的方法是: 在安装时修改 设置 autoPartitionOSDataSize8192 在cdromBoo…...

vue2+electron桌面端一体机应用

vue2+electron项目 前言:公司有一个项目需要用Vue转成exe,首先我使用vue-cli脚手架搭建vue2项目,然后安装electron 安装electron 这一步骤可以省略,安装electron-builder时会自动安装electron npm i electron 安装electron-builder vue add electron-builder 项目中多出…...