ConvNeXt V2学习笔记

news2025/1/17 3:37:01

ConvNeXt V2学习笔记

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

Abstract

在改进的架构和更好的表示学习框架的推动下,视觉识别领域在21世纪20年代初实现了快速现代化和性能提升。例如,以ConvNeXt[52]为代表的现代ConvNets在各种场景中都表现出了强大的性能。虽然这些模型最初是为使用ImageNet标签的监督学习而设计的,但它们也可能受益于自监督学习技术,如蒙面自编码器(MAE)[31]。然而,我们发现,简单地结合这两种方法会导致性能不佳。在本文中,我们提出了一个全卷积掩码自编码器框架和一个新的全局响应归一化(GRN)层,可以添加到ConvNeXt架构中,以增强通道间的特征竞争。这种自我监督学习技术和架构改进的共同设计产生了一个名为ConvNeXt V2的新模型家族,它显著提高了纯ConvNets在各种识别基准上的性能,包括ImageNet分类、COCO检测和ADE20K分割。我们还提供各种大小的预训练ConvNeXt V2模型,从高效的3.7 m参数Atto模型,在ImageNet上具有76.7%的top-1精度,到仅使用公共训练数据实现最先进的88.9%精度的650M Huge模型。

1. Introduction

在前几十年研究突破的基础上[34,44,47,60,68],视觉识别领域迎来了大规模视觉表征学习的新时代。预训练的大规模视觉模型已经成为特征学习和实现广泛视觉应用的基本工具。视觉表示学习系统的性能在很大程度上受到三个主要因素的影响:所选择的神经网络体系结构和训练网络的方法,还有训练数据。在视觉识别领域,这些领域的进步都有助于整体性能的提高。

image-20230105114844106

神经网络架构设计的创新一直在表示学习领域发挥着重要作用。卷积神经网络架构(ConvNets)[34,44,47]通过允许对各种视觉识别任务使用通用特征学习方法[25,33],而不是依赖于手动特征工程,对计算机视觉研究产生了重大影响。近年来,最初为自然语言处理开发的transformer体系结构[68]也因其在模型和数据集大小[21]方面的强大伸缩行为而受到欢迎。最近,ConvNeXt[52]体系结构使传统的卷积网络现代化,并证明纯卷积模型也可以是可扩展的体系结构。然而,探索神经网络架构设计空间的最常用方法仍然是通过对ImageNet上的监督学习性能进行基准测试

在另一条研究线上,视觉表征学习的重点已经从带有标签的监督学习转向带有借口目标的自我监督预训练。在许多不同的自监督算法中,蒙面自编码器(MAE)[31]最近在视觉领域的蒙面语言建模中取得了成功,并迅速成为一种流行的视觉表示学习方法。然而,自监督学习的常见做法是使用为监督学习设计的预定架构,并假设设计是固定的。例如,MAE是使用视觉转换器[21]架构开发的。

可以将架构和自监督学习框架的设计元素结合起来,但在使用ConvNeXt和蒙面自编码器时,这样做可能会带来挑战。其中一个问题是MAE有一个特定的编解码器设计,该设计针对变压器的序列处理能力进行了优化,这允许计算量大的编码器专注于可见补丁,从而降低了预训练成本。这种设计可能与使用密集滑动窗口的标准convnet不兼容。此外,如果不考虑架构和训练目标之间的关系,可能不清楚是否能实现最佳性能。事实上,之前的研究已经表明,使用基于掩模的自监督学习训练ConvNets可能很难[43],并且经验证据表明,变压器和ConvNets可能具有不同的特征学习行为,这些行为可能会影响表示质量

为此,我们建议在同一框架下共同设计网络架构和掩码自编码器,目的是使基于掩码的自监督学习对ConvNeXt模型有效,并获得与使用变压器获得的结果相似的结果

在设计掩码自编码器时,我们将掩码输入视为一组稀疏补丁,并使用稀疏卷积[28]仅处理可见部分。该想法的灵感来自于在处理大规模3D点云时使用稀疏卷积[15,76]。在实践中,我们可以使用稀疏卷积实现ConvNeXt,并且在微调时,权重被转换回标准的密集层,而不需要特殊处理。为了进一步提高预训练效率,我们将变压器解码器替换为单个ConvNeXt块,使整个设计完全卷积化。我们观察到这些变化的混合结果:学习到的特征是有用的,并且在基线结果的基础上有所改进,但微调性能仍然不如基于变压器的模型

