Siamfc论文中文翻译(详细!)

Fully-Convolutional Siamese Networks for Object Tracking

用于对象跟踪的Siamese网络

说明

建议对照siamfc(2021版)原文阅读,翻译软件翻译出来的效果不好,整体阅读体验不佳,所以我对译文重新进行了整理,方便大家阅读研究。

【siamfc2021论文地址】

https://arxiv.org/abs/1606.09549

摘要

任意物体跟踪的问题传统上是通过只在线学习物体外观的模型来解决的,使用视频本身作为唯一的训练数据。尽管这些方法取得了成功,但他们的在线方法本质上限制了他们可以学习的模型的丰富性。近年来,人们已多次尝试利用深度卷积网络的表达能力。但是,当事先不知道要跟踪的对象时,有必要在线执行随机梯度下降来适应网络的权值,这严重影响了系统的速度。在本文中,我们在ILSVRC15数据集上进行了一种端到端训练的基本跟踪算法,用于视频目标检测。我们的跟踪器以超越实时的帧率运行,尽管它非常简单,但它在多个基准测试中实现了最先进的性能。

关键词:对象跟踪,Siamese网络,相似性学习,深度学习

1 介绍

我们考虑在视频中跟踪任意对象的问题,其中该对象在第一帧中仅由一个矩形识别。由于算法可能被要求跟踪任意对象,因此不可能已经收集数据并训练特定的检测器。

多年来,这个场景最成功的范例是使用从视频本身[1]中提取的示例,以在线方式学习对象外观的模型。这在很大程度上要归功于TLD [2]、Struck [3]和KCF [4]等方法的演示能力。然而,使用完全从当前视频中获得的数据的一个明显缺陷是,只能学习相对简单的模型。在计算机视觉的其他问题越来越普 遍采用深度卷积网络(conv-nets)训练从大型监督数据集,监督数据的稀缺和实时操作的限制防止深度学习的天真应用范式学习检测器每个视频。

最近的几项工作旨在克服这一限制,使用一个预先训练好的深度通信网,这是为一个不同的但相关的任务学习的。这些方法要么应用“浅层”方法(例如相关滤波器),使用网络的内部表示作为特征[5,6],要么执行SGD(随机梯度下降)来对网络[7,8,9]的多层进行微调。虽然浅层方法的使用并没有充分利用端到端学习的好处,但在跟踪过程中应用SGD以实现最先进的结果的方法无法实时运行。

我们提倡另一种方法即在初始离线阶段训练一个深度转换网络来解决一个更一般的相似性学习问题,然后在跟踪过程中简单地在线评估该函数。

        本文的关键贡献是证明了这种方法在远远超过帧率要求的速度下,在现代跟踪基准中达到了非常具竞争力的性能。具体来说,我们训练一个Siamese网络在一个更大的搜索图像中定位一个样本图像。进一步的贡献是一种新的Siamese架构,它对搜索图像是完全卷积的:密集和高效的滑动窗口评估是通过计算其双线性层的两个输入的互相关来实现的。

我们假设相似性学习方法已经相对被忽视了,因为跟踪社区没有访问大量的标记数据集。事实上,直到最近,可用的数据集还只有几百个带注释的视频。然而,我们认为,用于视频[10](从此以后的图像网络视频)中目标检测的ILSVRC数据集的出现,使得训练这样一个模型成为可能。此外,训练和测试使用来自同一领域的视频进行跟踪的深度模型的公平性是一个争议点,因为它最近被VOT委员会禁止。我们展示了我们的模型从ImageNet视频域推广到ALOV/OTB/VOT [1,11,12]域,使跟踪基准测试的视频能够保留用于测试目的。

2 深度相似度学习的跟踪

学习跟踪任意对象可以使用相似性学习来解决。我们建议学习一个函数f(z,x),它将一个样本图像z与相同大小的候选图像x进行比较,如果两幅图像描述相同的对象,则返回较高的分数,否则得分较低。为了找到物体在新图像中的位置,我们可以详尽地测试所有可能的位置,并选择与物体过去外观相似度最大的候选对象。在实验中,我们将简单地使用物体的初始外观作为范例。函数f将从一个带有标记对象轨迹的视频数据集中学习。

