Siamrpn++论文中文翻译(详细!)
SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks
SiamRPN++:具有非常深度网络的Siamese视觉跟踪的进化
【siamrpn++论文地址】
https://arxiv.org/abs/1812.11703
摘要
基于Siamese网络的跟踪器将跟踪表示为目标模板和搜索区域之间的卷积特征互相关。然而,与最先进的算法相比,Siamese追踪器仍然存在精度差距,它们不能利用来自深度网络的特征,如ResNet-50或更深层次的网络。在本文中,我们证明了其核心原因来自于缺乏严格的平移不变性。通过全面的理论分析和实验验证,我们通过一个简单而有效的空间感知采样策略打破了这一限制,成功地训练了一个具有显著性能收益的resnet驱动的跟踪Siamese跟踪器。
此外,我们提出了一种新的模型架构来执行分层和深度聚合,这不仅进一步提高了精度,而且减少了模型的大小。我们进行了广泛的消融研究,以证明所提出的跟踪器的有效性,它目前在五个大型跟踪基准上获得了最好的结果,包括OTB2015、VOT2018、UAV123、LaSOT和跟踪网。我们的模型将被发布,以促进进一步的研究。
1 介绍
视觉物体跟踪在过去的几十年里受到了越来越多的关注,并一直是一个非常积极的研究方向。它在视觉监控[47]、人机交互[26]和增强现实[48]等不同领域都有广泛的应用。虽然最近取得了很大的进展,但由于光照变化、遮挡和背景杂波等诸多因素,它仍然被普遍认为是一项非常具有挑战性的任务。
最近,基于Siamese网络的追踪器[40,1,15,42,41,24,43,52,44]在社区中引起了人们的广泛关注。这些Siamese跟踪器通过为目标模板学习的特征表示和搜索区域之间的互相关,将视觉对象跟踪问题表述为学习一般的相似性地图。为了保证跟踪效率,离线学习到的Siamese相似度函数通常在运行时间[40,1,15]期间被固定下来。CFNet跟踪器[41]和DSiam跟踪器[11]分别通过一个正在运行的平均模板和一个快速转换模块来更新跟踪模型。SiamRNN跟踪器[24]在Siamese网络之后引入了区域建议网络[24],并进行联合分类和回归进行跟踪。DaSiamRPN跟踪器[52]进一步引入了干扰物感知模块,提高了模型的识别能力。
尽管上述Siamese跟踪器获得了出色的跟踪性能,特别是在平衡精度和速度方面,即使是性能最好的Siamese跟踪器,如SiamPRN,在OTB2015 [46]等跟踪基准上,精度仍然与最先进的[5]有显著的差距。我们观察到,所有这些跟踪器都在类似于AlexNet [23]的架构上建立了网络,并多次尝试训练具有像ResNet [14]这样的更复杂架构的Siamese跟踪器,但没有性能提高。受此观察结果的启发,我们对现有的Siamese追踪器进行了分析,发现其核心原因来自于对严格平移不变性的破坏。由于目标可能出现在搜索区域的任何位置,目标模板学习到的特征表示应该保持空间不变,我们进一步从理论上发现,在现代深度架构中,只有AlexNet的零填充变体满足这一空间不变性限制。
为了克服这一限制,并使用更强大的深度架构来驱动Siamese跟踪器,通过广泛的实验验证,我们引入了一个简单的但有效的采样策略打破了Siamese跟踪器的空间不变性限制。我们使用ResNet作为骨干网络,成功地训练了一个基于SiamRPN [24]的跟踪器,并获得了显著的性能改进。得益于ResNet架构,我们提出了一种分层的特征加重结构,它有助于跟踪器从多个层次上学习到的特征中预测相似性图。通过对Siamese网络结构的相互关联分析,发现其两个网络分支在参数数上高度不平衡;因此,我们进一步提出了一种深度可分离的相关结构,它不仅大大减少了目标模板分支的参数数,而且稳定了整个模型的训练过程。此外,还观察到一个有趣的现象,即相同类别的物体在相同的通道上有较高的响应,而其余通道的响应被抑制。正交特性也可以提高跟踪性能。
综上所述,这项工作的主要贡献分为四个部分:
•我们对Siamese追踪器进行了深入的分析,并证明了在使用深度网络时,精度的下降是由于严格平移不变性的破坏。
•我们提出了一种简单而有效的采样策略来打破空间不变性限制,成功地训练了由ResNet体系结构驱动的Siamese跟踪器。
•我们提出了一种用于互相关操作的分层特征聚合结构,它帮助跟踪器从多个层次上学习到的特征中预测相似度图。
•我们提出了一种深度可分离的相关结构来增强互相关,以产生与不同语义相关的多个相似性映射。
基于上述理论分析和技术贡献,我们开发了一个高效的视觉跟踪模型,建立了一个新的最先进的跟踪精度,同时在35 FPS的速度下高效运行。提出的跟踪器,称为SiamRPN++,在五个最大的跟踪基准上持续获得最佳跟踪结果,包括OTB2015 [46]、VOT2018 [21]、UAV123 [31]、LaSOT [10]和跟踪网[30]。此外,我们提出了一种使用MobileNet[18]骨干的跟踪器的快速变体,以保持在70帧/秒下运行的竞争性能。为了便于对视觉跟踪方向的进一步研究,我们将发布SiamRPN++跟踪器的源代码和训练模型。
2 相关工作
在本节中,我们将简要介绍最近的跟踪器,特别关注基于Siamese网络的跟踪器[40,1]。此外,我们还描述了深度体系结构的最新发展。
由于构建了新的基准数据集[45,46,19,21,10,30]和改进的方法[16,51,6,7,17,32,9,5,43,52,49],视觉跟踪在过去十年中得到了快速的发展。标准化基准[45,46,10]为与不同算法的比较提供了公平的测试平台。每年举行的跟踪挑战,[22,19,20,21]一直在推动跟踪性能。随着这些进步,许多有前途的跟踪算法已经被提出。Bolme等人[3]的开创性工作将信号处理场的卷积定理引入视觉跟踪,并将对象模板匹配问题转换为频域内的相关操作。通过这种变换,基于相关滤波器的跟踪器不仅可以获得高效的运行速度,而且如果使用适当的特征是[16,50,51,8,6],还可以提高精度。随着深度学习模型在视觉跟踪中的广泛应用,基于深度特征表示的相关滤波的跟踪算法在流行的跟踪基准[45,46]和挑战[22,19,20]中获得了最先进的精度。
近年来,基于Siamese网络的跟踪器因其良好的跟踪精度和效率[40,1,15,42,41,12,24,43,52,44]而受到广泛关注。这些跟踪器将视觉跟踪定义为一个交叉关系问题,并有望更好地利用从端到端学习中获得的深度网络的优点。为了从两个分支的互相关中生成一个相似性图,他们训练了一个y形的神经网络,它连接了两个网络分支,一个用于对象模板,另一个用于搜索区域。此外,这两个分支可以在跟踪阶段[40,1,15,43,24,52]期间保持固定,或在线更新,以适应目标[42,41,12]的外观变化。目前最先进的Siamese跟踪器[24,52]提高了区域提案网络对Siamese网络的跟踪性能,并产生了非常有希望的结果。然而,在OTB基准测试[46]上,他们的跟踪精度仍然与ECO [5]和MDNet [32]等最先进的深度跟踪器留下了相对较大的差距。
随着Alex等人[23]在2012年提出的现代深度体系结构AlexNet,对网络体系结构的研究迅速发展,提出了许多复杂的深度体系结构,如VGGNet [37]、谷歌Net[38]、ResNet [14]和移动网[18]。这些深度的架构不仅提供了对神经网络设计的更深入的理解,而且推动了许多计算机视觉任务的先进水平如图像检测[33],图像分割[4],和人位姿估计[39]。在深度视觉跟踪器中,网络体系结构通常包含不超过5个由AlexNet或VGGNet量身定制的结构层。这一现象解释了浅层特征主要有助于物体[34]的准确定位。在这项工作中,我们认为,如果用整个Siamese网络适当地训练模型,使用更深入的模型可以显著提高Siamese跟踪器的性能。
3 Siamese Tracking with Very Deep Networks
这项工作最重要的发现是,如果基于Siamese网络的跟踪算法配备了更深层次的网络,那么它的性能可以显著提高。然而,简单地通过直接使用像ResNet这样更深的网络来训练Siamese跟踪器并不能获得预期的性能提高。我们发现潜在的原因很大程度上涉及到Siamese追踪器的内在限制,因此,在提出SiamRPN++模型之前,我们首先对Siamese追踪网络进行了更深入的分析。
3.1. Analysis on Siamese Networks for Tracking
基于Siamese网络的跟踪算法[40,1]将视觉跟踪定义为一个互相关问题,并从具有Siamese网络结构的深度模型中学习跟踪相似度图,其中一个分支用于学习目标的特征表示,另一个分支用于搜索区域。目标补丁通常在序列的第一帧中给出,可以看作是一个样本z。目标是在语义嵌入空间φ(·)中,从下面的框架x中找到最相似的补丁(实例):
其中,b用于模拟相似度值的偏移量。这个简单的匹配函数自然意味着在设计Siamese跟踪器的两个内在的限制。
• Siamese追踪器中使用的收缩部分和特征提取器具有严格平移不变性的内在限制,
,其中
是翻译移位子窗口Operator,保证了高效的训练和推理。
• 收缩部分对结构的对称性有一个内在的限制,收缩部分对结构对称性具有固有的限制,即f(z,x ,)= f(x ,,z),适用于相似性学习。
经过详细的分析,我们发现防止使用深度网络进行Siamese跟踪的核心原因与这两个方面有关。具体地说,其中一个原因是,深度网络中的填充会破坏严格的平移不变性。另一个问题是,RPN需要不对称的特征来进行分类和回归。我们将引入空间感知采样策略来克服第一个问题,并在Sect.3,4节中讨论第二个问题。
严格的平移不变性只存在于没有填充网络中,如修改后的AlexNet [1]。以前基于Siamese的网络[1,42,41,24,52]被设计为浅层的,以满足这个限制。然而,如果所采用的网络被ResNet或MobileNet等现代网络所取代,填充将不可避免地会使网络更加深入,从而破坏了严格的平移不变性限制。我们的假设是,违反这一限制将导致空间偏差。
我们通过在一个填充网络上的模拟实验来验证我们的假设。位移定义为数据增强中均匀分布所产生的最大平移范围。我们的模拟实验进行如下。首先,在三个分段训练实验中,将目标放置在具有不同移位范围(0、16和32)的中心。收敛后,我们对测试数据集上生成的热图进行聚合,然后将结果可视化到图1中。在第一次零位移的模拟中,边界区域的概率降为零。它表明,尽管出现了测试目标,但仍能学习到强烈的中心偏差。另外两个模拟表明,增加位移范围将逐渐防止模型崩溃到这个平凡的解。定量结果表明,32位移的聚合热图更接近于测试对象的位置分布。空间感知采样策略可以有效缓解了填充网络对严格平移不变性的破坏。
图1.当使用不同的随机翻译时,正样本的先验概率关系的可视化。在±32像素内进行随机翻译后,分布变得更加均匀。
为了避免对物体施加强烈的中心偏差,我们通过空间感知采样策略,用ResNet-50主干来训练SiamRPN。如图2所示,在VOT2018上,零移位的性能降低到0.14,一个合适的移位(±64像素)对于训练深度Siamese跟踪器至关重要。
3.2. ResNet-driven Siamese Tracking
基于以上分析,可以消除中心偏差的影响。一旦我们消除了对中心位置的学习偏差,任何现成的网络(如MobileNet,ResNet)都可以用来在领域适应后进行视觉跟踪。此外,我们还可以自适应地构建网络拓扑结构,揭示了深度网络的视觉跟踪性能。
在本小节中,我们将讨论如何将一个深度网络转移到我们的跟踪算法中。特别是,我们主要针对ResNet-50 [14]进行实验。原始的ResNet有32像素的大步幅,不适合密集的Siamese网络预测。如图3所示,我们通过将conv4和conv5块修改为单位空间步幅,将最后两个块的有效步幅从16像素和32像素减少到8像素,并通过扩张卷积[27]增加其接受域。在每个块输出上附加一个额外的1×1的卷积层,以将信道减少到256。
在[24]之后,我们使用互相关层和完全卷积层的组合来组装一个头模块来计算分类分数(用S表示)和边界框回归变量(用B表示)。Siamese人的RPN块用P表示。
此外,我们发现对ResNet仔细微调将提高性能。通过将ResNet提取器的学习速率设置为比RPN部分小的10倍,使特征表示更适合于跟踪任务。与传统的Siamese方法不同,深度网络的参数是以端到端方式联合训练的。据我们所知,我们确实是第一个在深度Siamese网络(> 20层)上实现端到端学习,以进行视觉跟踪。
3.3. Layer-wise Aggregation(分层聚合)
在利用了像ResNet-50这样的深层网络后,聚合不同的深层就成为可能了。直观地说,视觉跟踪需要丰富的表示,能够跨越从低到高的级别,从小到大的尺度,以及从精细到粗的分辨率。即使在卷积网络中使用特征的深度,隔离一层也是不够的:复合和聚合这些表示可以提高识别和定位的推理。
在之前的工作中,只使用像AlexNet这样的浅层网络,多层次特性不能提供非常不同的表示。然而,考虑到接受域的差异很大,ResNet的不同层更有意义。早期层的特征主要集中于颜色、形状等低层次信息,对于定位至关重要,而缺乏语义信息;后者的特征具有丰富的语义信息,在运动模糊、巨大变形等挑战场景中是有益的。假设使用这种丰富的层次信息有助于帮助跟踪。
在我们的网络中,提取多分支特征来协同推断目标定位。对于ResNet- 50,我们探索了从最后三个残差块中提取的多层次特征,用于我们的多层聚合。我们将这些输出分别称为F3(z)、F4(z)和F5(z)。如图3所示,将conv3、conv4、conv5的输出分别输入三个SiameseRPN模块。
图3.我们所提议的框架的说明。给定一个目标模板和搜索区域,该网络通过融合来自多个Siamese区域建议(SiamRPN)块的输出来输出一个密集的预测。每个SiamRPN块显示在右边。
由于三个RPN模块的输出尺寸具有相同的空间分辨率,因此直接对RPN输出采用加权和。一个加权融合层结合了所有的输出。
由于组合权重的域不同,因此将分离组合权重进行分类和回归。该权重与网络一起离线地进行端到端优化。
与以前的工作相比,我们的方法没有明确地结合卷积特征,而是分别学习分类和回归。请注意,随着主干网络深度的显著增加,我们可以从足够的视觉-语义层次结构的多样性中获得实质性的收益。
3.4. Depthwise Cross Correlation
互相关模块是嵌入两个分支信息的核心操作。SiamFC [1]利用交叉相关层获得目标定位的单通道响应图。在SiamRPN [24]中,通过添加一个巨大的卷积层来扩展通道(UP-Xcorr),交叉关联被扩展到嵌入更高层次的信息,如锚点。较重的上通道模块使参数分布严重不平衡(即RPN模块包含20M参数,而特征提取器在[24]中只包含4M参数),这使得SiamRPN的训练优化困难。
在本小节中,我们提出了一个轻量级的互相关层,称为深度互相关(DW-XCorr),以实现有效的信息关联。DW-XCorr层包含的参数比SiamRPN中使用的UP-XCorr少10倍,而性能与之相当。为了实现这一点,我们采用了一个conv-bn块来调整每个残差块的特征,以适应跟踪任务。至关重要的是,边界盒预测和基于锚点的分类都是不对称的,这与SiamFC不同(见See Sect. 3.1). 为了编码差异,模板分支和搜索分支通过两个非共享的卷积层。然后对两个具有相同信道数的特征图进行逐信道的相关操作。附加了另一个conv-bn-relu块来融合不同的通道输出。最后,附加了分类或回归输出的最后一个卷积层。
图4。不同的互相关层的说明。(a)交叉相关(XCorr)层预测了SiamFC [1]中目标模板和搜索补丁之间的单通道相似性图。(b)上行通道交叉相关(UP-XCorr)层通过在SiamRPN [24]中级联一个重卷积层和几个独立的XCorr层来输出多通道相关特征。(c)深度交叉相关(DW-XCorr)层预测了模板和搜索补丁之间的多通道相关特征。
通过将互相关替换为深度相关,我们可以大大降低计算成本和内存使用。这样,模板和搜索分支上的参数数量就得到了平衡,从而使训练过程更加稳定。
此外,图5中还说明了一个有趣的现象。同一类别的物体在同一通道上有较高的响应(148通道的车,222通道的人,226通道的脸),而其余通道的响应被抑制。这一性质可以理解为由深度互相关所产生的通道级特征几乎是正交的,每个通道都代表一些语义信息。我们也分析了热图时,当使用上通道互相关和反应图是较少解释的。
图5。conv4中深度相关输出的通道。conv4共有256个通道,但只有少数通道在跟踪过程中具有高响应。因此,我们选择了第148、222、226个通道作为演示,即图中的第2、3、4行。第一行包含来自OTB数据集[46]的6个相应的搜索区域。不同的通道代表不同的语义,第148通道对汽车的响应较高,而对人和脸的响应较低。第222频道和第226频道对人物和面孔分别有较高的反应。
4 实验结果
4.1 培训数据集和评估
训练:我们的架构[14]的主干网络在ImageNet [36]上进行了预训练,用于图像标记,这已经被证明是对其他任务[13,27]的一个非常好的初始化。我们在COCO [25]、ImageNet DET [36]、ImageNet VID和YouTube边界盒数据集[35]的训练集上训练网络,并学习如何测量一般对象之间的相似性的通用概念。在训练和测试中,我们使用127像素的模板补丁,255像素的搜索区域。
评价:我们专注于在OTB2015 [46]、VOT2018 [21]和UAV123 [31]上的短期单目标跟踪。我们使用VOT2018-LT [21]来消除长期设置。在长期跟踪中,物体可能会离开视野或长时间被完全遮挡,这比短期跟踪更具挑战性。我们还分析了我们的方法在LaSOT [10]和TrackeingNet[30]上的推广,这是最近两个最大的单目标跟踪基准。
4.2 实施细节
网络架构。在实验中,我们遵循[52]来进行训练和推理设置。我们将两个兄弟卷积层连接到减步的ResNet-50(部分。3.2)使用5个锚点进行方案分类和边界盒回归。三个随机初始化的1×1卷积层附加到conv3、conv4、conv5上,将特征维数降到256。
优化器。最优化SiamRPN++采用随机梯度下降(SGD)进行训练。我们使用超过8个GPU的同步SGD,每个小批总共128对(每个GPU16对),这需要12个小时才能收敛。我们使用前5步的热身学习率为0.001来训练RPN刹车。在最后的15个学习周期中,对整个网络进行端到端训练,学习率从0.005呈指数衰减到0.0005。重量衰减为0.0005,动量为0.9。训练损失是分类阳离子损失和回归的标准平滑L1损失的总和。
4.3 消融实验
骨干体系结构。特征提取器的选择是至关重要的,因为参数的数量和层的类型直接影响跟踪器的内存、速度和性能。我们比较了不同的网络架构的视觉跟踪。图6显示了使用AlexNet、ResNet-18、ResNet-34、ResNet-50和MobileNet-v2作为骨干的性能。我们报告了OTB2015上成功面积曲线下(AUC)与ImageNet上前1精度的性能。我们观察到,我们的SiamRPN++可以受益于更深层次的卷积神经网络。
图6 . ImageNet的最高精对比。2015年OTB的预期平均重叠(EAO)得分。
层次特征聚合。为了研究分层特征聚合的影响,我们首先要在ResNet-50上训练三个具有单一RPN的变体。我们的经验发现,conv4单独在EAO中可以达到0.374的竞争性能,而较深层和较浅层的性能下降了4%。通过结合conv4和conv5这两个分支获得了改善,但对其他两种组合没有观察到改善。尽管如此,健壮性还是增加了10%,这是我们的跟踪器的关键漏洞。这意味着我们的跟踪器还有改进的空间。在聚合所有三层后,准确性和稳健性都稳步提高,VOT和OTB的收益在3.1%到1.3%之间。总的来说,分层特征聚合在VOT2018上产生了0.414的EAO得分,比单层基线高出4.0%。
深度相关性。我们将原来的上通道交叉相关层与所提出的深度交叉相关层进行了比较。如表1所示,所提出的深度相关性在VOT2018年VOT上提高了2.3%,在OTB2015年OTB上提高了0.8%证明了深度相关性的重要性。这在一定程度上是由于两个分支的参数分布平衡,使学习过程更加稳定,收敛性更好。
表1。在VOT2018和OTB2015上对提议的跟踪器的消融研究。L3、L4、L5分别代表conv3、conv4、conv5。微调表示骨干是否被离线训练。Up/DW表示Up通道相关和深度相关。
4.4 与最先进技术的比较
这部分直接看论文原文效果更好。
5 结论
在本文中,我们提出了一个统一的框架,称为SiamRPN++,用于端到端训练一个深度Siamese网络进行视觉跟踪。我们展示了理论和经验的证据,如何训练一个深度网络的Siamese跟踪器。我们的网络由一个多层聚合模块组成,它组装连接的层次来聚合不同层次的表示,以及一个深度相关层,这允许我们的网络减少计算成本和冗余参数,同时也导致更好的收敛。使用SiamRPN++,我们实时获得了VOT2018的最新结果,显示了SiamRPN++的有效性。SiamRPN++还在LaSOT和跟踪网等大型数据集上获得了最先进的结果,显示了其通用性。
相关文章:

