PeLK: 大卷积核强势回归,高达101 × 101,提出了外围卷积

news2024/11/19 4:37:21

paper:https://arxiv.org/pdf/2403.07589

code:暂无

目录

0. 摘要

1. 引言

2. 相关工作

2.1. Large Kernel Convolutional Networks

2.2. Peripheral Vision for Machine Learning

3. 密集卷积优于条纹卷积

4. 参数高效的大核卷积神经网络

4.1. 外围卷积

4.2. 核位置嵌入

4.3. 局部外围卷积

4.4.架构规范

5. 实验


0. 摘要

        近期,一些大卷积核卷积网络以其高效且高性能强势杀回。然而,因为其卷积的平方复杂度,增大卷积核会带来巨大的参数量增长,而急剧增长的的参数量又会带来很多优化问题。由于这个问题,导致最近的CNN 以条纹卷积(即 51 × 5 + 5 × 51)的形式扩展到 51 × 51,而且随着内核大小的持续增长已经开始趋于饱和。在本文中,我们深入研究了这些关键问题,并探索我们是否可以继续扩大内核以获得更高的性能增益。受人类视觉的启发,我们提出了一种类似人类的外围卷积,它通过参数共享有效地减少了超过 90% 的密集网格卷积的参数计数,并设法将内核大小扩大到非常大。我们的外围卷积的行为与人类高度相似,在不损失性能的情况下,将卷积的复杂度从 O(K2) 降低到 O(log K)。在此基础上,我们提出了参数高效的大核网络(PELK)。我们的 PELK 在 ImageNet 分类、ADE20K 上的语义分割和 MS COCO 上的对象检测等各种视觉任务中都优于 Swin、ConvNeXt、RepLKNet 和 SLaK 等现代视觉转换器和 ConvNet 架构。我们首次成功地将 CNN 的内核大小扩展到前所未有的 101 × 101,并展示了一致的改进。