鉴于它们在计算机视觉[13,14,15,16]领域的广泛成功,我们将使用深度转换网络作为函数f。使用深度转换网络的相似性学习通常使用Siamese架构[17,18,19]来解决。Siamese网络对两个输入应用相同的变换,然后组合它们的表示根据f(z,x)=g(ϕ(z),ϕ(x))使用另一个函数g。当函数g是一个简单的距离或相似度度量时,函数ϕ可以被认为是一个嵌入。深度Siamese转换网络以前已经被应用于诸如人脸验证[18,20,14]、关键点描述符学习[19,21]和一次性字符识别[22]等任务。

图1:全卷积的Siamese人体系结构。对于搜索图像x,我们的架构是完全卷积的。输出是一个标量值的得分图,其维数取决于搜索图像的大小。这使得可以在一次评估中计算搜索图像中的所有翻译子窗口的相似度函数。在本例中,分数图中的红色和蓝色像素包含了相应子窗口的相似点。最好的颜色。

2.1全卷积的Siamese架构

我们提出了一个Siamese架构,它是完全卷积的候选图像x。如果一个函数与平移相交换,我们就说它是完全卷积的。为了给出一个更精确的定义,引入Lτ来表示翻译算子(Lτx)[u] = x[u−τ],一个将信号映射到信号的函数h是完全卷积的,如果为整数步幅k对于任何翻译的τ。(当x是一个有限的信号时,这只需要保持在输出的有效区域上。)

全卷积网络的优点是,我们可以提供一个相同大小的候选图像,作为网络输入一个更大的搜索图像,它将在一次评估中计算密集网格上所有翻译的子窗口的相似性。为了实现这一点,我们使用卷积嵌入函数ϕ,并使用互相关层组合生成的特征映射

其中b✶表示每个位置取b∈R的信号。这个网络的输出不是一个单一的分数,而是一个在有限网格D-⊂-Z2上定义的分数映射,如图1所示。请注意,嵌入函数的输出是一个具有空间支持的特征映射,而不是一个纯向量。同样的技术也应用于当代立体匹配[23]的工作。在跟踪过程中,我们使用一个以目标先前位置为中心的搜索图像最大分数相对于得分地图中心的位置,乘以网络的步幅,给出目标从帧到另帧的位移。通过组装一个小批缩放图像,在一个正向过程中搜索多个尺度。在较大的搜索图像上,使用互相关组合特征图并对网络进行一次评估,在数学上相当于使用内积组合特征图,并在每个翻译子窗口上独立评估网络。然而,互相关层提供了一种非常简单的方法来在现有的conv-net库的框架内有效地实现此操作。虽然这在测试中显然很有用,但它也可以在训练中加以利用。

2.2使用大的搜索图像进行训练

我们采用一种鉴别的方法,训练网络的正、负对,并采用逻辑损失

其中,v是单个样本-候选对的实值分数,y∈{+1,−1}是它的地面真值标签。我们在训练过程中通过使用包含一个样本图像和一个更大的搜索图像的成对来利用我们的网络的完全卷积性质。这将产生一个分数映射v: D→R,有效地每对生成许多例子。我们将分数图的损失定义为个人损失的平均值

对于分数图中的每个位置u∈D,都需要一个真正的标签y[u]∈{+1,−1}。通过应用随机梯度下降(SGD)来解决该问题,得到了连续网络θ的参数

通过提取以目标为中心的范例和搜索图像,从注释视频数据集中获得成对,如图2所示。这些图像是从一个视频的两帧中提取出来的,它们都包含该对象,并且最多间隔T帧。在训练期间,将忽略该对象的类。每个图像中的对象的比例被归一化而不破坏图像的长宽比

图2:从同一视频中提取的训练对:从同一视频中提取的样本图像和相应的搜索图像。当子窗口超出图像的范围时,缺失的部分将用平均RGB值填充。

如果得分图中的元素在中心的半径R内(占网络的步幅k),则被认为属于一个积极的例子

分数图中正负例子的损失被加权以消除类别不平衡。由于我们的网络是完全卷积的,因此它没有学习到对中心的子窗口的偏差的风险。我们认为,考虑以目标为中心的搜索图像是有效的,因为最困难的子窗口和对跟踪器性能影响最大的子窗口很可能是与目标相邻的子窗口。请注意,由于该网络是对称的f(z,x)= f(x,z),因此它实际上在范例中也是完全卷积的。虽然这允许我们在理论上为不同的对象使用不同大小的范例图像,但我们假设大小是一致的,因为它简化了小批处理实现。然而,这一假设在将来可能会被放宽。

