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

每日文献(十一)——Part two

今天从第四章:快速RCNN,方法细节开始介绍。

目录

四、快速RCNN:方法细节

4.1 快速R-CNN回顾

4.2 对抗网络设计

4.2.1 遮挡的对抗空间信息损失

4.2.2 对抗空间Transformer网络

4.2.3 对抗融合

五、实验

5.1 实验设置

5.2 PASCAL VOC2007结果

5.2.1 消融分析

5.2.2 基于种类的分析

5.2.3 定性结果

5.3 PASCAL VOC2012 和 MS COCO数据集结果

5.4 和OHEM的对比

六、结论


四、快速RCNN:方法细节

现在我们来描述一下框架的细节。我们首先简要介绍我们的基础检测器Fast-RCNN。接下来是对抗性生成空间的描述。在本文中,我们特别关注生成不同类型的遮挡和变形。最后,在第5节中,我们描述了我们的实验设置,并展示了与基线相比有显着改进的结果。

4.1 快速R-CNN回顾

我们在Fast-RCNN框架的基础上构建目标检测[6]。Fast-RCNN由两部分组成:(i)用于特征提取的卷积网络;(ii)具有RoI池层和几个输出目标类和边界框的完全连接层的RoI网络。

给定一个输入图像,Fast-RCNN的卷积网络将整个图像作为输入,并产生卷积特征映射作为输出。由于这些操作主要是卷积和max-pooling,所以输出feature map的空间维度会随着输入图像的大小而变化。给定特征映射,使用RoIpooling层将目标建议[40]投影到特征空间上。roi池层裁剪和调整大小,为每个目标提案生成固定大小的特征向量。这些特征向量然后通过完全连接的层。完全连接层的输出是:(i)包括背景类在内的每个目标类的概率;(ii)边界框坐标。

对于训练,分别对这两个输出应用SoftMax损失和回归损失,并将梯度反向传播到所有层以执行端到端学习。

4.2 对抗网络设计

我们考虑了对抗网络与Fast-RCNN (FRCN)检测器竞争的两种类型的特征代。第一种生成类型是遮挡。在这里,我们提出了对抗性空间丢弃网络(ASDN),它学习如何遮挡给定的目标,从而使FRCN难以分类。本文考虑的第二种生成类型是变形。在这种情况下,我们提出了对抗空间变形网络(ASTN),它学习如何旋转物体的“部分”,使它们难以被检测器识别。通过与这些网络竞争并克服障碍,FRCN学习以鲁棒的的方式处理目标遮挡和变形。请注意,在训练期间,ASDN和ASTN是与FRCN同时学习的。联合训练可以防止检测器过度拟合固定生成策略产生的障碍。

与在输入图像上产生遮挡和变形相比,我们发现对特征空间的操作更加高效和有效。因此,我们设计我们的对抗网络来修改特征,使目标更难识别。请注意,这两个网络仅在训练期间应用,以改进检测器。我们将首先分别介绍ASDN和ASTN,然后将它们合并在一个统一的框架中。

4.2.1 遮挡的对抗空间信息损失

我们提出了一种对抗性空间Dropout网络(ASDN),用于在前景物体的深层特征上创建遮挡。回想一下,在标准的Fast-RCNN管道中,我们可以在roi池化层之后获得每个前景目标提案的卷积特征。我们使用这些基于区域的特征作为对抗网络的输入。给定目标的特征,ASDN将尝试生成一个掩码,指示特征的哪些部分要删除(分配零),以便检测器无法识别目标。

更具体地说,给定一个目标,我们提取大小为d×d× c的特征X,其中d是空间维度,c表示通道数量(例如,c = 256,d =6在AlexNet中)。考虑到这个特征,我们的ASDN将预测一个掩码M,其d×d值在阈值后要么为0,要么为1。我们在图(b)中可视化了阈值处理前的一些掩模。我们将temij表示为掩码第i行和第j列的值。类似地,Xijk表示特征在位置i, j处通道k中的值。如果Mij =1,我们去掉特征映射X对应空间位置的所有通道的值,即Xijk =0,∀k。

网络架构

我们使用标准的FastRCNN (FRCN)架构。我们使用来自ImageNet[2]的预训练初始化网络。对抗网络与FRCN共享卷积层和roi池层,然后使用自己单独的全连接层。请注意,我们没有与Fast-RCNN共享ASDN中的参数,因为我们正在优化两个网络以执行完全相反的任务。