然后,我们对ConvNeXt的不同训练配置进行特征空间分析。当直接在掩码输入上训练ConvNeXt时,我们在MLP层发现了一个潜在的特征崩溃问题。为了解决这个问题,我们建议添加一个全局响应规范化层来增强通道间的特性竞争。当模型使用蒙面自编码器进行预训练时,这种变化是最有效的,这表明重用监督学习中的固定架构设计可能是次优的

总之,我们介绍了ConvNeXt V2,它与掩码自编码器一起使用时,性能得到了提高。我们发现该模型显著提高了纯ConvNets在各种下游任务上的性能,包括ImageNet分类[60]、COCO对象检测[49]和ADE20K分割[81]。ConvNeXt V2模型可用于各种计算制度,包括不同复杂性的模型:从高效的3.7 m参数Atto模型,在ImageNet上达到76.7%的top-1精度,到650M Huge模型,在使用in - 22k标签时达到最先进的88.9%精度。

2. Related Work

ConvNets

ConvNets的设计于20世纪80年代首次引入,并使用反向传播进行训练,多年来在优化、精度和效率方面经历了许多改进[35,36,39,44,58,61,63,75]。这些创新主要是通过在ImageNet数据集上使用监督训练发现的。近年来,已经做出了一些努力,使用自监督的前文本任务(如旋转预测和着色)执行体系结构搜索,例如UnNAS[50]。最近,ConvNeXt[52]对设计领域进行了全面审查,并证明纯ConvNets可以像视觉转换器[21,51]一样可扩展,后者已成为许多应用程序的主导架构。ConvNeXt在要求较低复杂度的场景中特别出色[7,70,71]。我们的ConvNeXt V2模型由自监督学习提供支持,提供了一种简单的方法来升级现有模型,并在广泛的用例中实现性能的显著提升。

Masked Autoencoders

以掩码自编码器[31]为代表的掩码图像建模是一种最新的自监督学习策略。蒙面自编码器作为一种神经网络预训练框架,在视觉识别方面表现出了广泛的影响。然而,原始的掩码自编码器由于其非对称编码器-解码器设计而不能直接适用于convnet。其他框架,如[3,77],已经尝试将该方法用于ConvNets,但结果好坏参半。MCMAE[23]使用一些卷积块作为输入标记器。据我们所知,没有预先训练的模型表明自我监督学习可以提高最佳ConvNeXt监督结果

3. Fully Convolutional Masked Autoencoder

我们的方法在概念上很简单,并以完全卷积的方式运行。学习信号是通过以高掩蔽率随机屏蔽原始输入视觉,并让模型在给定剩余上下文的情况下预测缺失部分来生成的。我们的框架如图2所示,现在我们将更详细地描述它的主要组件。

image-20230105114649240

Masking.

我们使用掩码比为0.6的随机掩码策略。由于卷积模型具有分层设计,其中特征在不同阶段进行下采样,掩码在最后阶段生成,并递归上采样直至最佳分辨率。为了在实践中实现这一点,我们从原始输入图像中随机去除60%的32 × 32块。我们使用最小的数据增强,只包括随机调整大小的裁剪

Encoder design.

在我们的方法中我们使用ConvNeXt[52]模型作为编码器。使蒙面图像建模有效的一个挑战是防止模型学习允许它从蒙面区域复制和粘贴信息的快捷方式。在基于变压器的模型中,这是相对容易防止的,它可以将可见的补丁作为编码器的唯一输入。然而,使用ConvNets实现这一点比较困难,因为必须保留2D图像结构。虽然朴素解决方案涉及在输入端引入可学习的掩码令牌[3,77],但这些方法降低了预训练的效率,并导致训练和测试时间不一致,因为在测试时没有掩码令牌。当掩蔽比很高时,这尤其成问题

为了解决这个问题,我们的新见解是从“稀疏数据视角”来查看蒙面图像,这是受到了在3D任务中学习稀疏点云的启发[15,76]。我们的关键观察是,蒙面图像可以表示为一个二维稀疏像素阵列。基于这种见解,很自然地将稀疏卷积合并到我们的框架中,以促进掩码自动编码器的预训练。在实践中,在预训练期间,我们建议将编码器中的标准卷积层转换为子流形稀疏卷积,这使得模型只能在可见数据点上操作[15,27,28]。我们注意到,稀疏卷积层可以在微调阶段转换回标准卷积,而不需要额外的处理。作为一种替代方法,也可以在密集卷积运算前后应用二进制掩蔽运算。这种操作在数值上与稀疏卷积具有相同的效果,理论上计算量更大,但在TPU等AI加速器上更友好。