2.3 ImageNet 跟踪视频

2015年版的ImageNet大规模视觉识别挑战[10](ILSVRC)引入了ImageNet视频数据集,作为来自视频挑战的新目标检测的一部分。参与者被要求对30种不同类别的动物和车辆中的物体进行分类和定位。训练和验证集总共包含近4500个视频,总共超过一百万注释帧。与VOT [12]、ALOV [1]和OTB [11]中标记序列的数量相比,这个数字尤其令人印象深刻,它们总共只有不到500个视频。我们认为,这个数据集应该对跟踪社区产生极大的兴趣,不仅因为它的巨大规模,而且因为它描述的场景和对象与规范跟踪基准测试中发现的不同。由于这个原因,它可以安全地用于训练深度模型进行跟踪,而不会过度拟合这些基准中使用的视频域。

2.4实际注意事项

在训练过程中,我们采用了127×127的范例图像和255×255像素的搜索图像。图像被缩放,边界框加上上下文的边界,有一个固定的区域。更准确地说,如果紧密边界框具有大小(w,h),且上下文边距为p,那么就选择比例因子s,使缩放矩形的面积等于一个常数

我们使用样本图像A = 1272,并将上下文量设置为平均维度p =(w + h)/4的一半。离线提取每一帧的样本和搜索图像,以避免在训练过程中调整图像大小。在这项工作的初步版本中,我们采用了一些启发式方法来限制从中提取训练数据的帧数。在本文的实验中,我们使用了所有4417个ImageNet视频的视频,这些视频占了超过200万个带标签的边界框。

网络架构我们为嵌入函数ϕ所采用的体系结构类似于克里日耶夫斯基等人[16]的网络的卷积阶段。参数和激活量的尺寸如表1所示。在前两个卷积层后使用最大池化。ReLU非线性层遵循除最后一层conv5之外的每个卷积层。在训练过程中,在每一个线性层后立即插入批处理归一化[24]。最后的代表赛的步伐是八步。该设计的一个重要方面是,在网络中不引入填充物。虽然这在图像分类中是很常见的做法,但它违反了eq.1的全卷积性质。

由于我们的目的是证明我们的全卷积Siamese网络的有效性及其在ImageNet视频上训练时的泛化能力,因此我们使用了一个极其简单的算法来执行跟踪。与更复杂的追踪器不同,我们不更新模型或保持过去出现的记忆,我们不加入额外的线索,如光流或颜色直方图,我们不使用边界盒回归来细化我们的预测。然而,尽管它很简单,当跟踪算法配备我们的离线学习相似度量时,它获得了惊人的良好结果。

表1:卷积嵌入函数的体系结构,类似于克里日耶夫斯基[16]等人的网络的卷积阶段。通道映射属性描述了每个卷积层的输出通道和输入通道的数量。

在网上,我们确实加入了一些基本的时间约束:我们只在一个大约是其之前大小的四倍的区域内搜索对象,并在分数图中添加一个余弦窗口来惩罚大的位移。通过尺度空间的跟踪是通过处理搜索图像的多个尺度版本来实现的。规模上的任何变化都会被惩罚,当前规模的更新也会被抑制。

3相关工作

最近的一些工作已经试图训练递归神经网络(RNNs)来解决目标跟踪的问题。Gan等人[25]训练RNN来预测目标在每一帧中的绝对位置,Kahou等人[26]同样训练RNN来使用可区分的注意机制进行跟踪。这些方法尚未在现代基准上显示出竞争性的结果,但它无疑是未来研究的一个有前途的途径。我们注意到,通过将Siamese网络解释为一个展开的训练和评估的RNN,长度为2,这种方法和我们的方法之间可以得出一个有趣的平行。因此,Siamese网络可以作为一个循环模型的强初始化。