模型预训练

在我们的实验中,我们发现在使用ASDN来改进Fast-RCNN之前,为创建闭塞的任务预训练ASDN是很重要的。在更快的RCNN检测器[28]的激励下,我们在这里应用了分阶段训练。我们首先在没有ASDN的情况下训练我们的Fast-RCNN检测器进行10K次迭代。由于检测器现在对数据集中的对象有感觉,我们通过固定检测器中的所有层来训练ASDN模型来创建遮挡。

初始化ASDN网络

为了初始化ASDN网络,给定空间布局为d × d的特征映射X,我们在其上应用大小为d3 × d3的滑动窗口。我们通过将窗口投影回图像3(a)来表示滑动窗口过程。对于每个滑动窗口,我们将其空间位置被窗口覆盖的所有通道中的值删除,并为区域建议生成新的特征向量。然后将该特征向量通过分类层来计算损失。根据所有三维×三维窗口的损耗,选择损耗最大的窗口。然后使用该窗口创建单个d × d遮罩(1表示窗口位置,0表示其他像素)。我们为n个正区域建议生成这些空间掩模,得到n对训练样例{(X1, M ~ 1),…, (Xn, M ~ n)}为我们的对抗性辍学网络。这个想法是,ASDN应该学会生成掩码,这可以给检测器网络带来高损失。我们将二值交叉熵损失应用到ASDN的训练中,它可以表示为:

(a)模型预训练:经过筛选的遮挡样例,选择硬遮挡作为训练ASDN网络的真实值(b) ASDN网络生成的遮挡样例。当传递到FRCN管道时,黑色区域被遮挡。

其中Aij(Xp)表示给定输入特征映射Xp, ASDN在位置(i, j)的输出。我们用这个损失训练ASDN进行10K次迭代。图(b)显示,网络开始识别物体的哪一部分对分类有意义。还要注意,我们的输出掩码与[31]中提出的注意力掩码不同,后者使用注意力机制来促进分类。在我们的例子中,我们使用遮罩遮挡部分,使分类更加困难。

采样阈值

ASDN网络产生的输出不是二进制掩码,而是连续的热图。而不是使用直接阈值,我们使用重要性采样来选择前13个像素遮罩。注意,在训练过程中,抽样过程包含了样本的随机性和多样性。更具体地说,给定一张热图,我们首先选择具有最高概率的前1/2个像素,然后随机选择其中的1/3个像素,将其赋值为1,其余的2/3个像素设置为0。

联合训练

给定预训练好的ASDN和FastRCNN模型,我们在每次训练迭代中对这两个网络进行联合优化。为了训练Fast-RCNN检测器,我们首先使用ASDN在前向传播过程中进行roi池化后的特征上生成掩码。我们执行采样来生成二进制蒙版,并使用它们在RoIpooling层之后删除特征中的值。然后,我们转发修改的特征来计算损失并端到端训练检测器。请注意,虽然我们的特性被修改了,但标签保持不变。通过这种方式,我们创建了“更难”和更多样化的示例来训练检测器。

对于训练ASDN,由于我们采用采样策略将热图转换为不可微的二进制掩码,因此我们不能直接从分类损失中反向支持梯度。或者,我们从强化[42]方法中汲取灵感。我们计算了哪些二进制掩码导致Fast-RCNN分类分数显著下降。我们只使用这些硬示例掩模作为真实值,直接使用方程 1中描述的相同损失来训练对抗网络

4.2.2 对抗空间Transformer网络

现在我们介绍对抗性空间变压器网络(ASTN)。其关键思想是在目标特征上产生变形,使检测器难以识别目标。我们的网络建立在b[14]中提出的空间变压器网络(STN)的基础上。在他们的工作中,STN被提出对特征进行变形以使分类更容易。另一方面,我们的网络正在做完全相反的任务。通过与我们的ASTN进行竞争,我们可以训练出一个对变形具有鲁棒的的更好的检测器。

STN回顾

空间变压器网络[14]有三个组成部分:定位网络,电网发电机和采样器。给定特征图作为输入,定位网络将估计变形的变量(例如,旋转度,平移距离和比例因子)。这些变量将被用作网格生成器和采样器在特征图上操作的输入。输出是一个变形的特征映射。注意,我们只需要学习本地化网络中的参数。STN的关键贡献之一是使整个过程可微,从而使定位网络可以通过反向传播直接针对分类目标进行优化。有关更多技术细节,请参阅[14]。

