【Tracking】Real-Time Camera Tracking: When is High Frame-Rate Best

news2025/1/12 8:45:01

paper:

Real-Time Camera Tracking: When is High Frame-Rate Best?

0. 摘要:

更高的帧率承诺能更好地跟踪快速运动,但先进的实时视觉系统很少超过标准的10-60Hz范围,因为认为所需的计算量太大。实际上,在利用预测优势的跟踪器中,增加帧率会减少每帧的计算成本。此外,当考虑图像形成的物理性质时,高帧率意味着快门时间的上限降低,导致运动模糊减少但噪声增加。因此,将这些因素综合考虑,随着帧率的变化,如何优化应用相关性能要求,包括准确性、鲁棒性和计算成本?以3D相机跟踪作为我们的测试问题,并通过仔细合成基于光线追踪详细3D场景、实验获取的光度响应和噪声模型以及快速相机运动的逼真视频,打开了一条系统调查的途径。我们的多帧率、多分辨率、多光照水平的数据集基于数万小时的CPU渲染时间。我们的实验得出了关于帧率选择的定量结论,并强调了充分考虑物理图像形成在推动跟踪性能方面的关键作用。

1. 引言

高帧率的爆裂气球或类似现象的镜头素材,令人印象深刻,因为它提供了观察非常快速运动的潜力。东京大学的研究人员在早期的研究中展示了在极高帧率下进行实时跟踪的潜力(例如[1])。他们开发了能以1000Hz运行的自定义视觉芯片。使用基本的算法(与光学鼠标中使用的算法相关),他们跟踪了被扔、弹跳和摇晃的球,并将其与从属控制的机器人摄像平台和操作器相结合。虽然现在有商业摄像机或甚至安装在普通移动设备上的摄像头可以提供100Hz以上的视频,但先进的实时视觉跟踪算法很少超过60Hz。

本文通过实验分析这种权衡所导致的追踪帧率增加何时以及以多大程度上是有利的,为确定增加跟踪帧率的优势提供了严格的程序。我们的第一个贡献是一个精确的框架,用于在真实光照的三维场景中渲染逼真的敏捷运动视频,具有多个完全可控的设置和完整的地面真实性,从而实现对跟踪性能的系统性调查。通过精确建模物理图像生成,并使用来自真实相机和使用场景的参数,我们通过结合超过20000个光线追踪图像生成了一个大量的逼真视频数据集。我们的第二个贡献是使用这些数据进行实验,通过分析基本的密集对准方法的性能,调查相机跟踪的限制及其如何取决于帧率,从而得出关于帧率优化的定量结果。

1.1
模型、预测和主动处理
我们的范围是实时基于模型的跟踪,即在特定情况下获取描述运动的参数的连续估计,这些参数需要“在环”中用于驱动机器人技术或人机交互等领域的应用(参见图1(a))。特别是,我们主要关注通过已知的、主要刚性的场景进行相机自我运动跟踪。这种跟踪所需的场景的三维模型可以来自先前的建模或交错的重建过程(例如PTAM [2]或DTAM [3])中的全套SLAM系统。这些以及其他最先进的SLAM系统中的事实上,重建(通常称为地图构建)以一个可分离的、更低频率的过程运行,使我们相信即使在SLAM中,也有必要将跟踪帧率的特性与生成跟踪模型的重建过程分开进行分析。
在这里插入图片描述图1。a)实时视觉跟踪应用,以及所需控制信号的频率。b)跟踪实验配置和评估。在我们合成序列的每一帧中,在跟踪后,我们记录估计姿势T̂ t,w与地面真实值T t,w之间的平移距离;这些距离的平均值形成我们的准确性度量。然后,我们使用地面真实姿势作为下一帧跟踪步骤的起点。