1. 引言

        卷积神经网络 (CNN) 几十年来在机器学习中发挥着关键作用 [17, 20, 21, 39]。然而,近年来,视觉Transformer (ViTs) [6, 13, 25, 46, 51] 极大地挑战了它们的优势。一些工作[36,48]将VITS的强大性能归因于它们的大感受野:受益于自注意力机制,ViT 可以从大空间范围内捕获上下文信息并建模远程依赖关系。受此启发,CNN [12, 24, 26] 的最新进展表明,当配备大内核大小(例如 31 × 31)时,纯 CNN 架构可以在各种视觉任务上的表现与最先进的 ViT 相当甚至更好。

        尽管大核卷积网络表现出强大的性能和吸引人的效率,但存在一个致命的问题:核大小为 K时,其复杂度就是 O(K2)。由于这个问题,直接扩大内核会带来大量的参数。例如,31 × 31 内核的参数比 ResNet [17] 中典型的 3 × 3 对应物的参数大 100 倍,比 ConvNeXt [26] 中使用的 7 × 7 内核的参数大约 20 倍。增殖的参数随后会导致严重的优化问题,使其无用甚至不利于直接扩大内核大小[12,24,26]。为了解决这个问题,RepLKNet[12]重新参数化一个平行于大内核的5×5内核,以弥补优化问题,SLaK[24]妥协使用条纹卷积将复杂度降低到线性,并缩放到51 × 51(即51 × 5 + 5 × 51)。然而,对于下游任务的分辨率(例如,ADE20K 上的 2048 × 512),这仍然是一个有限的交互范围,更重要的是,条纹卷积缺乏密集卷积的范围感知,因此我们推测它可能会破坏模型的空间感知能力。

        在本文中,我们首先在统一的现代框架(即 SLaK [24])下对卷积形式进行了全面剖析。我们凭经验验证了我们的猜想,即密集网格卷积优于条带卷积,在多个内核大小上有一致的改进。这种现象不仅适用于分类任务,而且对下游任务更为明显,表明密集卷积相对于条纹形式的基本优势。然而,如上所述,大密集卷积的平方复杂度导致参数激增,导致模型尺寸迅速增加,优化难度更大,从而阻止了它进一步增大。这就自然引出了一个问题:是否有一种方法可以在减少所需参数的同时保留密集网格卷积的形式。如果是这样,我们是否就可以进一步扩大密集网格卷积以获得更高的性能收益?

        与卷积或自注意力的密集计算不同,人类视觉具有更有效的视觉处理机制,称为外围视觉 [22]。具体来说,人类视觉将整个视野划分为中心区域和外围区域,条件是注视中心的距离,中心区域的光感受器细胞(锥和杆)的数量超过外围区域[40]的100倍。这种生理结构为人类提供了模糊感知的特征:我们有强烈的感知,在中心区域清晰地看到,识别形状和颜色;而在外围区域,视野模糊,分辨率降低,因此我们只能识别抽象的视觉特征,如运动和高级上下文。这种机制使我们能够在视野的一小部分(< 5%)内感知重要的细节,同时最小化剩余部分(> 95%)中不必要的信息,从而促进人脑的高效视觉处理[2,10,11,28,37,38,52,54]。

        受人类视觉和回答上述问题的启发,我们提出了一种新颖的外围卷积,在保持密集计算形式的同时,将卷积的参数复杂度从 O(K2) 降低到 O(log K)。我们的外围卷积由三个设计组成:i) 焦点和模糊机制。我们在卷积核的中心区域保持细粒度参数,并在外围区域使用广泛的参数共享; ii) 增加共享粒度。我们的共享网格以指数级增长的方式增长,这比固定粒度更有效; iii) 内核位置嵌入。我们引入了核位置嵌入来解决由宽范围外围共享以优雅且廉价的方式引起的细节模糊问题。由于我们的外围卷积显着减少了大内核的参数(超过 90%),我们能够设计出性能强的大型密集内核卷积网络。

        基于上述外围卷积,我们提出了参数高效的大核网络(PELK),这是一种新的纯CNN架构,具有有效感受野(ERF)随参数呈指数增长。由精心设计的参数共享机制促进,PELK以非常小的参数成本扩大内核大小,实现了非常大的密集内核(例如,51 × 51, 101 × 101),并有一致的改进。我们的 PELK 在各种视觉任务中实现了最先进的性能,在配备非常大的内核大小时表现出纯 CNN 架构的潜力。

        PELK被证明能够覆盖比以前的大内核范式更大的ERF区域,更有趣的是,我们的分析和消融表明,外围卷积的最佳设计原则与人类视觉有着惊人的相似之处,这表明生物启发的机制可能是设计强大现代网络有希望的候选者。

2. 相关工作

2.1. Large Kernel Convolutional Networks

        从深度学习的早期开始,大核卷积网络可以追溯到一些早期模型[20,42,43]。在 VGG-Net [39] 之后,使用一堆小内核(例如 1 × 1 或 3 × 3)来获得的大感受野已成为过去十年间常见的做法。全局卷积网络 (GCN) [34] 通过使用条纹卷积 (1×M + M×1) 的组合来改进语义分割任务,将内核大小扩大到 15。然而,据报道所提出的方法会损害 ImageNet 的性能。最近,大型内核卷积网络以吸引人的性能返回[12,24,26,47]。ConvMixer [47] 使用 9 × 9 深度卷积来替换 ViT [13] 和 MLP-Mixer [44] 的空间混合器(即自注意力块和全连接块)。ConvNeXt[26]与Swin[25]的设计理念相一致,以探索一个强大的现代CNN架构,配备了7 × 7深度卷积。RepLKNet [12] 通过重新参数化与其平行的小内核(例如 5 × 5)并的性能与 Swin Transformer [25] 相当,令人印象深刻的将内核大小扩展到 31 × 31。我们的工作也受到LargeKernel3D[5]的启发,它将大内核设计引入到3D网络中,并扩展到17 × 17 × 17。相比之下,我们探索了2D通用卷积的极端,在类人模式下扩展到更大的101 × 101。SLaK[24]将分解后的卷积与动态稀疏性相结合,以条纹卷积的形式将核扩展到51×51(例如,51×5+5×51)。然而,随着内核大小的持续增长,它开始饱和。与现有技术不同,我们研究了哪种卷积形式在大型内核设计中更有效。更重要的是,我们探索了非常大的密集内核的设计,并测试了它是否可以带来进一步的收益。