对抗STN

在我们的对抗性空间变形网络中,我们关注的是特征图的旋转。也就是说,给定一个在roi池化层之后的特征图作为输入,我们的ASTN将学习旋转特征图以使其更难识别。我们的定位网络由3个完全连接的层组成,其中前两层使用ImageNet预训练网络中的fc6和fc7层进行初始化,就像我们的对抗性空间丢弃网络一样。

我们联合训练了ASTN和Fast-RCNN检测器。对于检测器的训练,与ASDN中的过程类似,我们的ASTN首先对roi池化后的特征进行变换,然后转发给更高层来计算SoftMax损失。为了训练ASTN,我们对其进行了优化,使检测器将前景对象分类为背景类。与训练ASDN不同的是,由于空间变换是可微的,我们可以直接利用分类损失对ASTN定位网络中的参数进行逆prop和微调。

实现细节

在实验中,我们发现限制ASTN产生的旋转度是非常重要的。否则,很容易将目标颠倒过来,这在大多数情况下是最难识别的。我们将旋转度限制在10◦顺时针和逆时针。我们不是在同一方向上旋转所有的特征图,而是将通道维度上的特征图划分为4个块,并对不同的块估计4个不同的旋转角度。由于每个通道对应于一种类型特征的激活,因此旋转通道分别对应于目标在不同方向上的旋转部分,从而导致变形。我们还发现,如果我们对所有特征图使用一个旋转角度,ASTN通常会预测最大的角度。通过使用4个不同的角度而不是一个角度,我们增加了任务的复杂性,从而防止了网络预测琐碎的变形。

4.2.3 对抗融合

ASDN和ASTN这两个对抗网络也可以在同一个检测框架下进行组合和训练。因为这两个网络提供不同类型的信息。通过同时与这两个网络竞争,我们的检测器变得更加鲁棒的。

我们以顺序的方式将这两个网络组合到Fast-RCNN框架中。如图4所示,roi池后提取的特征映射首先被转发到我们的ASDN,其中删除了一些激活。修改后的特征通过ASTN进一步变形。

ASDN和ASTN相结合的网络架构。首先创建遮挡遮罩,然后旋转通道以生成用于训练的硬示例。

五、实验

我们在PASCAL VOC 2007、PASCAL VOC 2012[4]和MS COCO[18]数据集上进行了实验。作为标准实践,我们对PASCAL VOC 2007数据集进行了大部分烧蚀研究。我们还报告了PASCAL VOC 2012和COCO数据集上的数字。最后,我们将我们的方法与在线硬例挖掘(OHEM)[33]方法进行了比较。

5.1 实验设置

PASCAL VOC

对于VOC数据集,我们使用“trainval”集进行训练,使用“test”集进行测试。我们遵循标准Fast-RCNN[6]的大部分设置进行训练。我们申请SGD 80K来训练我们的模型。学习率从0.001开始,在60K次迭代后下降到0.0001。我们在训练中使用选择性搜索建议[40]。

MS COCO

对于COCO数据集,我们使用' trainval35k '集进行训练,使用' minival '集进行测试。在Fast-RCNN b[6]的训练过程中,我们使用了32万次迭代的SGD。学习率从0.001开始,在280K次迭代后下降到0.0001。对于目标建议,我们使用DeepMask建议[24]。

在所有的实验中,我们用于训练的小批量大小是256个建议和2个图像。我们遵循Fast-RCNN的Torch实现[44]。有了这些设置,我们的基线值略好于[6]中报告的值。为了防止Fast-RCNN对修改后的数据进行过拟合,我们在批处理中提供了一张没有任何对抗性遮挡/变形的图像,并将我们的方法应用于批处理中的另一张图像。

5.2 PASCAL VOC2007结果

我们在表1中报告了Fast-RCNN训练期间使用ASTN和ASDN的结果。对于AlexNet架构[16],我们实现的基线是57.0% mAP。基于此设置,与我们的ASTN模型联合学习达到58.1%,与ASDN模型联合学习的性能更高,达到58.5%。由于这两种方法是互补的,将ASDN和ASTN结合到我们的完整模型中可以再次提高58.9%的mAP。