一个模型由几何部分组成,从抽象的点和线特征到非参数深度图、网格或隐式曲面;以及用于实现图像对应的光度描述,例如局部描述符或完整的RGB纹理。对于某些类型的模型,已经证明使用高效的关键点匹配方法(如[4])可以实现“跟踪作为检测”的实时处理。然而,虽然这种方法在视觉应用中在跟踪丢失后的重新定位方面起着重要作用,但它们并不适合从系统的主要跟踪循环中提高帧率的主要优势-逐帧生成越来越好的预测,实现引导式的“主动”处理。

许多基于关键点或边缘特征匹配的跟踪器已经实施了显式的预测,并通过在概率限定的小窗口上进行穷举搜索来实现实时效率(例如[5])。密集对准方法不使用特征,而是旨在在输入视频帧的每个像素与纹理3D模型之间找到对应关系,通过从更好的起始点初始化,需要更少的迭代来优化其成本函数。在相机跟踪中,现代并行处理资源现在允许密集对准的准确性和稳健性超过基于特征的方法(例如[6],[3]);多视角立体技术的性能已经非常好,我们坚信,在涉及移动相机的视觉问题中,默认情况下可以假设存在密集的表面场景模型(尤其是通过将单目视频与商用深度相机传感器结合使用的选择,例如[7])。

1.2
通过密集图像到模型对准进行跟踪
整个图像对齐跟踪[6] [8] [3]针对密集模型操作,通过评估相似度函数的梯度,并像原始的Lucas-Kanade算法[9]一样迭代地向最小值方向下降。在3D相机跟踪中,对于每个实时视频帧,通过将一个带有文本的三维表面模型相对于广义刚体相机-场景运动的6DOF参数ψ最小化成本函数来寻找最佳对准。这个成本函数是在所有具有纹理模型的有效视图的实时帧的所有像素上计算图像亮度差异的平方和:就像[3]中所示,这里I_l表示当前实时视频帧,I_r表示从模型(从纹理场景模型的最后一个跟踪位姿进行的投影)获得的参考图像,ξ_r表示相应的深度图;透视投影用π表示,固定相机内参矩阵为K。这个成本函数是非凸的,但在小幅帧间运动的假设下,它会线性化并通过梯度下降进行迭代优化。其收敛盆地的大小取决于图像和纹理模型中主要结构的尺度。
在这里插入图片描述
基于密集梯度下降的跟踪算法隐式地实现了主动处理,因为如果从良好预测的起始点运行,它们将需要更少的迭代次数才能收敛到最小值。如果帧率增加,我们预期优化在一帧到下一帧之间会更快地收敛,并且由于帧间运动减少和Lucas-Kanade跟踪中的线性化越来越有效,有更少的大失败的可能性。因此,除了我们现在看到越来越多地使用密集跟踪方法,我们选择了这样一个框架来进行我们的实验研究,以分析跟踪性能,因为迭代梯度优化的图像对准以直接且纯粹的方式追求最佳的跟踪性能(它的目标是将图像中的所有数据与场景模型对准),并且使得每帧的性能(计算、准确性和稳健性)的变化自动化。我们可能选择其他的基于特征的方法,在图像数据和跟踪性能之间放置一个抽象(特征选择和描述),每种特征类型的抽象都不同,这将使我们质疑我们是否在发现跟踪性能的基本属性还是特征的属性。特征算法具有离散的调整参数和阈值。例如,在一定程度的运动模糊下,大多数检测器将无法找到任何强梯度的特征;但是密集跟踪仍然可以以某种可量化的方式执行(如DTAM通过相机散焦进行的跟踪所示)。此外,正如我们将在实验中看到的,物理图像形成模糊和噪声效果与帧率之间存在复杂的相互作用。密集跟踪框架允许在不改变可能对基于特征的方法必需的算法参数的情况下对这些退化图像进行分析。

