【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,依赖如下 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency>Java代码如下,运行该程序它会在桌面创建ImageLinks.xlsx文件。 …...

用什么台灯对眼睛最好?考公护眼台灯推荐
之前我一直觉得,孩子近视,是因为玩手机太多,看电子产品的时间过长,但后来控制孩子看电子产品时间的触底反弹与越来越深的度数告诉我,孩子近视的真正原因,我根本没有找到,后来看到一篇报告&#…...
【嵌入式开发 Linux 常用命令系列 4.2 -- .repo 各个目录介绍】
文章目录 概述.repo 目录结构manifests/default.xmlManifest 文件的作用default.xml 文件内容示例linkfile 介绍 .repo/projects 子目录配置和管理configHEADhooksinfo/excludeobjectsrr-cache 工作区中的对应目录 概述 repo 是一个由 Google 开发的版本控制工具,它…...

【C++学习手札】基于红黑树封装模拟实现map和set
🎬慕斯主页:修仙—别有洞天 💜本文前置知识: 红黑树 ♈️今日夜电波:漂流—菅原纱由理 2:55━━━━━━️💟──────── 4:29 …...
linux查看当前路径的所有文件大小;linux查看当前文件夹属于什么文件系统
1:指令查看当前路径所有文件内存空间大小;这样可以方便查询每个文件大小情况,根据需要进行删除 df -h // 根目录 du -ah --max-depth1 // 一级目录 虚拟机 du -ah -d 1 // 一级目录 设备使用 du -ah --max-depth2 // 二…...

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

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

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

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

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”,并确认 SDK 版本后,点击“Next>” 3. 选择“aws_examples”>“aw…...

5G - NR物理层解决方案支持6G非地面网络中的高移动性
文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6:不同信噪比下的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】系统存储过程 系统存储我们就不做过程讲解用户存储过程会考察一道大题,所以我们把重点放在用户存储过程。…...
Android Studio的代码笔记--IntentService学习
IntentService学习 IntentService常规用法清单注册服务服务内容开启服务 IntentService 一个 HandlerThread工作线程,通过Handler实现把消息加入消息队列中等待执行,通过传递的intent在onHandleIntent中处理任务。(多次调用会按顺序执行事件…...

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

Redis rdb源码解析
前置学习:Redis server启动源码-CSDN博客 1、触发时机 1、执行save命令--->rdbSave函数 2、执行bgsave命令--->rdbSaveBackground函数或者(serverCron->prepareForShutdown) 3,主从复制-->startBgsaveForReplication…...

深入理解CyclicBarrier
文章目录 1. 概念2. CylicBarier使用简单案例3. 源码 1. 概念 CyclicBarrier 字面意思回环栅栏(循环屏障),通过它可以实现让一组线程等待至某个状态(屏障点)之后再全部同时执行。叫做回环是因为当所有等待线程都被释放…...
微信小程序 - 格式化操作 moment.js格式化常用使用方法总结大全
格式化操作使用 1. 首先,下载一个第三方库 moment npm i moment --save 注:在微信小程序中无法直接npm 下载 导入 的(安装一个就需要构建一次) 解决:菜单栏 --> 工具 --> 构建 npm 点击即可(会…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...