Siamrpn++论文中文翻译(详细!)
SiamRPN: Evolution of Siamese Visual Tracking with Very Deep Networks SiamRPN:具有非常深度网络的Siamese视觉跟踪的进化 【siamrpn论文地址】 https://arxiv.org/abs/1812.11703 摘要 基于Siamese网络的跟踪器将跟踪表示为目标模板和搜索区域之间的卷积特征…...

第一篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas库
传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、主要特点和功能介绍二、Series 示例代码三、DataFrame示例代码四、数据导入/导出示例代码五、数据清洗示例代码六、数据选择和过滤示例代码七、数据合并和连接示例代码八、数据分组和聚…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的停车位检测系统(Python+PySide6界面+训练代码)
摘要:开发停车位检测系统对于优化停车资源管理和提升用户体验至关重要。本篇博客详细介绍了如何利用深度学习构建一个停车位检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并结合了YOLOv7、YOLOv6、YOLOv5的性能对比…...
状态模式(State Pattern)
定义 状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变其行为。这意味着,当对象的状态发生变化时,它的行为也会发生变化。状态模式特别适用于行为依赖于其状态的对象,而且当这…...
js之版本号排序
版本号排序 给定一个由版本号组成的数组,按照版本号由小到大排序 假如版本号如下 : ["0.1.1", "2.3.3", "0.302.1", "4.2", "4.3.5", "4.3.4.5"];原理很简单,通过自定义sort排…...