VOC 2007测试检测平均精度(%) 参考FRCN[6]与我们的训练时间表。

对于VGG16架构[36],我们进行了相同的一组实验。首先,我们的基线模型达到了69.1%的mAP,远高于2010年报道的66.9%。在此基础上,与我们的ASTN模型联合学习,mAP提高到69.9%,ASDN模型的mAP达到71.0%。我们采用ASTN和ASDN的完整模型将性能提高到71.4%。我们的最终结果在基线上提高了2.3%。

为了证明我们的方法也适用于非常深度的cnn,我们在训练Fast-RCNN中应用了ResNet-101[9]架构。如表1中的最后两行所示,使用ResNet-101的Fast-RCNN的性能为71.8% mAP。通过对抗性训练,结果为73.6%的mAP。我们可以看到,我们的方法在不同类型的体系结构上一致地提高了性能。

5.2.1 消融分析

ASDN分析

我们使用AlexNet架构将我们的对抗性空间丢弃网络与训练中的各种丢弃/遮挡策略进行比较。我们尝试的第一个简单基线是RoI-Pooling之后特征上的随机空间dropout。为了进行公平的比较,我们掩盖了与ASDN网络相同数量的神经元的激活。如表2所示,随机dropout的性能为57.3% mAP,略好于基线。我们比较的另一个dropout策略是我们在预训练ASDN中应用的类似策略(图3)。我们详尽地枚举不同类型的遮挡,并在每次迭代中选择最佳遮挡进行训练。性能为57.7% mAP (Ours (hard dropout)),略好于随机dropout。

VOC 2007测试检测平均精度(%)。对抗性空间辍学网络的消融分析。frcn ?参考FRCN[6]与我们的训练时间表。

由于我们发现穷尽策略只能探索非常有限的闭塞策略空间,因此我们使用预训练的ASDN网络来取代它。然而,当我们固定ASDN的参数时,我们发现性能为57.5% mAP (Ours(固定ASDN)),不如穷举策略好。原因是固定的ASDN没有收到任何来自更新的Fast-RCNN的反馈,而穷举搜索得到了。如果我们联合学习ASDN和Fast-RCNN,我们可以得到58.5%的mAP,比基线提高1.5%,没有dropout。这一证据表明,ASDN和FastRCNN的联合学习是不同之处。

ASTN分析

我们比较了我们的对抗性空间Transformer网络与随机抖动的目标建议。增强包括在Fast-RCNN训练过程中对建议的尺度、长宽比和旋转的随机变化。对于AlexNet,使用随机抖动的性能为57.3% mAP,而我们的ASTN结果为58.1%。对于VGG16,我们有68.6%的随机抖动和69.9%的ASTN。对于这两种体系结构,ASTN模型比随机抖动效果更好。

5.2.2 基于种类的分析

图5显示了每个类别的性能随闭塞和变形的变化情况。有趣的是,被ASTN和ASDN帮助的类别似乎非常相似。似乎植物和瓶子的性能都提高了对抗训练。然而,将两种转换结合在一起似乎可以提高某些类别的性能,这些类别仅使用遮挡或变形会受到伤害。具体来说,像汽车和飞机这样的类别通过结合两个对抗过程而得到帮助。

与基线FRCN相比,APs的变化。

5.2.3 定性结果

图6显示了使用诊断代码[10]的方法的一些误报。这些例子是精心挑选的,它们只出现在对抗性学习的误报列表中,而不是最初的FastRCNN。这些结果表明了对抗性学习的一些缺点。在某些情况下,对手会产生类似于其他目标类别的变形或遮挡,并导致过度泛化。例如,我们的方法隐藏了自行车的轮子,这导致轮椅被归类为自行车。

我们方法的一些误报。这些是对抗性训练中最常见的误报,而不是最初的Fast-RCNN。

5.3 PASCAL VOC2012 和 MS COCO数据集结果

我们在表3中显示了在PASCAL VOC 2012数据集上使用VGG16的结果,其中我们的基线性能为66.4%。我们使用ASDN和ASTN联合学习的完整方法将mAP提高2.6%,达到69.0%。这再次表明VGG对VOC2012的性能提升是显著的。我们还观察到,我们的方法提高了VOC 2012中除沙发以外的所有类别的性能。我们认为这可能是因为VOC 2012的多样性更大。