《稠密三维跟踪的实验评估》
我们希望通过本文的分析回答以下问题:在一个调优的跟踪系统中,某一天出现了一款新的处理器,其计算速度是之前型号的两倍,但成本和功耗相同。我们可以将这个新处理器用于提高跟踪性能,但应该如何最好地修改算法呢?一些可能的选择包括:增加分辨率;增加帧率和算法更新频率;增加其他参数,比如优化迭代次数。显然,首先要定义跟踪性能(也可以参见Sturm等人的文章)。如果我们考虑估计姿态和真实姿态之间的模型参数空间距离在轨迹上的分布,大多数跟踪器的性能可以用它们在基本正常操作时的平均准确度和实现此操作与严重失败之间的“鲁棒性”指标来表示。当还考虑计算成本时,跟踪性能至少由三个目标特征来描述,每个目标的重要性将根据具体应用而变化。跟踪器的理论最佳性能不是目标空间中的一个单点,而是可能操作点的帕累托前沿。在理解这一点的基础上,本节开头的问题可以通过在计算成本轴上滑动并权衡可能的准确性和鲁棒性改进来回答。在我们的实验中,我们分析了运动使得严重的跟踪失败很少发生的数据。进一步研究跟踪的鲁棒性需要大量数据,以获取关于跟踪失败的有意义统计数据。我们希望将来能够重新审视这个问题,因为高帧率的主要优势之一可能是每秒鲁棒性的提高。因此,在我们的结果中,我们主要关注两个指标:正常跟踪的准确性和计算成本。我们的主要结果以双目标图形的形式呈现,帕累托前沿提示了用户可能选择的应用程序相关操作点。
我们使用自定义的逼真视频生成作为实验的基础,与设置等效的真实相机实验选项相比,有几个原因使我们选择了这种方法。首先,我们对参数具有完全控制(例如连续可变的帧率、分辨率和快门控制以及精确可重复的运动),这在真实实验环境中很难匹配,因为真实相机的设置具有离散范围。我们对相机运动和场景几何的完美真实性都具有绝对真实条件下可能存在的实验误差。也许最重要的是,我们的实验强调了在评估跟踪时正确认识场景光照条件的极端重要性;即使在一个复杂且昂贵的实验装置中,包括动作捕捉或跟踪相机运动的机器人以及激光扫描来捕捉场景几何,在不同相机设置下实现可重复性也需要控制的照明和光度测量装置。正如下一节详细介绍的那样,我们在努力产生不仅尽可能逼真的实验视频,而且基于真实相机、运动和典型3D场景参数的实验视频时做出了极大的努力。我们在提交的视频中展示了来自我们数据集的样本,这一点得到了强调。当然,这并不意味着我们对追求未来工作中的真实实验不感兴趣。已知的场景几何结构使得DTAM(稠密单目SLAM中的稠密跟踪组件)能够用作我们实验中的跟踪器。DTAM是一种金字塔式的GPGPU实现,它使用了在第1.2节中解释的整个图像对齐方法。DTAM使用了从低分辨率80×60到全分辨率640×480的传统图像金字塔,并采用一种固定策略来确定何时从一个金字塔级别转换到下一个级别,即当从一次迭代到下一次迭代的姿态误差减小不超过0.0001cm时进行切换。需要注意的是,在跟踪过程中,这确实意味着对真实值的某种了解,我们认为在实验评估中这是合理的,但在真实跟踪中需要使用不同的收敛度度量方法。
在给定的相机设置下,我们将跟踪器收敛到误差最小值所需的平均执行时间乘以正在使用的帧率。这给出了跟踪器在无维度计算负载单位中对处理器的负担度量,其中值为1表示实时操作的完全占用,更大的值表示需要插入多个处理卡(考虑到DTAM的跟踪实现具有极高的并行性,这是完全可行的)以实现该性能。为了量化准确性,我们使用的误差度量只基于整个轨迹上估计姿态t_est和真实姿态t_gt之间的欧氏距离平均值。请参见图1(b)。
在这里插入图片描述
图3。左图:使用不同的曝光时间(微秒)从真实相机获取的图像示例。红色矩形框标记了手动选择的像素,以均匀采样场景辐照度,并将亮度值捕获并用作CRF估计的输入。所有图像都使用零增益和关闭的伽马进行拍摄。右图:使用[14]的方法实验确定的我们Basler piA640-210gc相机的每个R、G和B颜色通道的相机响应函数(CRF)。这款相机在饱和之前具有非常线性的CRF;在大部分范围内,图像亮度可以被视为与辐照度成正比。请注意,该方法确定的辐照度值是经过缩放的,不是绝对值。