Decoder design.

我们使用一个轻量级的普通ConvNeXt块作为解码器。这在总体上形成了非对称编码器-解码器体系结构,因为编码器更重有等级制度。我们还考虑了更复杂的解码器,如分层解码器[48,59]或变压器[21,31],但更简单的单一ConvNeXt块解码器在微调精度方面表现良好,并大大减少了预训练时间,如表1所示。我们将解码器的尺寸设置为512。

image-20230105200818080

Reconstruction target.

我们计算重建图像与目标图像之间的均方误差(MSE)。与MAE[31]类似,目标是原始输入的patch-wise归一化图像,并且损失仅应用于被屏蔽的patch。

FCMAE

我们现在通过结合上面描述的建议,提出了一个全卷积掩码自动编码器(FCMAE)。为了评估该框架的有效性,我们使用ConvNeXt-Base模型作为编码器,并进行了一系列消融研究。在整篇论文中,我们关注端到端微调性能,因为它在迁移学习中的实际相关性,并使用它来评估学习表示的质量。

我们分别使用ImageNet-1K (IN1K)数据集进行800和100个epoch的预训练和微调,并报告单个224×224中心作物的前1个IN-1K验证精度。关于实验装置的更多细节可以在附录中找到。

为了理解在我们的FCMAE框架中使用稀疏卷积的影响,我们首先研究它在掩码图像预训练期间如何影响学习表示的质量。我们的实证研究结果表明,为了达到良好的效果,防止信息泄漏是至关重要的

image-20230105201009797

接下来,我们将自我监督方法与监督学习进行比较。具体而言,我们获得了两个基线实验结果:使用相同配方的监督100 epoch基线和ConvNeXt原始论文[52]中提供的300 epoch监督训练基线。我们发现,我们的FCMAE预训练提供了比随机基线更好的初始化(即82.7→83.7),但它仍然需要赶上在原始监督设置中获得的最佳性能。

image-20230105200957103

这与最近使用基于变压器的模型[3,31,77]的掩模图像建模的成功形成对比,其中预先训练的模型显著优于监督模型。这促使我们研究ConvNeXt编码器在蒙面自动编码器预训练期间所面临的独特挑战,我们接下来将讨论这个问题。

4. Global Response Normalization

在本节中,我们将介绍一种新的全局响应规范化(GRN)技术,使FCMAE预训练与ConvNeXt架构结合使用时更加有效。我们首先通过定性和定量特征分析来激发我们的方法。

Feature collapse

为了更深入地了解学习行为,我们首先在特征空间中进行定性分析。我们可视化了一个FCMAE预训练的ConvNeXt-Base模型的激活,并注意到一个有趣的“特征崩溃”现象:有许多死的或饱和的特征映射,激活在通道之间变得多余。我们在图3中显示了一些可视化效果。这种行为主要是在一个ConvNeXt块[52]的维度扩展MLP层中观察到的。

image-20230105201238354

Feature cosine distance analysis

为了进一步定量地验证我们的观察结果,我们进行了特征余弦距离分析。给定激活张量 X ∈ R H × W × C X∈R^{H×W ×C} XRH×W×C X i ∈ R H × W X_i ∈ R^{H×W} XiRH×W是第i个通道的特征映射。我们将其重塑为HW维向量,并计算平均的对方向余弦距离通过通道 1 C 2 ∑ i C ∑ j C 1 − cos ⁡ ( X i , X j ) 2 \frac{1}{C^{2}} \sum_{i}^{C} \sum_{j}^{C} \frac{1-\cos \left(X_{i}, X_{j}\right)}{2} C21iCjC21cos(Xi,Xj)距离值越大,特征的多样性越强;距离值越小,特征的冗余性越强

为了进行分析,我们从ImageNet-1K验证集中的不同类别中随机选择1000张图像,并从不同模型的每一层中提取高维特征,包括FCMAE模型、ConvNeXt监督模型[52]和MAE预训练的ViT模型[31]。然后,我们计算每个图像的每层距离,并对所有图像的值求平均值。结果如图4所示。FCMAE预训练的ConvNeXt模型表现出明显的特征崩溃趋势,与我们从之前的激活可视化中观察到的一致。这促使我们考虑在学习过程中使特征多样化并防止特征崩溃的方法