2.2. Peripheral Vision for Machine Learning

        人类视觉具有特殊的视觉处理系统,称为外围视觉[22]。它根据到中央凹的距离将整个视野划分为多个轮廓区域,每个区域都有不同的分辨率粒度进行识别。Rosenholtz[37]的工作讨论了深度重要发现和现有的关于周边视觉的神话,表明了外围视觉对人类在不同任务上的感知比以前认为的更为关键。在此之后,许多研究 [2, 10, 11, 28, 38, 54] 致力于揭示周边视觉机制的基本原理和深度影响。由于周边视觉在人类视觉中起着至关重要的作用,许多开创性的工作[11,14 -16,29,50]挖掘周边视觉与机器视觉(如cnn)之间的联系。[49]引入了一种受生物学启发的机制,以提高神经网络对小扰动的鲁棒性。FoveaTer [19] 使用径向极坐标池化区域将更多的固定/计算资源动态分配给更具挑战性的图像。PerViT [33] 建议将外围位置编码合并到多头自注意力层中,以将视觉场划分为不同的外围区域,表明网络学习感知视觉数据,类似于人类视觉的方式。继续之前的研究,本文探讨了将人类周边视觉与大核卷积网络混合,并引入了一种新的外围卷积来有效地减少密集卷积的参数。

3. 密集卷积优于条纹卷积

        我们首先研究密集网格卷积是否优于条纹卷积。我们采用统一的现代框架 SLaK [24] 进行研究。根据RepLKNet[12],大核卷积比ImageNet分类更能促进下游任务。因此,我们不仅在 ImageNet-1K 上进行评估,还在 ADE20K 上进行评估作为我们的基准。本文采用MegEngine[1]开发的高效大卷积核实现。

        仿照 SLaK [24] ,我们在 ImageNet 上训练所有模型 120 个 epoch 。数据增强、正则化和超参数都采用相同设置。然后我们使用预训练模型作为 ADE20K 上的主干。具体来说,我们使用MMSegmentation[7]实现的UperNet[56]和80K迭代训练计划。我们不使用任何高级技术或自定义算法,因为我们只寻求评估主干。

        SLaK 引入了一个两步方法,用于将内核扩展到51 × 51: 1)将一个大核分解为两个矩形并行核; 2)利用动态稀疏性和扩展更多的宽度。为了彻底分析卷积形式的效果,我们对 w/ 和 w/o 稀疏性进行了实验。默认情况下,我们重新参数化 5 × 5 卷积以简化 SLaK 和 RepLKNet 所采取的优化问题。表 1 的结果表明,无论动态稀疏性如何,密集网格卷积都超过条纹卷积。

        我们进一步在不同的内核大小下探索了卷积形式(即 K×K vs.K×N) 。具体来说,我们将 SLaK 的条形 conv 的较短边固定为 5 作为默认设置 (N=5),然后逐渐将 K 从 51 减少到 7。我们不使用动态稀疏性来完全消融卷积形式。如图 2 所示,密集网格卷积在多个内核大小之间始终优于条带卷积,增益随着内核大小的增加而增加,证明了密集网格大内核卷积的基本优势。

        然而,如第 1 节所述,密集网格卷积的平方复杂度可以带来激增的参数。例如,如图 2 所示,将内核从 7 缩放到 51 只会为条纹 conv 带来大约 7.3 倍的参数,而对于密集 conv 则为 53.1 倍。鉴于人类的周边视觉在外围区域只有少量的光感受器细胞,我们认为密集参数对于外围相互作用不是必需的。受此启发,我们试图通过引入外围视觉机制来降低参数复杂度,同时保留密集计算以保持密集卷积的强大性能。

4. 参数高效的大核卷积神经网络

4.1. 外围卷积

        形式上,标准的 2D 卷积核由一个 4D 向量组成:w \in \mathbb R^{c_{in} \times c_{out} \times k \times k},其中 c_in 代表输入通道,c_out 是输出通道,k 表示空间核维度。我们试图通过空间参数共享用更小的核w_\theta \in \mathbb R^{c_{in} \times c_{out} \times k' \times k'}参数化w,其中0 < k '≤k。首先,我们定义共享网格 S = [s0, s1,..., sk′ -1],其中 Pk′ -1i=0 si = k。根据 S,我们将 k×kposition 划分为 k′ × k′ 区域:对于 a, b = 0, 1,。.., k′ − 1,