在这里插入图片描述

确定相机响应函数。我们使用[14]中提出的无图表标定方法,在静态场景下使用多个具有已知曝光时间范围的图像(参见图3左侧),记录选择的一些像素位置上的变化亮度值,跨越场景中的辐照度变化。由于f是单调且可逆的,我们可以通过逆CRF f−1将给定的亮度值和曝光时间映射回辐照度。对于每个像素i在曝光时间Δt j 下,我们取方程式7的无噪声版本的对数:
log f−1(B ij) = log E i + log Δt j.
(4)
使用15个不同曝光时间下的35个图像像素的测量值,我们使用二阶平滑先验在L2误差范数下求解f−1的参数化形式。图3(右侧)显示了Basler piA640-210gc相机的结果非常线性的CRF(伽马除外)。

噪声水平函数校准。为了获得噪声水平函数(NLF),在相同的曝光时间范围内拍摄了同一静态场景的多张图像。对于选择的像素位置,分别记录了每个曝光设置下的平均亮度和标准差(参见图4),分别针对每个颜色通道。利用这个散点图的下包络来得到观察到的NLF,由σ_s和σ_c参数化。为此,我们定义了一个与[13]中使用的函数非常相似的函数,用于建模给定理论标准差τ(B_n)预测的测量数据的可能性:
τ(B_n) = EΔtσ_s^2 + σ_c^2,
其中E是映射到亮度级别B_n的辐照度,可以使用先前获得的逆CRF轻松获得。我们使用Matlab优化工具箱和标准函数fmincon(带有约束条件σ_s≥0和σ_c≥0)和fminunc来获得最优值。优化结果在图4中与各通道的观察到的NLF重叠显示。

在这里插入图片描述

确定相机响应函数。我们使用[14]中提出的无图表标定方法,在静态场景下使用多个具有已知曝光时间范围的图像(参见图3左侧),记录选择的一些像素位置上的变化亮度值,跨越场景中的辐照度变化。由于f是单调且可逆的,我们可以通过逆CRF f−1将给定的亮度值和曝光时间映射回辐照度。对于每个像素i在曝光时间Δt j 下,我们取方程式7的无噪声版本的对数:
log f−1(B ij) = log E i + log Δt j. (4)
使用15个不同曝光时间下的35个图像像素的测量值,我们使用二阶平滑先验在L2误差范数下求解f−1的参数化形式。图3(右侧)显示了Basler piA640-210gc相机的结果非常线性的CRF(伽马除外)。

噪声水平函数校准。为了获得噪声水平函数(NLF),在相同的曝光时间范围内拍摄了同一静态场景的多张图像。对于选择的像素位置,分别记录了每个曝光设置下的平均亮度和标准差(参见图4),分别针对每个颜色通道。利用这个散点图的下包络来得到观察到的NLF,由σ_s和σ_c参数化。为此,我们定义了一个与[13]中使用的函数非常相似的函数,用于建模给定理论标准差τ(B_n)预测的测量数据的可能性:
τ(B_n) = EΔtσ_s^2 + σ_c^2,
其中E是映射到亮度级别B_n的辐照度,可以使用先前获得的逆CRF轻松获得。我们使用Matlab优化工具箱和标准函数fmincon(带有约束条件σ_s≥0和σ_c≥0)和fminunc来获得最优值。优化结果在图4中与各通道的观察到的NLF重叠显示。

