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

news2024/12/28 20:19:41
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)下拍摄的,跟踪器永远不会被重新初始化。

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

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

相关文章

5分钟JavaScript快速入门

目录 一.JavaScript基础语法 二.JavaScript的引入方式 三.JavaScript中的数组 四.BOM对象集合 五.DOM对象集合 六.事件监听 使用addEventListener()方法添加事件监听器 使用onX属性直接指定事件处理函数 使用removeEventListener()方法移除事件监听器 一.JavaScript基础…

悄悄话花费的时间(C语言)【二叉树各结点统计求和】

题目描述 给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

element导航菜单el-menu添加搜索功能

element导航菜单-侧栏&#xff0c;自带的功能没有搜索或者模糊查询。 找了找资料 找到一个比较可行的&#xff0c;记录一下&#xff1a; //index.vue的代码 <div style"overflow:auto"><el-menu :default-active"$route.path":default-openeds&…

如何在 Tomcat 中为 Web 应用程序启用和配置缓存?

在Tomcat中为Web应用程序启用和配置缓存通常涉及到对Tomcat的连接器&#xff08;Connector&#xff09;进行配置&#xff0c;以及可能的话&#xff0c;配置Web应用程序本身以支持缓存。 1. 配置Tomcat连接器以启用缓存 Tomcat的连接器可以通过其配置来启用各种…

开源免费的NTFS for mac工具mounty

开源免费的NTFS for mac工具mounty 安装依赖 brew install gromgit/fuse/ntfs-3g-macbrew install --cask macfuse安装mounty 如果已经安装macFUSE和ntfs-3g-mac&#xff0c;可以直接点击下载的dmg安装包&#xff0c;安装升级。第一次启动mounty&#xff0c;你需要接受一系列…

Oracle迁移到mysql-导出mysql所有索引和主键

导出建库表索引等&#xff1a; [rootlnpg ~]# mysqldump -ugistar -pxxx -h192.168.207.143 --no-data -d lndb > lndb20230223-1.sql 只导出索引&#xff1a;参考&#xff1a;MYSQL导出现有库中的索引脚本_mysql 导出数据库所有表的主键和索引-CSDN博客 -- MYSQL导出现有…

国内排名比较好的ai软件有哪些?极力推荐这几款

随着人工智能技术的不断演进&#xff0c;越来越多的写作者开始借助AI写作软件来提升写作效率。在国内&#xff0c;有许多实用且易用的AI写作工具&#xff0c;让写作变得更加便捷和高效。以下是6款国内优秀的AI写作软件&#xff0c;让您的写作过程更加顺畅。 第一款&#xff1a;…

[附完整代码]群智能算法跑21种真实世界优化问题,并输出结果到excel||群智能算法跑CEC 2020真实世界优化问题,并输出结果到excel

1、简介 灰狼算法跑跑21种真实世界优化问题|足球训练队优化算法跑21种真实世界优化问题||牛顿拉夫逊算法跑21种真实世界优化问题||冠状豪猪CPO跑21种真实世界优化问题。 ‘FTTA’,‘BWO’, ‘CPO’, ‘FHO’, ‘GWO’, ‘HHO’, ‘NRBO’,‘SCA’,‘SGA’,WOA’跑21种真实世…

Python爬虫-报错requests.exceptions.SSLError: HTTPSConnectionPool

在学习python爬虫&#xff0c;在公司运行代码没有问题&#xff0c;但是下班回来把代码拉下来运行&#xff0c;却出现问题。 问题&#xff1a; requests.exceptions.SSLError: HTTPSConnectionPool(host‘campusgateway.51job.com’, port443): Max retries exceeded with url…

如何用jmeter请求application/octet-stream,image/jpeg

用postman调用时&#xff1a; 用jmeter&#xff1a; 注意上图不要勾选&#xff0c;不然会把所有的内容都以二进制传进去&#xff0c;我们不勾选只传二进制的图片内容&#xff0c;勾选了会把MIME类型、参数名称都转为二进制传进去。会报错。

MySQL-基本使用,数据类型,简单操作

1. 数据库概述 1.1 数据库(DatBase) 数据库&#xff0c;就是遵循一定数据格式的数据集合&#xff0c;可以认为他是对文件系统的改进。它解决了不同操作系统之间&#xff0c;数据格式的兼容性问题。也就是说&#xff0c;只要是同一个数据库的数据文件&#xff0c;即使从windows迁…

linux服务器tomcat日志中文出现问号乱码

目录 一、场景二、排查三、原因四、解决 一、场景 tomcat日志的中文出现问号乱码 乱码示例 ??[377995738417729536]????????? ac??????????????message:二、排查 1、使用locale命令查看服务器当前使用的语言包 发现只用的语言包为utf-8&#xff0…

Openstack云计算框架及前期服务搭建

openstack介绍 Openstack是一个开源的云计算管理平台项目&#xff0c;由几个主要的组件组合起来完成具体工作&#xff0c;支持几乎所有的云环境&#xff0c;项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台 ----百度百科 Openstack是一个云操作系统&a…

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频,前端代码生成物大翻新

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频&#xff0c;前端代码生成物大翻新 Rust通用代码生成器发布了红莲尝鲜版二十一的最新介绍视频&#xff0c;前端代码生成物大翻新。视频请见&#xff1a; Rust通用代码生成器&#xff1a;莲花&#xff0c;红莲尝鲜版二…

【QT QML】软件打包,生成安装包

一、版本 Desktop 5.15.2 MinGW 64-bit二、打包 1. 编译Release版本 2. 在工程目录下找到Realse文件夹 3. 拷贝文件 ***-Desktop_Qt_5_15_2_MinGW_64_bit-Release - release - xxx.exe到一个新文件夹中 4. 开启相应打包工具&#xff08;根据自己的编译器和版本选择&#xff0…

爬取数位观察城市数据代码展示

import requests import json from Crypto.Cipher import AES # 开始解密 from Crypto.Util.Padding import unpad #去填充的逻辑 import base64 url https://app.swguancha.com/client/v1/cPublic/consumer/baseInfo data {current: 1,"dimensionTime": "20…

java课设之简易版客房管理系统(mvc三层架构)

&#xff08;一&#xff09;、系统概述&#xff1a; 客房管理系统是一个用于管理酒店客房信息的程序&#xff0c;主要功能包括客房信息录入、客房状态查询、客房订单管理&#xff0c;客房的预定功能。 &#xff08;二&#xff09;、功能说明&#xff1a; 1.登录&#xff1a;管理…

【openGL教程08】关于着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容&#xff0c;客户如果想自我实现渲染灵活性&#xff0c;可以用着色器进行编程&#xff0c;这种程序小脚本被传送到GPU的显卡内部&#xff0c;起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…

UnityWebGL UGUI中文不显示问题

这是Unity编辑中效果 打包成webgl后的效果&#xff08;中文没有显示出来&#xff09; 解决方法 将Unity默认使用的Arial替换成中文字体。 1.找到电脑字体库&#xff08;win电脑字体库路径&#xff1a;C:\Windows\Fonts &#xff1b;Mac电脑搜索“字体册”&#xff09;。 2.将…

Web3之光:揭秘数字创新的未来

随着数字化时代的深入发展&#xff0c;Web3正以其独特的技术和理念&#xff0c;为我们打开数字创新的崭新视角。作为数字化时代的新兴力量&#xff0c;Web3将深刻影响着我们的生活、工作和社会。本文将揭秘Web3的奥秘&#xff0c;探讨其在数字创新领域的前景和潜力。 1. 重新定…