通过这种方式,我们可以利用一个小内核来参数化更大的内核,实现空间参数共享。图 1a 描述了这种设计的说明。

        接下来,我们详细阐述了外围卷积的关键设计。我们将 w_θ 的内核半径表示为 r。为了便于理解,这里我们将共享网格重新表述为轴对称形式:S=[\bar{s}_{-r}, \bar {s}_-r+1,...,\bar s_0, \bar s_1,...,\bar s_{r-1}, \bar s_{r}],其中r = (k' -1 ) / 2。

类似于人类的外围视觉,我们的外围卷积的共享网格主要由两个核心设计组成:

        i) 焦点和模糊机制。如图1b所示,我们在卷积核中心区域保持细粒度参数,其中共享网格设置为 1(即不共享)。对于外围区域,我们利用远程参数共享来利用外围视觉的空间冗余。我们在第 5.4 节中证明,中心区域的细粒度至关重要,而外围区域可以在不损失性能的情况下承受广泛的参数共享;

        ii) 指数增加的共享粒度。人类视觉以准指数模式[35]下降。受此启发,我们设计了我们的共享网格以指数级增长的方式增长。这种设计可以优雅地将卷积的参数复杂度从 O(K2) 降低到 O(log K),从而可以进一步扩大密集卷积的内核大小。具体来说,共享网格 S 由下面构成:

其中rc是中心细粒度区域的半径,mis是指数增长的基础,m默认设置为2。

4.2. 核位置嵌入

        尽管所提出的外围卷积有效地减少了密集卷积的参数,但大量的参数共享可能会带来另一个问题:外围区域的局部细节模糊。特别是当内核大小以外围卷积的形式扩展到超过 50 甚至 100 时,当单个参数需要处理 8 × 8 甚至 16 × 16 外围区域时,这种现象会进一步放大。

        为了解决这个问题,我们提出了内核位置嵌入。形式上,给定一组输入特征 X,我们通过核权重的卷积来处理这些特征。我们用trunc normal[53]初始化位置嵌入h \in \mathbb R^{c_{in} \times k \times k}。输出位置 (x, y) 处的卷积过程可以表示为:

其中 Y 是输出。rw 是内核 w 的半径, r_w = (k - 1) / 2.

        如图 3 所示,通过引入内核的位置嵌入,我们可以区分共享区域中的特定位置,从而弥补共享引起的模糊局部细节问题。实际上,这可以看作是向输入特征添加相对位置信息的偏差。值得注意的是,阶段中的所有内核共享相同的位置嵌入 h,因此 h 带来的附加参数可以忽略不计。这种设计以廉价和优雅的方式共享权重来解决位置不敏感问题,特别是对于非常大的内核,例如 51 × 51 和 101 × 101。

4.3. 局部外围卷积

        大内核卷积网络已被证明具有高通道冗余[57],并且非常适合稀疏性[24]。由于我们的外围卷积使我们能够设计更大的密集卷积,具有更强的空间感知能力,我们希望进一步利用大卷积的通道冗余。我们引入了 Inception 风格的设计,其中只有特征图的部分通道将通过卷积处理。我们遵循一个简单的理念:更多的身份映射来利用通道冗余。具体来说,对于输入 X,我们将其沿通道维度分为两组,

其中 g 是卷积分支的通道数,默认情况下设置为 \frac{3}{8} C_{in}。然后将拆分的输入分别输入到外围卷积和恒等映射中,

最后,将两个分支的输出连接起来以恢复原始形状, 

        这种设计可以看作是 Inceptionstyle 结构的一个特例,例如 Inception [41]、Shufflenet [30, 61] 和 InceptionNeXt [57]。他们在并行分支中使用不同的运算符,而我们采用了更简单的理念:只有外围卷积和身份映射。我们凭经验发现,这种设计非常适合具有非常大内核的外围卷积,显着减少了 FLOPs,而不会损失性能。