Approach

大脑中有许多促进神经元多样性的机制。例如,横向抑制[6,30]可以帮助增强被激活神经元的反应,增加单个神经元对刺激的对比度和选择性,同时还可以增加整个神经元群体的反应多样性。在深度学习中,这种形式的横向抑制可以通过响应归一化[45]来实现。在这项工作中,我们引入了一种新的响应归一化层,称为全局响应归一化(GRN),其目的是提高信道的对比度和选择性。给定一个输入特征 X ∈ R H × W × C X∈R^{H×W ×C} XRH×W×C,所提出的GRN单元包括三个步骤:1)全局特征聚合,2)特征归一化,3)特征校准

首先,我们聚合了一个空间特征图 X i X_i Xi转化为具有全局函数G(·)的向量gx:

image-20230105202542573

这可以看作是一个简单的池化层。我们在表2a中尝试了不同的函数。有趣的是,全球平均池,一个广泛使用的特征聚合器[37,72],在我们的例子中表现不佳。相反,我们发现使用基于范数的特征聚合,特别是使用l2范数,可以获得更好的性能。这给了我们一组聚合值$G(X) = gx ={||X_1||, ||X_2||, . . . , ||X_C||} ∈ R^C $ 这里的$ G(X)_i = ||X_i||$是聚合第i个通道的统计信息的标量

接下来,我们对聚合值应用响应归一化函数N(·)。具体来说,我们使用一个标准的分裂归一化如下:

image-20230105203011278

直观地,对于第i个通道,Eqn. 2计算了它相对于所有其他通道的相对重要性。与其他形式的归一化相似[42,45,68],这一步通过相互抑制在通道间形成特征竞争。在表2b中,我们还检查了其他归一化函数的使用,发现简单的除法归一化效果最好,尽管标准化 ( ∣ ∣ X i ∣ ∣ − µ) / σ (||Xi ||−µ)/σ ∣∣Xi∣∣µ/σ在应用于相同的L2形式聚合值时会产生类似的结果。

最后,我们使用计算的特征归一化分数来校准原始输入响应:

image-20230105203221614

核心GRN单元非常容易实现,只需要三行代码,并且没有可学习的参数。GRN单元的伪代码在算法1中。

image-20230105203302131

为了简化优化,我们添加了两个额外的可学习参数,γ和β,并将它们初始化为零。我们还在GRN层的输入和输出之间添加了一个残余连接。最终生成的GRN区块为 X i = γ ∗ X i ∗ N ( G ( X ) i ) + β + X i Xi=γ*Xi*N(G(X)i)+β+Xi Xi=γXiN(G(X)i)+β+Xi。此设置允许GRN层最初执行身份识别功能,并在训练期间逐渐适应。残余连接的重要性如表2c所示。

image-20230105203504036

ConvNeXt V2

我们将GRN层合并到原始ConvNeXt块中,如图5所示。我们根据经验发现,当应用GRN时,LayerScale[65]变得不必要,并且可以移除。使用这种新的模块设计,我们创建了各种不同效率和容量的模型,我们称之为ConvNeXt V2模型系列。这些型号的重量轻(例如Atto[70])来计算密集型(例如巨大型)。详细的型号配置见附录。

image-20230105203604631

Impact of GRN

我们现在使用FCMAE框架对ConvNeXt V2进行预训练,并评估GRN的影响。从图3中的可视化和图4中的余弦距离分析中,我们可以观察到ConvNeXt V2有效地缓解了特征塌陷问题。余弦距离值始终很高,表明各层之间保持了特征多样性。这种行为类似于MAE预训练的ViT模型[31]。总体而言,这表明ConvNeXt V2学习行为可以在类似的掩蔽图像预训练框架下类似于ViT。

image-20230105203657629

接下来,我们评估微调性能。

image-20230105203758536

当配备GRN时,FCMAE预训练模型可以显著优于300历元监督模型。GRN通过增强特征多样性来提高表示质量,这在V1模型中是不存在的,但已证明对于基于掩码的预训练至关重要。注意,这种改进是在不增加额外参数开销或增加FLOPS的情况下实现的。2

Relation to feature normalization methods