3.2 插入真实相机轨迹。
从静态图像转换为视频需要一个模拟相机在场景中跟随的相机轨迹。在最初尝试了各种合成轨迹的方法并发现不令人满意后,我们决定从实际相机跟踪实验中捕获一个轨迹。使用DTAM [3]我们跟踪了一个极其手持抖动的运动,该运动处于DTAM的最先进跟踪能力的极限,使用30Hz的相机。然后,使用单一相似变换将这些姿势转换为POV-Ray的参考坐标系,以类似的方式渲染合成场景。为了获得任何帧率的图像,我们对姿势进行插值,使用立方插值进行平移,使用球面线性插值(slerp)进行旋转。在我们最低的实验帧率20Hz下,我们观察到的水平帧间运动的最大值为260像素,几乎是整个640像素宽图像的一半,表明运动速度很快。

3.3 渲染逼真的合成序列。
我们遵循之前的研究,例如[15],将POV-Ray生成的“完美”图像与我们的物理相机模型结合起来生成逼真的视频序列。由于我们没有从CRF获得的辐照度值的绝对尺度,无法以绝对术语定义场景照明,并且代之以表示整体场景亮度的新常量α:
B = (αE)Δt . (6)
在我们的实验中,α的值为{1, 10, 40},增加的场景照明会导致更好的图像信噪比。每个像素的参考E设置为从POV-Ray获得的基本像素值。

为了考虑相机运动,我们对运动模糊进行建模。对于给定的快门时间Δt,在该期间沿着相机轨迹计算多个POV-Ray帧i的平均值,然后应用噪声水平函数:
在这里插入图片描述

最后,我们将得到的亮度函数量化为每个通道8位的彩色图像。图5给出了20Hz和100Hz下相似运动的示例。

在这里插入图片描述
图5. 在特定帧率下快门时间设置为最大值的一半时的合成逼真图像。左侧:在100Hz下,图像几乎没有模糊,但是暗且有噪声。所显示的图像的亮度值已经重新调整用于视觉展示目的。右侧:在20Hz下,运动模糊占主导地位。插图突出了我们对图像饱和度的正确处理,通过在辐照度空间中进行模糊均值计算。

4.1 跟踪分析和结果
在实验中假设完美照明条件下,我们使用上述框架合成了具有不同帧率的视频,范围为20至200Hz,持续时间为5秒钟,相机运动迅速。为了进一步推动帧率,我们还合成了400Hz和800Hz的序列。尽管我们仅展示了这个序列的结果并集中于解释的清晰性,但我们还有其他不同场景和运动的数据部分,在这些数据部分中,我们发现跟踪性能随帧率变化的结果非常相似。

在这里插入图片描述
图6. 左侧:在完美照明条件下,不同帧率的误差图作为可用计算预算的函数。高曲率点表示从一个金字塔级别切换到另一个级别。右侧:Pareto前沿图,标记了每个可用预算下最优的帧率。使用数字标注每个最优帧率的预算值。其中优化目标为最小误差/最小处理负荷性能。

4.2 在现实照明设置下的实验
我们现在将我们的实验扩展到了考虑快门时间相关的噪声和模糊伪影,这是在第3.1节中建模的,并且会影响到大多数真实世界的照明条件。我们展示了一组针对不同全局光照水平的结果。

我们使用了与完美图像相同的主要帧率范围20-200Hz,并且使用了相同的5秒运动序列。对于每个帧率,我们需要选择快门时间,虽然我们进行了一些关于快门时间优化的初步实验(没有在此处呈现),但在这些结果中,我们始终选择每个帧率的倒数的一半作为快门时间。为了生成每个合成视频帧,我们渲染了多个射线追踪结果,用于从插值相机姿势进行模糊均值计算,在所选的快门时间内,相邻射线追踪结果之间间隔1.25毫秒。因此,为了生成具有25毫秒快门时间的20Hz序列,我们需要渲染5 × 20 × 20 = 2000个射线追踪帧。实际上,这个数量对于每个帧率都是相同的(高帧率通过减少用于模糊均值计算的帧数来对应),所以总计需要20000个渲染结果(其中一些是重复的)。