Denil等人。[27]使用粒子滤波器跟踪对象,它使用学习到的距离度量来比较当前的外观与第一帧的外观。然而,他们的距离度量与我们的有很大的不同。他们不是比较整个物体的图像,而是计算注视之间的距离(在物体的边界框内的小区域的凹点一视)。为了学习距离度量,他们训练一个限制玻尔兹曼机器(RBM),然后使用两个固定的隐藏激活之间的欧几里德距离。虽然RBM是无监督的,但他们建议在物体的中心图像中通过随机注视来训练RBM以进行检测。这必须在在线或离机阶段执行。在跟踪对象时,他们学习了一种随机策略来选择特定于该对象的注视,使用不确定性作为奖励信号。除了MNIST数字的合成序列外,该方法只在人脸和人的跟踪问题上得到了定性的证明。

虽然为每个新视频从头开始训练一个深度网络是不可行的,但一些工作已经研究了在测试时从预先训练的参数进行微调的可行性。SO-DLT [7]和MDNet [9]都在离线阶段训练卷积网络,然后在测试时使用SGD学习检测器,从视频本身提取例子,就像传统的跟踪作为检测器学习范式一样。这些方法不能在帧率下运行,因为评估正向和反向传递的计算负担。另一种利用转换网络进行跟踪的方法是应用传统的浅层方法,使用预训练的卷积网络的内部表示作为特征。虽然这种风格的跟踪器如DeepSRDCF [6]、Ma等人[5]和FCNT [8]已经取得了良好的结果,但由于转换网络表示的维度相对较高,它们一直无法实现帧率操作。

与我们自己的工作同时,其他一些作者也提出通过学习图像对的函数来使用转换网络进行目标跟踪。Held等人[28]引入了GOTURN,其中训练一个转换网络直接从两幅图像回归到第一张图像中显示的对象的第二幅图像中的位置。预测一个矩形而不是一个位置的优点是,可以处理比例和高宽比的变化,而不诉诸于详尽的评估。然而,他们的方法的一个缺点是,它对第二幅图像的平移没有内在的不变性。这意味着网络必须在所有位置上显示示例,这是通过大量的数据集增强来实现的。Chen等人[29]训练一个网络,将一个样本和一个更大的搜索区域映射到一个响应地图。然而,他们的方法也缺乏不变性的,第二图像的平移,因为最后的层是完全连接的。与Held等人类似,这是低效的,因为训练集必须表示所有对象的所有翻译。他们的方法因网络的Y形而被命名为YCNN。与我们的方法不同,他们不能在训练后动态调整搜索区域的大小。Tao等人的[30]提出训练一个Siamese网络来识别与初始对象外观相匹配的候选图像位置,并将他们的方法称为SINT(Siamese实例搜索跟踪器)。与我们的方法相比,它们没有采用相对于搜索图像的完全卷积的体系结构。相反,在测试时,他们在不同半径的圆上均匀地采样边界盒,就像在Struck [3]中一样。此外,他们还结合了光流和边界盒回归来改善结果。为了提高其系统的计算速度,他们采用了感兴趣区域(RoI)池化来有效地检查许多重叠的子窗口。尽管进行了优化,每秒2帧,整个系统仍然远非实时。

以上所有针对视频序列进行训练的竞争方法(MDNet [9],SINT [30],GOTURN [28]),都使用属于相同的训练数据基准测试所使用的ALOV/OTB/VOT域。这种做法在VOT挑战中已经被禁止,因为人们担心对基准测试中的场景和对象的过度拟合。因此,我们工作的一个重要贡献是证明一个转换网络可以训练有效的目标跟踪,而无需使用与测试集相同分布的视频。

4实验

4.1实施细节

训练。通过最小化eq.5来找到嵌入函数的参数使用MatConvNet [31]直接进行SGD。参数的初始值遵循高斯分布,根据改进的Xavier方法[32]进行缩放。训练进行了超过50个时代,每个时代由50,000对样本组成(根据sec. 2.2).每次迭代的梯度使用大小为8的小批次进行估计,并在从10−2到10−5的每个时期进行几何退火。

跟踪。如前所述,在线阶段是故意的极简主义的。将初始对象外观的嵌入ϕ(z)计算一次,并与后续帧的子窗口进行卷积比较。我们发现,通过线性插值等简单策略在线更新范例(样本的特征表示)并不能获得太多的性能,因此我们保持其不变。我们发现,使用双边插值对评分图进行上采样,从17×17到272×272,由于原始图相对粗糙,可以得到更准确的定位。为了处理尺度变化,我们还在5个尺度1.025{−2,−1,0,1,2},并通过线性插值更新尺度0.35以提供阻尼。