VOC 2012测试检测平均精度(%)。参考FRCN[6]与我们的训练时间表。

最后在MS COCO数据集中报告结果。VGG16架构的基线方法在VOC指标上为42.7% AP50,在标准COCO指标上为25.7% AP。通过应用我们的方法,我们在VOC和COCO指标上分别实现了46.2%的AP50和27.1%的AP。

5.4 和OHEM的对比

我们的方法也与在线硬例挖掘(OHEM)方法相关。我们的方法允许我们对数据集中可能不存在的数据点进行采样,而OHEM受数据集的约束。然而,OHEM的特征更真实,因为它们是从真实图像中提取的。比较而言,我们的方法(71.4%)优于OHEM(69.9%)。然而,我们的结果(69.0%)不如OHEM(69.8%)。由于这两种方法在训练中生成或选择不同类型的特征,我们认为它们应该是互补的。为了证明这一点,我们使用了这两种方法的集合,并将其与OHEM和我们单独针对VOC 2012的单独集合进行比较。结果表明,两种方法的mAP合集达到71.7%,而两个OHEM模型(71.2%)或我们的两个模型(70.2%)的mAP合集则不太好,说明两种方法的互补性。

六、结论

目标检测的长期目标之一是学习对遮挡和变形不变化的目标模型。目前的方法主要是通过使用大规模数据集来学习这些不变性。在本文中,我们认为,像类别一样,闭塞和变形也遵循长尾分布:其中一些非常罕见,即使在大规模数据集中也很难对其进行采样。我们建议使用对抗性学习策略来学习这些不变性。关键思想是结合原始目标检测器来学习对手。这个对手在飞行中创建了具有不同遮挡和变形的示例,这样这些遮挡/变形使得原始目标检测器难以分类。我们的对抗网络不是在像素空间中生成示例,而是修改特征来模拟遮挡和变形。我们在实验中表明,这种对抗性学习策略在VOC和COCO数据集上的检测性能显著提高。

相关文章:

每日文献(十一)——Part two

今天从第四章:快速RCNN,方法细节开始介绍。 目录 四、快速RCNN:方法细节 4.1 快速R-CNN回顾 4.2 对抗网络设计 4.2.1 遮挡的对抗空间信息损失 4.2.2 对抗空间Transformer网络 4.2.3 对抗融合 五、实验 5.1 实验设置 5.2 PASCAL VOC…...

Laravel 实现 队列 发送邮件功能

一. 什么是队列 在构建 Web 应用程序时,你可能需要执行一些任务,例如解析文件,发送邮件,大量的数据计算等等,这些任务在典型的 Web 请求期间需要很长时间才能执行。 庆幸的是,Laravel 可以创建在后台运行…...

一、绪论(Introduction of Artificial Intelligence)

写在前面: 老师比较看重的点:对问题的概念本质的理解,不会考试一堆运算的东西,只需要将概念理解清楚就可以,最后一个题会出一个综合题,看潜力,前面的部分考的不是很深,不是很难&…...

Web攻防—SSRF服务端请求伪造Gopher伪协议无回显利用

前言 重学Top10的第二篇,希望各位大佬不要见笑。 SSRF原理 SSRF又叫服务端请求伪造,是一种由服务端发起的恶意请求,SSRF发生在应用程序允许攻击者诱使服务器向任意域或资源发送未经授权的请求时。服务器充当代理,执行攻击者构造…...

2025蓝桥杯python A组题解

真捐款去了,好长时间没练了,感觉脑子和手都不转悠了。 B F BF BF 赛时都写假了, G G G 也只写了爆搜。 题解其实队友都写好了,我就粘一下自己的代码,稍微提点个人的理解水一篇题解 队友题解 B 思路: 我…...

使用Python建模量子隧穿

引言 量子隧穿是量子力学中的一个非常有趣且令人神往的现象。在经典物理学中,我们通常认为粒子必须克服一个势垒才能通过它。但是,在量子力学中,粒子有时可以“穿越”一个势垒,即使它的能量不足以克服这个势垒。这种现象被称为“量子隧穿”。今天,我们将通过 Python 来建…...

微信小程序开发常用语法和api