一个重要的细节是,通过对重新投影的模型模板进行预模糊处理,可以提高密集匹配的效果,并使其与所使用的快门时间的期望水平匹配,我们已经实现了这一点;深度图也会被同样程度的模糊处理。我们进行了一些初始的特性实验,以确认我们逼真合成框架的正确功能,包括这种模板模糊处理(图7)。
在这里插入图片描述
图7. 用于确认我们的逼真合成视频的特性实验。
左图:针对单个运动和200Hz帧率,我们仅改变快门时间以确认降低光照确实导致信噪比降低和跟踪性能变差。这里的信噪比直接以每个色彩通道的位数进行量化。
右图:一项实验明确表明,如果将一个故意模糊的预测与模糊的实时图像进行匹配,跟踪的质量会得到改善。

4.3 高光照
图8(a)显示了α = 40时的Pareto前沿,其中现场光照较高但不完美。图像具有良好的信噪比,但高帧率图像较暗;200Hz图像几乎比完美照明下对应的图像暗5倍,随着帧率的推进,图像变得更暗、更嘈杂。为了清晰明了,在图中省略了400Hz和800Hz。我们观察到,低分辨率下的200Hz仍然是低预算的最佳选择,图像梯度信息仍然足够强大以指导匹配。并且再一次,由于基线足够短以帮助准确匹配,200Hz的少数几次迭代就已足够。预算进一步提高后,我们发现160Hz成为更高分辨率(即320×240)的最佳选择。这就是帧率交错的误差绘图的交点,增加分辨率而不是帧率可以获得更好的结果。当处理负载进一步增加时,更高的帧率是首选,而模式在640×480的情况下会重复出现。然而,数据表明与完美序列结果中的转换相比,最高分辨率的时间更晚,在图6(b)中。当信噪比高时,最高分辨率显然具有更多好处。
在这里插入图片描述
图8. 光照水平的Pareto前沿(a)α = 40,(b)α = 10和(c)α = 1。曲线上的数字表示在给定的计算预算下可以使用的帧率,以达到所需的误差。

4.4 中等光照
在图8(b)中,我们将α降低到10,代表了典型室内照明环境。在处理负载非常低,预测非常强大且只需进行一两次对齐迭代时,200Hz仍然是最佳选择。在处理负载稍微增加时,即使没有分辨率的变化,最佳帧率的选择也会向100Hz方向转移,与完美照明和高照明条件下,需要在非常低的处理负载下使用高帧率的情况相反。在中等光照下,最好以较低的帧率进行更多次迭代,并利用改善的信噪比,因为在非常高的帧率下噪声太大,无法使多次迭代变得有价值。当我们转换为160×120的分辨率时,我们发现相比于高光照条件下的200Hz,最佳帧率已经从100Hz转移到100-140Hz。320×240和640×480的更高分辨率也遵循类似的趋势。
4.5 低光照
**图8(c)显示了场景光照α = 1时的类似曲线,其中图像非常暗。**我们的主要观察是,即使在大量处理负载下,Pareto前沿也不包括80Hz以上的帧率。这些图像的信噪比非常低,以至于在高帧率下基本上所有的跟踪信息都被破坏了。由于我们预期的原因,这里的跟踪结果的整体质量要低得多(误差曲线在刻度上更高)