为了使我们的实验结果具有可重复性,我们共享训练和跟踪代码,以及在http: //www.robots.ox.ac.uk/~luca/siamese-fc.html上生成已策划的数据集的脚本。在一台配备单一NVIDIA GeForce GTX泰坦X和英特尔酷睿i7-4790K4.0 GHz的机器上,我们的完整在线跟踪管道分别为每秒86和58帧,分别搜索3和5级。

4.2评价

我们评估了我们的简单跟踪器的两种变体:SiamFC(Siamese完全卷积)和SiamFC-3,它们搜索超过3个尺度而不是5个尺度。

4.3OTB-13基准

OTB-13 [11]基准考虑了不同阈值下的平均每帧成功率:如果跟踪器的估计和地面真相之间的交叉交叉联合(IoU)高于一定程度,则它在给定的帧中是成功的阈值。

然后根据不同阈值下成功率曲线下的面积进行比较。除了[11]报告的跟踪器,在图3中,我们还比较了最近在主要计算机视觉会议上展示的7个最先进的跟踪器,它们可以以帧率速度运行:Staple[33],LCT[34],CCT[35],SCT 4[36],DLSSVM NU [37],DSST [38]和KCFDP [39].考虑到序列的性质,对于这个基准,我们在训练期间将25%的对转换为灰度。所有其他的超参数(用于训练和跟踪)都是固定的。

图3:OTB-13 [11]基准的OPE(一次评估)、Tre(时间稳健性评估)和SRE(空间稳健性评估)的成功图。CCT、SCT4和KCFDP的结果仅在撰写本文时可用于OPE。

4.4VOT基准

在我们的实验中,我们使用了最新稳定版本的视觉对象跟踪(VOT)工具包(标签vot2015-final),它评估从356个池中选择的序列的跟踪器,使7种不同的具有挑战性的情况能够很好地表示。许多序列最初是在其他数据集中出现的(例如ALOV [1]和OTB [11])。在基准测试中,跟踪器在故障后自动重新初始化5帧,当估计的边界框和地面真相之间的IoU为零时,这被认为是发生了。

VOT-14结果。我们将我们的方法SiamFC(以及变体SiamFC- 3s)与参加2014年版VOT挑战[40]的10个最佳跟踪器进行了比较。我们还包括了Staple [33]和GOTURN [28],这两个最近分别在CVPR 2016和ECCV 2016上展示的实时跟踪器。跟踪器的评估是基于两个性能指标:准确性和鲁棒性。前者以平均IoU计算,后者以故障总数表示。这些数据可以让我们深入了解跟踪器的行为。图4显示了精度-鲁棒性图,其中最好的跟踪器更接近右上角。

图4:VOT-14精度-鲁棒性图。最好的追踪器更靠近右上角。

VOT-15结果。我们还将我们的方法与2015年[12]的40名最佳参与者进行了比较。在这种情况下,准确性和数字的原始分数的故障用于计算预期的平均重叠度量,它表示故障后没有重新初始化的平均IoU。图5显示了在预期平均重叠方面的最终排名,而表2报告了15个排名最高的挑战跟踪者的分数和速度。

VOT-16结果。在撰写本文时,2016年版的调查结果还没有公布。然而,为了便于与我们的方法进行早期比较,我们报告了我们的分数。对于SiamFC和SiamFC-3s,我们分别获得了一个总体的预期重叠(基线实验和非监督实验之间的平均值)为0.3876和0.4051。请注意,这些结果与VOT-16报告不同,因为我们在挑战中的记录是这项工作的初步版本。

尽管它很简单,但我们的方法比最近最先进的实时跟踪器有所改进(图3和图4)。此外,在具有挑战性的VOT-15基准测试中,它的性能优于大多数最佳方法,同时也是唯一一个能够达到帧率速度的方法(图5和表2)。这些结果表明,仅在全卷积Siamese网络上学习的相似性度量的表达能力就足以获得非常强的结果,可以与最近最先进的方法相媲美或更好,这些方法通常要慢几个数量级。我们认为,通过使用跟踪社区经常采用的方法(如模型更新、边界盒回归、微调、内存)来增强极简在线跟踪管道,可以获得相当高的性能。

4.5数据集大小