vue写习惯了&#xff0c;小程序太久不做&#xff0c;一些语法和api都忘记。本文总结下小程序常用的语法和api 语法 绑定事件和传参 绑定事件还有很多&#xff0c;触摸反馈事件&#xff0c;表单事件&#xff0c;媒体事件后续更新细说。 <!-- 绑定事件 bindtap 事件传参 da…...

【时时三省】(C语言基础)选择结构程序综合举例

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 下面综合介绍几个包含选择结构的应用程序。 例题1&#xff1a; 写一程序&#xff0c;判断某一年是否为闰年。 程序1&#xff1a; 先画出判别闰年算法的流程图&#xff0c;见下图用变量le…...

Redis实现分布式定时任务

设计思路 任务表示&#xff1a;每个任务通过一个特定格式的键来表示。键名可以包含任务ID等信息&#xff0c;值可以是任务的具体内容或指向任务详情的引用。过期机制&#xff1a;利用Redis的EXPIRE命令为任务设置过期时间&#xff0c;当到达设定的时间点时&#xff0c;Redis会…...

File 类 (文件|文件夹操作)

一、File 类 1.1 前言 在 JDK 中 通过 java.io.File 类&#xff0c;可以实现操作系统重文件|文件夹的创建、删除、查看、重命名等操作。 1.2 File 类构造方法 File 一共提供了四个构造方法&#xff0c;都是有参构造。其中最常使用的是 File(String) 和 File(String, String)…...

Html页面Table表格导出导入Excel文件 xlsx.full

Html页面Table表格导出Excel文件 引用 xlsx.full.min.js 文件 导出 <!DOCTYPE html> <html> <head><meta charset"utf-8" /><title></title><script src"https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.j…...

【资料分享】瑞芯微RK3576,8核2.2GHz+6T算力NPU工业核心板说明书

核心板简介 创龙科技SOM-TL3576-S是一款基于瑞芯微RK3576J/RK3576高性能处理器设计的4核ARM Cor...

埃隆·马斯克如何通过开源创新塑造未来

李升伟 编译 埃隆马斯克的名字在多个行业回响——从电动汽车、太空探索到人工智能及更多领域。虽然许多人关注他革命性的公司&#xff08;如特斯拉、SpaceX、Neuralink和The Boring Company&#xff09;&#xff0c;但较少有人意识到他在开源软件运动中悄然却深远的影响力。本…...

ALOPS智能化运维管理平台

AIOps&#xff08;Artificial Intelligence for IT Operations&#xff09;即智能运维&#xff0c;是将人工智能技术应用于 IT 运维管理领域&#xff0c;以实现自动化、智能化的运维决策和管理。以下是关于 AIOps 的详细介绍&#xff1a; 核心能力 数据收集与整合&#xff1a…...

Hadoop文件操作指南:深入解析文件操作

1 Hadoop文件系统概述 Hadoop分布式文件系统(HDFS)是Hadoop生态的核心存储组件&#xff0c;专为大规模数据集设计&#xff0c;具有高容错性和高吞吐量特性。 HDFS核心特性: 分布式存储&#xff1a;文件被分割成块(默认128MB)分布存储多副本机制&#xff1a;每个块默认3副本&…...

使用Fortran读取HDF5数据

使用Fortran读取HDF5数据 下面我将介绍如何在Fortran中读取HDF5文件中的各种类型数组数据&#xff0c;包括一维数组、二维数组、元数组和变长数组。 准备工作 首先需要确保系统安装了HDF5库&#xff0c;并且在编译时链接了HDF5库。例如使用gfortran编译时&#xff1a; gfor…...

STM32 HAL库之EXTI示例代码

外部中断按键控制LED灯 在main.c中 HAL_Init(); 初始化Flash&#xff0c;中断优先级以及HAL_MspInit函数&#xff0c;也就是 stm32f1xx_hal.c 中 HAL_StatusTypeDef HAL_Init(void) {/* Configure Flash prefetch */ #if (PREFETCH_ENABLE ! 0) #if defined(STM32F101x6) || …...

通过C#将GB18030编码转义为UTF-8

使用C#代码&#xff0c;对于GB18030编码转义为UTF-8格式。 using System.Text;public class FileEncodingConverter {// 支持转换的文件扩展名列表&#xff08;可根据需求扩展&#xff09;private static readonly string[] SupportedExtensions { ".sln", ".…...

《TCP/IP网络编程》学习笔记 | Chapter 23:IOCP