其他标准化层[2,41,45,67,73]的性能是否与全局响应归一化(GRN)层?在表2d中,我们将GRN与三个广泛使用的归一化层进行了比较:局部响应归一化(LRN)[45]、批处理归一化(BN)[41]和层归一化(LN)[2]。我们观察到,只有GRN能够显著优于监督基线。LRN缺乏全球背景,因为它只对比附近邻居的频道。BN沿着批处理轴在空间上归一化,这不适用于屏蔽输入。LN隐含地通过全球均值和方差标准化来鼓励特征竞争,但其效果不如GRN。

Relation to feature gating methods

增强神经元间竞争的另一种方法是使用动态特征门控方法[37,56,69,72,78]。在表2e中,我们将GRN与两个经典选通层进行了比较:挤压和排斥(SE)[37]和卷积块注意力模块(CBAM)[72]。SE侧重于信道门控,而CBAM侧重于空间门控。两个模块都可以增加与GRN所做的相似。GRN更加简单和高效,因为它不需要额外的参数层(如MLP)。

The role of GRN in pre-training/fine-tuning

最后,我们检验了GRN在预训练和微调中的重要性。我们在表2f中给出了结果,其中我们要么从微调中删除GRN,要么仅在微调时添加新初始化的GRN。无论哪种方式,我们都观察到了显著的性能下降,这表明在预训练和微调中保持GRN都很重要。

5. ImageNet Experiments

image-20230105204222881

image-20230105204232873

image-20230105204246401

6. Transfer Learning Experiments

image-20230105204306867

image-20230105204320543

7.Conclusion

在本文中,我们介绍了一个新的ConvNet模型族,称为ConvNeXtV2,它涵盖了更广泛的复杂性。虽然体系结构的变化很小,但它是专门为更适合自我监督学习而设计的。使用我们的完全卷积掩码自动编码器预训练,我们可以在各种下游任务中显著提高纯ConvNets的性能,包括ImageNet分类、COCO对象检测和ADE20K分割。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测:RCNN、SppNet、Fast RCNN、Faster RCNN是如何过渡的?

目标检测:RCNN、SppNet、Fast RCNN、Faster RCNN、思想总结R-CNN候选框生成Training迁移学习分类与回归候选框R-CNN存在的问题SppNet面临的问题空间金字塔池化特征图映射SppNet存在的问题Fast R-CNNR-CNN与SppNet存在的问题核心思想模型流程ROI Pooling多任务损失的…

力扣刷题记录——326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组的交集 II

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《326.3的幂、338. 比特位计数、342. 4的幂、350. 两个数组…

如何搭建邮箱服务器

目录 部署 DNS 黑名单 Mailcow:dockerized 部署 Mailcow:dockerized 为 Mailcow:dockerized 配置 TLS Mailu.io 生成配置文件 部署 Mailu 安全 S/MIME OpenPGP 推荐阅读 搭建邮局服务器的想法之前一直都有,不过一直没有尝试,国庆的时候从阿里…

62. 目标检测 / 物体检测 以及边缘框代码实现

1. 图片分类和目标检测的区别 2. 边缘框 3. 目标检测数据集 目标检测数据集常用的格式:假设是用文本文件来存的话,每一行表示一个物体,分别有文件名、物体类别、边缘框。因为一个图片文件里面可能有多个物体,同一个文件名可能会出…

STC32G 三电感电磁循迹小车

文章目录前言准备工作增量式以及位置式PID电机闭环电磁采样舵机闭环合并效果前言 准备18届的负压电磁,趁现在考试延期赶紧把车子给调了。 现在速度就只能提到1.5m,再往上调就有点打滑了,只能等后面逐飞把负压电机的做出来了之后看能不能让车…

靶机Os-Hax测试笔记

靶机Os-Hax测试笔记 靶机描述 Difficulty : Intermediate Flag : boot-root Learing : exploit | web application Security | Privilege Escalation Contact … https://www.linkedin.com/in/rahulgehlaut/ This works better with VirtualBox rather than VMware 下载…

elasticsearch 7.9.3知识归纳整理(六)之kibana图形化操作es指南

kibana图形化操作es指南 一、创建用户,角色和权限指引 1.创建角色 1.1 在kibana首页点击Manage and Administer the Elastic Stack下的securitys settings 1.2 点击左侧Security 下的roles 1.3 点击右上角的create role 1.4 输入角色名字 完成后点击下面的create…

C++不知算法系列之迷宫问题中的“见山不是山”

1. 前言 迷宫问题是一类常见的问题。 初识此类问题,应该是“见山是山”,理解问题的原始要求,便是查找从起点到终点的可行之路。 有了广泛的知识体系之后,应该是"见山不是山"。会发现迷宫就是邻接矩阵,树和…