表3说明了用于训练Siamese网络的数据集的大小如何极大地影响性能。预期的平均重叠度(测量当将数据集的大小从5%增加到100%时,VOT-15)从0.168稳步提高到0.274。这一发现表明,使用更大的视频数据集可以进一步提高性能。事实上,即使200万个监督边界框看起来是一个巨大的数字,也应该忘记它们仍然属于相对适中的视频数量,至少与通常用于训练通信网络的数据量相比是这样。

图5:VOT-15在预期平均重叠度方面的排名。只报告了最好的40个结果。

5结论

 在这项工作中,我们背离了传统的跟踪在线学习方法,并展示了一种替代方法,即在离线阶段学习强嵌入。与它们在分类设置中的使用不同,我们证明了对于跟踪应用,Siamese全卷积深度网络能够更有效地利用可用数据。这既反映在测试时间,通过执行有效的空间搜索,也反映在训练时间,其中每个子窗口都有效地代表了一个有用的样本,而很少有额外的成本。实验表明,深度嵌入为在线跟踪器提供了一个自然丰富的功能来源,并使简单的测试时间策略表现良好。我们相信,这种方法是对更复杂的在线跟踪方法的补充,并期望未来的工作将更彻底地探索这种关系。确认。我们非常感谢ERC StG 638009-IDIU的支持。

表2:我们提出的方法的原始分数、重叠和报告的速度,以及VOT-15挑战的最佳15个性能跟踪器。在可能的情况下,我们与作者报告的速度进行比较,否则(*)我们以EFO为单位报告VOT-15结果[12]的值,这大致对应于fps(例如,NCC跟踪器的速度为140 fps和160 EFO)。

表3:使用增加部分ImageNet视频数据集对跟踪器性能的影响。

图6:在第2.4节中描述的简单跟踪器的快照,它配备了我们提出的在ImageNet视频上从头开始训练的全卷积Siamese网络。我们的方法不执行任何模型更新,所以它只使用第一帧来计算ϕ(z)。尽管如此,它对于许多具有挑战性的情况,如运动模糊(第2行)、外观的剧烈变化(第1行、第3行和第4行)、照度差(第6行)和比例变化(第6行)。另一方面,我们的方法对带有混淆的场景(第5行)很敏感,这可以说是因为模型从未更新过,因此互相关为所有与目标第一次出现相似的窗口给出了很高的分数。所有的序列都来自VOT-15基准:体操1,赛车1,鱼3,冰机1,行进,歌手1。快照是在固定帧(1、50、100和200)下拍摄的,跟踪器永远不会被重新初始化。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS】利用高程进行坡度分析:区域面/河道坡度

在ArcGIS中利用高程进行坡度分析 坡度ArcGIS实操案例1:流域面上坡度计算案例2:河道坡度计算2.1 案例数据2.2 操作步骤 参考 坡度 坡度是地表单元陡缓的程度,通常把坡面的垂直高度和水平距离的比值称为坡度。 坡度的表示方法有百分比法、度数…

02|索引优化