结论
我们的实验对于高帧率跟踪涉及的权衡问题提供了深入的见解。**在完美照明和几乎无限的信噪比下,通过高帧率和高分辨率的组合可以达到最高的精度,只受到可用计算预算的限制。**但是,在使用真实摄像机模型时,由于信噪比和运动模糊之间的权衡,给定光照水平下存在一个最佳帧率。因此,即使预算允许,也不能任意提高帧率,因为会导致图像退化。降低场景照明会将最佳帧率向稍低值转移,这些值具有更高的信噪比和略微更多的运动模糊,对于所有分辨率来说,总体上提高分辨率比提高帧率更快地改善精度。Hasinoff等人也对时限分析进行了研究,但仅针对静态摄像机或简单平面运动的信噪比图像质量评估。
我们的数据集、生成它的渲染脚本和其他材料可以从http://www.doc.ic.ac.uk/~ahanda/HighFrameRateTracking/获取。我们希望这将进一步激发对于与实际视觉系统设计相关的高帧率跟踪的应用和理论研究。我们的数据集也可以用于分析其他许多3D视觉问题。

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

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

相关文章

不添加端口号访问非80网站

自己用树莓派搭了个网站,由于某些原因,不能使用80端口,但又想访问网站时候不要添加端口号。这时候可以更换下DNS服务器,如使用cloudflare,替换成以下两个 参考文章 https://www.cnblogs.com/beidaxmf/p/16744589.html…

常见列表字典排序

一、列表排序 demoList [1, 3, 2, 4, 9 ,7]res sorted(demoList) # 默认升序# 降序 # res sorted(demoList, reverseTrue)print(res)二、字典排序 demoDict {"篮球": 5, "排球": 9, "网球": 6, "足球": 3}# sorted排序 res so…

Python_ithheima_第二阶段

第一章 01-初识对像 02 类的成员方法 03 类和对象 04 构造方法 05 魔术方法 06 封装 07 封装的课后练习题讲解 08 继承的基础语法 pass关键字的功能是“语法补全” 同名成员或方法,谁先来谁优先级高 09 复写父类成员和调用父类成员 10 变量的类型注解 11 函数和方法…

gitee-快速设置

快速设置— 如果你知道该怎么操作,直接使用下面的地址 HTTPS SSH: gitgitee.com:liuzl33078235/esp-idf.git 我们强烈建议所有的git仓库都有一个README, LICENSE, .gitignore文件 初始化 readme 文件 Git入门?查看 帮助 , Visual Studio / TortoiseG…

RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列

目录 一、RabbitMQ 集群 1.1、前言 1.2、普通集群 1.3、镜像集群 1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言 前面我们已经解决了消息可靠性问题,以及延迟消息问题 和 消息堆积问题. 这最后一章,我们就来解决以下 mq 的可用性 和 并发能力. 1.2、…

企业贸易站官网是HTML模板源码,提供完整源代码

企业贸易站官网是HTML模板源码,提供完整源代码二改的是 为了一起学习所以就分享出来了 有能力的可以自己做成主题配合帝国或者WordPress系统 (访问密码:2971)无需解压密码 源代码:https://url53.ctfile.com/f/20638…

Vue的自定义事件(Custom Events):实现组件间通信的强大工具

Vue的自定义事件(Custom Events):实现组件间通信的强大工具 Vue.js是一款流行的JavaScript框架,用于构建交互式的Web应用程序。在Vue中,组件是构建应用程序的基本单元,它们之间的通信对于构建复杂的应用非…

模拟实现offsrtof

写一个宏,计算结构体中某变量对于首地址的偏移 设计思路: 1.偏移量,用每个所求元素的地址减去结构体初始值的地址可得 2.如计算图示,第一个元素的偏移量结构体初始值必为0,第二个为4,其次为6,…

微信小程序更改AI类目-深度合成-AI绘画/AI问答教程

实测截图 准备材料: 1.营业执照 2.企业公章 一、首先我们需要到百度智能云进行企业认证 https://cloud.baidu.com/ 注册登录后进行企业认证 认证成功后申请千帆大模型平台和AI作画 开通付费服务 开通完以后点击右上角财务 选择合同管理 申请合同 将所有的选…