《TCP/IP网络编程》学习笔记 | Chapter 23&#xff1a;IOCP 《TCP/IP网络编程》学习笔记 | Chapter 23&#xff1a;IOCP通过重叠 I/O 理解 IOCPepoll 和 IOCP 的性能比较实现非阻塞模式的套接字以纯重叠 I/O 方式实现回声服务器端重新实现客户端测试从重叠 I/O 模型到 IOCP 模型…...

Java学习打卡-Day25-注解和反射、Class类

注解&#xff08;JDK5引入&#xff09; 什么是注解&#xff1f; Java注解&#xff08;Annotation&#xff09;&#xff0c;也叫元数据。一种代码级别的说明&#xff0c;与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面&#xf…...

电感、互感器、变压器和磁珠综合对比——《器件手册--电感/线圈/变压器/磁珠篇》

三、电感/线圈/变压器/磁珠 名称 定义 特点...

CAD导入arcgis中保持面积不变的方法

1、加载CAD数据&#xff0c;选择面数据&#xff0c;如下&#xff1a; 2、加载进来后&#xff0c;右键导出数据&#xff0c;导出成面shp数据&#xff0c;如下&#xff1a; 3、选择存储路径&#xff0c;导出面后计算面积&#xff0c;如下&#xff1a; 4、与CAD中的闭合线面积核对…...

rustdesk自建服务器怎么填写客户端配置信息

目录 # id、api、中继都怎么填&#xff1f;rustdesk程序启动后服务不自动启动 # id、api、中继都怎么填&#xff1f; rustdesk程序启动后服务不自动启动 完全退出RudtDesk程序&#xff08;右下角托盘区有的话&#xff0c;需要右键点退出&#xff09; 创建windows服务&#xff…...

c++进阶之----智能指针

1.概念 在 C 中&#xff0c;智能指针是一种特殊的指针类型&#xff0c;它封装了裸指针&#xff08;raw pointer&#xff09;的行为&#xff0c;并通过 RAII&#xff08;Resource Acquisition Is Initialization&#xff0c;资源获取即初始化&#xff09;机制自动管理动态分配的…...

六、测试分类

设计测试用例 万能公式&#xff1a;功能测试性能测试界面测试兼容性测试安全性测试易用性测试 弱网测试&#xff1a;fiddler上行速率和下行速率 安装卸载测试 在工作中&#xff1a; 1.基于需求文档来设计测试用例&#xff08;粗粒度&#xff09; 输入字段长度为6~15位 功…...

Apollo源码总结

官方课程 项目源码 源码库简介&#xff1a; 1.apollo&#xff1a;算法库 2.apollo-kernel&#xff1a;改进LINUX内核。添加实时性补丁。 3. apollo-platform&#xff1a;改进ROS系统。去中心化&#xff0c;增加共享内存通信方式&#xff0c;兼容protobuf。 4.apollo-contrib&am…...

电感详解:定义、作用、分类与使用要点

一、电感的基本定义 电感&#xff08;Inductor&#xff09; 是由导线绕制而成的储能元件&#xff0c;其核心特性是阻碍电流变化&#xff0c;将电能转化为磁能存储。 基本公式&#xff1a; 自感电动势&#xff1a; E -L * (di/dt) &#xff08;L&#xff1a;电感值&#xff0c…...

AI编程案例拆解|基于机器学习XX评分系统-前端篇

文章目录 1. 定价使用DeepSeek估价小红书调研 2. 确定工作事项利用DeepSeek生成具体工作事项 3. 和客户沟通约会议沟通确定内容样式 4. 前端部分设计使用DeepSeek生成UI设计在Cursor中生成并提问前置条件开始编程 关注不迷路&#xff0c;励志拆解100个AI编程、AI智能体的落地应…...

java数组06:Arrays类

Arrays类 数组的工具类java.util. Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中是了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。 查看JDK帮助文档 Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用…...

TQTT_KU5P开发板教程---实现流水灯

文档实现功能介绍 本文档是学习本开发板的基础&#xff0c;通过设置计数器使led0到led7依次闪烁&#xff0c;让用户初步认识vivado基本的开发流程以及熟悉项目的创建。本开发板的所有教程所使用的软件都是vivado2024.1版本的。可以根据网上的教程下载与安装。 硬件资源 此次教程…...