4.4.架构规范

        基于上述设计和观察,我们现在详细阐述了我们的参数高效大内核网络 (PELK) 的架构。我们主要遵循 ConvNeXt 和 SLaK 来构建具有多个大小的模型。具体来说,PelK 也采用了 4 阶段的框架。我们使用具有 4 × 4 内核和 4 个步幅的卷积层构建词干。小尺寸的块数为 [3, 3, 9, 3],小/基尺寸的块数为 [3, 3, 3, 27, 3]。PELK不同阶段的内核大小默认为[51,49,47,13]。对于 PELK101,内核大小扩大到 [101、69、67、13]。

        默认情况下,我们将中心 5 × 5 区域保持细粒度。对于 PELK-101,我们将中心区域扩大到 7 × 7 以调整增加的内核。在 SLaK 之后,我们还使用动态稀疏性来增强模型容量。所有超参数都设置相同(1.3×宽度,40% 稀疏度)。我们在第 5.4 节中对内核配置进行了彻底的消融。

5. 实验

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

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

相关文章

【Vue】如何使用Webpack实现打包操作

一、Webpack介绍 Webpack最主要的作用就是打包操作&#xff0c;由两个核心部分构成分别是“出口”与“入口”。wbepack是现在比较热门的打包工具了&#xff0c;它可以将许多松散耦合的模块按照依赖和规则打包成符合生产环境部署的前端资源。说的直白一点&#xff0c;通过webpac…

ansible-playbook离线升级centos内核

目录 概述实践ansible目录结构关键代码执行效果 结束 概述 内核离线包官网下载地址如下&#xff1a; 地址 实践 ansible目录结构 如对 ansible 不熟悉&#xff0c;离线包下载有问题&#xff0c;请至此地址下载&#xff0c;按本文操作可直接使用。 相关文章链接如下 文章地…

Java基础_集合类_List

List Collection、List接口1、继承结构2、方法 Collection实现类1、继承结构2、相关类&#xff08;1&#xff09;AbstractCollection&#xff08;2&#xff09;AbstractListAbstractSequentialList&#xff08;子类&#xff09; 其它接口RandomAccess【java.util】Cloneable【j…

Android Studio gradle 默认sourceSets配置

一. AS默认的sourceSets配置 sourceSets在Android插件中如何使用的&#xff1a;android {sourceSets {main {manifest.srcFile AndroidManifest.xmljava.srcDirs [src]resources.srcDirs [src]aidl.srcDirs [src]renderscript.srcDirs [src]res.srcDirs [res]assets.srcD…

企业智能名片小程序:AI智能跟进功能助力精准营销新篇章

在数字化浪潮的推动下&#xff0c;企业营销手段不断迭代升级。如今&#xff0c;一款集手机号授权自动获取、智能提醒、访客AI智能跟进及客户画像与行为记录于一体的企业智能名片小程序&#xff0c;正以其强大的AI智能跟进功能&#xff0c;助力企业开启精准营销的新篇章。 通过深…

STM32用HAL库函数实现硬件IIC

/*出处&#xff1a;【STM32入门教程-2024】第12集 IIC通信与温湿度传感器AHT20(DHT20)_哔哩哔哩_bilibili */ 这篇笔记我主要介绍代码实现&#xff0c;想要了解原理的请自己看视频&#xff0c;我不过多赘述了。 AHT20通信数据帧格式&#xff1a; ①对照手册上的通信流程写初…

政安晨:【Keras机器学习示例演绎】(二十)—— 综合梯度的模型可解释性

目录 综合梯度 设置 综合梯度算法 可视化渐变和集成渐变的辅助类 让我们试一试 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c…

debian配置BIND DNS服务器

前言 局域网内有很多台主机&#xff0c;IP难以记忆。 而修改hosts文件又难以做到配置共享和统一&#xff0c;需要一台内网的DNS服务器。 效果展示 这里添加了一个域名hello.dog&#xff0c;将其指向为192.168.1.100。 同时&#xff0c;外网的域名不会受到影响&#xff0c;…

实验8 NAT配置

实验8 NAT配置 一、 原理描述二、 实验目的三、 实验内容1.实验场景2.实验要求 四、 实验配置五、 实验步骤2.静态NAT配置3.NAT Outbound配置4.NAT Easy-IP配置 一、 原理描述 2019年11月26日&#xff0c;全球43亿个IPv4地址正式耗尽&#xff0c;这意味着没有更多的IPv4地址可…