数据准备 创建联合索引 KEY idx_name_age_position (name,age,position) USING BTREE CREATE TABLE employees (id int(11) NOT NULL AUTO_INCREMENT,name varchar(24) NOT NULL DEFAULT COMMENT 姓名,age int(11) NOT NULL DEFAULT 0 COMMENT 年龄,position varchar(20) NO…

在线程调用的函数中使用pthread_exit同样会将线程退出

如上图所示,在func()函数中调用pthread_exit,同样可以退出当前线程; 类似的,如果func()函数中调用exit,可以直接退出整个进程。 return 是返回到函数调用处; pthread_exit是退出…

解决easyExcel模板填充时转义字符\{xxx\}失效

正常我们在使用easyExcel进行模板填充时,定义的变量会填充好对应的实际数据,未定义的变量会被清空,但是如果这个未定义的变量其实是模板的一部分,那么清空了就出错了。 在这张图里,上面的是模板填充后导出的文件&…

Java基础之lambda表达式(五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习 题目…

联想开天昭阳N4620Z笔记本如何恢复出厂麒麟操作系统(图解)

联想开天昭阳N4620Z笔记本简单参数: 中央处理器:KX-6640MA G2 内存:8GB 固态硬盘:512GB SSD 显示器:14.0”FHD 电池:4Cell 操作系统:麒麟KOS中文RTM(试用版) 此款笔…

关于Arrays类中asList(T... a)泛型参数辨析

前提 我们需要知道两点 (1)T指的是泛型类型,它只能是引用类型,何为引用类型?在java中除了基本数据类型(如byte、short、int、long、float、double、boolean、char)之外的所有类型都是引用类型…

【Flutter/Android】运行到安卓手机上一直卡在 Running Gradle task ‘assembleDebug‘... 的终极解决办法

方法步骤简要 查看你的Flutter项目需要什么版本的 Gradle 插件: 下载这个插件: 方法一:浏览器输入:https://services.gradle.org/distributions/gradle-7.6.3-all.zip 方法二:去Gradle官网找对应的版本:h…

Uniapp小程序开发-底部tabbar的开发思路

文章目录 前言一、uniapp 实现 tabbar二、图标使用网络图片后端返回tabbar信息uniapp方式中的setTabBarItem 总结 前言 记录uniapp 开发小程序的底部tabbar ,这里讨论的不是自定义tabbar的情况。而是使用wx.setTabBarItem(Object object) 这个api的情况。关于custo…

IT廉连看——C语言——分支语句

IT廉连看—分支语句 一、什么是语句 C语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 本周后面介绍的是控制语句。 控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成&…

OT 安全解决方案:探索技术

IT 和 OT 安全的融合:更好的防御方法 OT 安全解决方案下一个时代: 为了应对不断升级的威胁形势,组织认识到迫切需要采用统一的信息技术 (IT) 和运营技术 (OT) 安全方法。IT 和 OT 安全的融合代表了一种范式转变,承认这些传统孤立领…

了解 JavaScript 中的重放攻击和复现攻击

在网络安全领域,重放攻击(Replay Attack)和复现攻击(Playback Attack)是一些可能导致安全漏洞的攻击形式。这两种攻击类型涉及在通信过程中再次发送已经捕获的数据,以达到欺骗系统的目的。本文将介绍 JavaS…

vue3 实现 el-pagination页面分页组件的封装以及调用

示例图 一、组件代码 <template><el-config-provider :locale"zhCn"><el-pagination background class"lj-paging" layout"prev, pager, next, jumper" :pager-count"5" :total"total":current-page"p…

leetcode单调栈

739. 每日温度 请根据每日 气温 列表&#xff0c;重新生成一个列表。对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, …

计算机组成原理(14)----总线

目录 一.总线的物理实现 二.总线概述 三.总线的特性 四.总线的分类 &#xff08;1&#xff09;按数据传输格式分类 •串行总线 •并行总线 &#xff08;2&#xff09;按总线功能分类 •片内总线 •系统总线 系统总线的结构 •通信总线 &#xff08;3&#xff09;按…

激光雷达反光板算法总结

1 高反特征提取 首先,从雷达原始数据,提取到高反点;根据雷达的规格书提供的不同材料的强度,设定合适的阈值;;更优的方法是根据距离设定不同的阈值 2 反光板及反光柱的聚类 根据高反点是否连续进行聚类,同时结合距离及雷达的角度分辨率,计算出针对不同尺寸的反光板或反…

Redis 有哪些架构模式?讲讲各自的特点

单机版模式 特点&#xff1a;简单 问题&#xff1a; 1、内存容量有限 2、处理能力有限 3、无法高可用。 主从复制 Redis 的复制&#xff08;replication&#xff09;功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品&#xff0c;其中被复制的服务器为主服…

STL容器之list

​ 1.封装除了对数据的保护、更好地管理数据之外&#xff0c;还有实现了对上层的统一&#xff1b; ​ 2.类模板参数的不同&#xff0c;一方面是为了实例化出来不同的类&#xff0c;另一方面是为了实现类的成员函数的不同&#xff1b; 一、认识list ​ 1.list是一种带头双向循…

[嵌入式系统-34]:RT-Thread -19- 新手指南:RT-Thread标准版系统架构

目录 一、RT-Thread 简介 二、RT-Thread 概述 三、许可协议 四、RT-Thread 的架构 4.1 内核层&#xff1a; 4.2 组件与服务层&#xff1a; 4.3 RT-Thread 软件包&#xff1a; 一、RT-Thread 简介 作为一名 RTOS 的初学者&#xff0c;也许你对 RT-Thread 还比较陌生。然…