如何利用Arcgis进行地统计学分析(一):地统计学分析概念及其分析流程

一、地统计分析概念 地统计(Geostatistics)又称地质统计,也可以称为空间统计分析,其是统计学的一个分支。地统计学是以区域化变量理论为基础,以变异函数(variogram)为基本工具来研究分布于空间&…

Python 潮流周刊#21:如何提升及测量 Python 代码的性能?

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中三则分享,不代表全部内容都是该主题,特此声明。 本周刊由 Python猫 出品,精心筛选国内外的 250 信息源,为你挑选…

ruoyi-nbcio增加websocket与测试页面

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 为了后面流程发起等消息推送&#xff0c;所以需要集成websocket。 1、后端增加websoket支持 首先在framework模块里的pom.xml增加websocket <dependency…

肖sir__项目实战讲解__004

项目实战讲解 一、项目的类型 金融类&#xff1a; 保险(健康险理财险)、证券、基金(股票型基金、混合型基金、指数型基金、债券型基金、 天天基金网&#xff08;ETF基金、货币型基金、量化基金)、银行、贷款、信用卡、外汇、二元期权、期货原油、blockchain、 数字货币、黄金白…

Nginx环境搭建、负载均衡测试

Nginx环境搭建、负载均衡测试 系统环境&#xff1a; win10&#xff0c;IDEA2020&#xff0c;JDK8 一、nginx环境搭建 1.ngxin下载 Nginx官网下载&#xff1a; http://nginx.org/en/download.html Nginx有三种版本&#xff0c;分别是Mainline version&#xff08;开发版&…

Vue load 页面报错:Error: Request failed with status code 404 ###createError.js

vue 项目 npm run dev 之后一切正常 在打开页面 http://localhost:8080/ 的时候后台报错 Error: Request failed with status code 404 at createError (\node_modules\axios\lib\core\createError.js) 网上各种查找原因&#xff0c;说是后台接口对接跨域问题&#xff0c;但…

C++——list

作者&#xff1a;几冬雪来 时间&#xff1a;2023年9月24日 内容&#xff1a;C板块list知识讲解 目录 前言&#xff1a; 什么是list&#xff1a; 遍历list&#xff1a; insert&#xff1a; find&#xff1a; insert与erase&#xff1a; merge&#xff1a; unique&am…

TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT

一 TLS优化手段 TLS 为了提升握手速度而提出优化手段,主要是减少TLS握手中RTT消耗的时间关于session cache和session ticket,nginx关于ssl握手的地方都有影子 [指令] https面经 ① session 缓存 resume: 重用,复用 案例&#xff1a; 第二次访问www.baidu.com 说明&#x…

Linux-多路转接-epoll

epoll 接口认识epoll_createepoll_ctlepoll_wait epoll工作原理在内核中创建的数据结构epoll模型的一个完整工作流程 epoll工作模式LT-水平触发ET-边缘触发两种方式的对比 epoll的使用场景对于poll的改进惊群效应什么是惊群效应如何解决惊群效应原子操作/mutex/spinlock如何选择…

数据结构(java)--队列1

一、我们还是依旧引入一个小例子&#xff08;银行排队&#xff09;&#xff1a; 需要取号排队&#xff0c;服务完下一个 二、队列介绍 1&#xff09;队列是一个有序列表&#xff0c;可以用数组或是链表来实现 2&#xff09;遵循先入先出的原则。即&#xff1a;先存入队列的数…

世界前沿技术发展报告2023《世界信息技术发展报告》(三)量子信息技术

&#xff08;三&#xff09;量子信息技术 1. 概述2. 量子计算2.1 阿里巴巴达摩院成功研制两比特量子芯片&#xff0c;单比特操控精度超99.97%2.2 加拿大Xanadu公司开发出可编程光量子计算机2.3 美国英伟达公司为经典-量子混合计算推出开发架构2.4 日本国家自然科学研究所开发出…