CDH6.3.2整合DolphinScheduler3.0.0

注意事项zookeeper版本兼容要查看dolphinscheduler的libs目录下zookeeper的jar包CDH6.3.2DolphinScheduler3.0.0前置条件默认CDH以正确安装并启动至少官方要求的基础环境以正确安装并配置,点击跳转使用mysql需要驱动包 mysql-connector-java-8.0.16.jar,同时所有服务的libs里面…

电力系统电价与温度模型(Matlab代码实现)

目录 1 数学模型 2 运行结果 3 Matlab代码实现 1 数学模型 用于模拟电价的模型是一个简化形式的混合模型,如下图1所示。其根本驱动因素是天然气价格和气温。该模型在内部捕获了驱动因素与电价的关系之间的关系,以及与一天中的时间、一周中的哪一天和…

日常生产用项目一整套DevOps流水线搭建-笔记一(镜像仓库的设置)

写在前边 很多项目新手在接手开发项目的时候,由于缺乏经验,只能通过比较笨的方法去进行项目的部署和开发.这样就会非常非常的麻烦,重复的工作很多很多.我借着一个项目开发的时机,第一次实现了我原先只在想象中的流水线部署.但是由于跟正规公司的项目规模还有差距,我们的流水线…

十六、状态管理——Vuex(3)

本章概要 action 分发 action在组件中分发 action组合 action 16.7 action 在定义mutation 时,一条重要的原则就是 mutation 必须是同步函数。换句话说,在 mutation() 处理器函数中,不能存在异步调用。例如: mutations:{some…

关于前端的学习

最近在网上想模拟一个ai的围棋,然后在gitee上找了一个算法,想要启动一下。https://gitee.com/changjiuxiong/myGoChess?_fromgitee_search使用说明是这样的:使用说明npm installnpm run dev打开index.html可自定义棋盘大小: new Game(19), n…

Polynomial Round 2022 (Div. 1 + Div. 2, Rated, Prizes!)(A~E)

A. Add Plus Minus Sign给出01字符串,在两两之间加入或者-,使得最后得到的结果绝对值最小。思路:统计1的个数,若是奇数个,那最后绝对值一定是1,否则为0,按照最后结果添加或1即可。AC Code&#…

GD32F103-初次接触

前期资料 外形 原理图 参考手册 1.芯片数据手册 2.用户手册 3.固件库使用指南 固件库解析 外设缩写 一些不常见的外设缩写。 BKP 备份寄存器 DBG 调式模块 ENET 以太网控制模块Ethernet EXMC 外部存储器控制 EXTI 外部中断事件控制器 FMC 闪存控制器 GPIO/AFIO 通用…

量化股票池数据怎么分析出来的?

量化股票池数据是怎么分析出来的呢?说到这个需要先来了解股票量化的基本原理,在正常的基础上,不是所有的股票数据都经过一一筛选,而是使用一些分析工具来执行,就像a股自动交易接口系统需要编写相符合条件的策略来执行&…

【MySQL】MySQL存储引擎,索引,锁以及调优

文章目录存储引擎MySQL中的索引MySQL 索引优缺点MySQL 索引类型MySQL索引的实现MySQL中的锁MySQL8.0 新特性MySQL中调优存储引擎 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV等等存储引擎。 通过show engines; 命令查看,如下图 图中…

【目标检测】Mask R-CNN论文解读

目录:Mask R-CNN论文解读一、Mask-RCNN流程二、Mask-RCNN结构2.1 ROI Pooling的问题2.2 ROI Align三、ROI处理架构四、损失函数一、Mask-RCNN流程 Mask R-CNN是一个实例分割(Instance segmentation)算法,通过增加不同的分支&…

PTA_1_基础编程题目集

文章目录PTA--基础编程题目集1、简单输出整数函数接口定义:裁判测试程序样例:输入样例:输出样例:题解:2、多项式求和函数接口定义:裁判测试程序样例:输入样例:输出样例:题…

车载以太网 - 路由激活处理机制 - 04

在前面我们已经介绍过DoIP的路由激活,不过主要是介绍路由激活的相关的概念;今天我们主要来介绍下路由激活的处理逻辑,进一步的了解软件对路由激活的处理机制,让我们更深入的了解DoIP这块的处理逻辑,更加有助于我们的工作中开发和测试工作的进行。 首先我们简单看下…