Java 网络编程之TCP(五):分析服务端注册OP_WRITE写数据的各种场景(二)

接上文 二、注册OP_WRITE写数据 服务端代码&#xff1a; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.S…

STM32H750外设之ADC开关控制功能介绍

目录 概述 1 ADC开关控制介绍 2 开关控制功能流程 2.1 软件使能ADC 的流程 2.2 软件禁止 ADC 的流程 3 相关寄存器 3.1 ADCx_ISR 3.2 ADCx_CR 4 使能/禁止ADC流程图 ​5 写入 ADC 控制位时的限制 概述 本文介绍STM32H750外设之ADC开关控制功能&#xff0c;该功能是…

禅道项目管理系统身份认证绕过漏洞

禅道项目管理系统身份认证绕过漏洞 1.漏洞描述 禅道项目管理软件是国产的开源项目管理软件&#xff0c;专注研发项目管理&#xff0c;内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能&#xff0c;完整覆盖了研发项目管理的核心流程。 禅道项目管理系统…

每日OJ题_DFS回溯剪枝⑧_力扣494. 目标和

目录 力扣494. 目标和 解析代码&#xff08;path设置成全局&#xff09; 解析代码&#xff08;path设置全局&#xff09; 力扣494. 目标和 494. 目标和 难度 中等 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联…

“无媒体,不活动”,这句话怎么理解?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 “无媒体&#xff0c;不活动”通常指的是在现代社会中&#xff0c;媒体对于各种活动&#xff0c;尤其是公共活动和事件的推广、宣传和影响力是至关重要的。它强调了媒体在塑造公众意识、…

【Redis 开发】(Feed流的模式,GEO数据结构,BitMap,HyperLogLog)

Redis FeedTimeline GEOBitMapHyperLogLog Feed Feed流产品有两种常见模式: Timeline:不做内容筛选&#xff0c;简单的按照内容发布时间排序&#xff0c;常用于好友或关注。例如朋友圈 优点:信息全面&#xff0c;不会有缺失。并且实现也相对简单 缺点:信息噪音较多&#xff0c…

池化整合多元数据库,zData X 一体机助力证券公司IT基础架构革新

引言 近期&#xff0c;云和恩墨 zData X 多元数据库一体机&#xff08;以下简称 zData X&#xff09;在某证券公司的OA、短信和CRM业务系统中成功上线&#xff0c;标志着其IT基础架构完成从集中式存储向池化高性能分布式存储的转变。zData X 成功整合了该证券公司使用的达梦、O…

【VBA】获取指定目录下的Excel文件,并合并所有excel中的内容。

1.新建一个excel表格。并创建两个Sheet&#xff0c;名字分别命名为FileList 和 All information。 2.按ALTF11进入 VBA编程模块&#xff0c;插入模块。 3.将如下 第五部分代码复制到模块中。 点击运行即可&#xff0c;然后就能提取指定目录下的所有excel文件信息并合并到一起…

2021东北四省赛补题/个人题解

Dashboard - The 15th Chinese Northeast Collegiate Programming Contest - Codeforces I 模拟 #include <bits/stdc.h> using i64 long long; using namespace std; #define int long long int mp[8] {0, 7, 27, 41, 49, 63, 78, 108}; void solve() {int n; cin …

如何有效的将丢失的mfc140u.dll修复,几种mfc140u.dll丢失的解决方法

当你在运行某个程序或应用程序时&#xff0c;突然遭遇到mfc140u.dll丢失的错误提示&#xff0c;这可能会对你的电脑运行产生一些不利影响。但是&#xff0c;不要担心&#xff0c;以下是一套详细的mfc140u.dll丢失的解决方法。 mfc140u.dll缺失问题的详细解决步骤 步骤1&#x…

Atcoder Beginner Contest351 A-E Solution题解

文章目录 [A - The bottom of the ninth](https://atcoder.jp/contests/abc351/tasks/abc351_a)[B - Spot the Difference ](https://atcoder.jp/contests/abc351/tasks/abc351_b)[D - Grid and Magnet](https://atcoder.jp/contests/abc351/tasks/abc351_d)E Note&#xff1a;…