考取ORACLE数据库OCP的必要性 Oracle数据库
OCP证书是什么? OCP,全称Oracle Certified Professional,是Oracle公司的Oracle数据库DBA(Database Administrator,数据库管理员)认证课程。这是Oracle公司针对数据库管理领域设立的一项认证课程,旨在评估和…...

WordPress通过宝塔面板的入门安装教程【保姆级】
WordPress安装教程【保姆级】【宝塔面板】 前言一:安装环境二:提前准备三:域名解析四:开始安装五:安装成功 前言 此教程适合新手,即使不懂代码,也可轻松安装wordpress 一:安装环…...

Leetcoder Day25| 回溯part05:子集+排列
491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入:[4, 7, 6, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [6, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数…...

【HTML】HTML基础5(特殊字符)
目录 特殊字符的作用 常用的特殊字符 使用效果 特殊字符的作用 例如 当我在两个文字间打出空格时 <p>“银河护卫队”系列 在漫威电影宇宙中一直是异数般的存在,不仅因为影片主角是一群反英雄,<strong>与超级英雄相比显得格格不入<…...

MacBook将iPad和iPhone备份到移动硬盘
#创作灵感# 一个是ICloud不够用,想备份到本地;然而本地存储不够用,增加容量巨贵,舍不得这个钱,所以就想着能不能备份到移动硬盘。刚好有个移动固态,所以就试了一下,还真可以。 #正文# 说一下逻…...

贪心 Leetcode 376 摆动序列
摆动序列 Leetcode 376 学习记录自代码随想录 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#…...
蓝桥杯(3.1)
92. 递归实现指数型枚举 import java.util.Scanner;public class Main {static int N 16;static int n;static int[] st new int[N]; public static void dfs(int u) {if(u > n) {for(int i1;i<n;i) {if(st[i] 1)System.out.print(i" ");}System.out.print…...

像用Excel一样用Python:pandasGUI
文章目录 启动数据导入绘图 启动 众所周知,pandas是Python中著名的数据挖掘模块,以处理表格数据著称,并且具备一定的可视化能力。而pandasGUI则为pandas打造了一个友好的交互窗口,有了这个,就可以像使用Excel一样使用…...
C#面:Application , Cookie 和 Session 会话有什么不同
Application、Cookie 和 Session 是在Web开发中常用的三种会话管理方式 Application(应用程序): Application 是在服务器端保存数据的一种方式,它可以在整个应用程序的生命周期内共享数据。Application 对象是在应用程序启动时创…...

BUUCTF---数据包中的线索1
1.题目描述 2.下载附件,是一个.pcap文件 3.放在wireshark中,仔细观察数据流,会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式,接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…...
【数仓】kafka软件安装及集群配置
相关文章 【数仓】基本概念、知识普及、核心技术【数仓】数据分层概念以及相关逻辑【数仓】Hadoop软件安装及使用(集群配置)【数仓】Hadoop集群配置常用参数说明【数仓】zookeeper软件安装及集群配置 一、环境准备 准备3台虚拟机 Hadoop131ÿ…...

代码随想录 二叉树第三周
目录 404.左叶子之和 513.找树左下角的值 112.路径总和 106.从中序与后序遍历构造二叉树 105.从前序与中序遍历序列构造二叉树 654.最大二叉树 404.左叶子之和 404. 左叶子之和 简单 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输…...
flask流式输出-SSE服务
一、定义 flask demo前端遇到的问题 二、实现 flask demo from gevent import monkey monkey.patch_all() #并行 import time from flask import Response, stream_with_context from flask import Flask from gevent.pywsgi import WSGIServer from flask import …...
注解整理ing
注解 1. 实体类注解 Data注解是lombok.jar包下的注解,该注解通常用在实体bean上,不需要写出set和get方法 Data相当于Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode这5个注解的合集 EqualsAndHashCode注解会生成equals(Object oth…...
Android 将图片网址url转化为bitmap
1. 图片网址url转化为bitmap 1.1. 方法一 通过 HttpURLConnection 请求 要使用一个线程去访问,因为是网络请求,这是一个一步请求,不能直接返回获取,要不然永远为null,在这里得到BitMap之后记得使用Hanlder或者EventBu…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...