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

ICCV 2023|Occ2Net,一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法...

本文为大家介绍一篇入选ICCV 2023的论文,《Occ2Net: Robust Image Matching Based on 3D Occupancy Estimation for Occluded Regions》, 一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法。

36aac781fe1da456cda145cf336000ab.png

论文链接:https://arxiv.org/abs/2308.16160

开源代码:https://github.com/megvii-research/Occ2net/tree/main

总体思路

图像匹配是各种视觉应用中的基础和关键任务,如:同时定位和映射(SLAM),图像检索等,这些任务都需要精确的姿态估计。然而,大多数现存的方法忽视了由相机运动和场景结构引起的对象间的遮挡关系。在本文中,我们提出了一种新颖的图像匹配方法Occ2Net,该方法使用3D占位图模型来描述遮挡关系,并推断出被遮挡区域的匹配点。借助占位估计(OE)模块编码来归纳偏差,它大大简化了构建一个多视图一致的3D表示的过程,同时该表示能够整合多视图信息。再结合遮挡感知(OA)模块,通过引入注意力层和旋转对齐,实现了被遮挡点和可见点的匹配。我们在真实世界和模拟数据集上评估了我们的方法,结果显示其在多项指标上,尤其是在遮挡场景下,优于当前最先进的方法。

任务背景以及解决思路

图像匹配是各种视觉应用中的基础和关键任务,例如SLAM(同时定位与地图创建)和图像检索等。它的目标是在两幅或更多的图像中识别和对应相同或相似的结构/内容。图像匹配可以分为两类:基于特征的方法和密集式方法。基于特征的方法从图像中提取稀疏的关键点和描述符,然后基于相似性指标进行匹配;而密集式方法是估计图像像素或区块之间的密集对应关系。

042439a459b140a23a1fa7d4ce73658b.png

然而,这两种方法都无法很好地应对遮挡情况,遮挡在真实世界环境中是常见的。上图展示了这些挑战的一个例子。由于相机运动,两个图像的视差很大。尽管存在大量的重叠区域,但大的视差导致了遮挡,大大减少了可见匹配对的数量。此外,在这个例子中,场景中的地面和墙壁纹理都比较低,两个可以辨别的显示器被标记为绿色和红色的遮罩,指示在图像(b)中可见但在图像(a)中被遮挡的区域。这些因素使得现有的算法难以提取出足够的匹配对进行相机姿态估计。类似的情况在室内导航或自动驾驶中也很常见。为了解决这些问题,我们提出了一种新的图像匹配方法,称为Occ2Net。它不仅匹配可见的点对,还可以匹配被遮挡的点和可见的点。

基于这个观察,我们设计了Occ2Net来匹配3D点。参照NeRF,我们将每个像素视为从相应相机发出的一条射线。NeRF通过在射线上等间隔采样来获取3D点,并通过可微分渲染学习它们的信息。然而,在匹配算法中,我们在推理时没有姿态信息,所以我们将射线上的采样简化为两个点:一个可见点和一个被遮挡的点。在训练时,我们使用真实深度和姿态来重新投影并确定一个3D点是被遮挡还是可见。

基于这些简化,Occ2Net将可见点之间的匹配扩展到可见点与遮挡点之间的匹配。为了实现带有3D显著性的匹配,我们使用了一个3D占用估计(OE)模块,这大大简化了多视角3D表示方法。由于3D匹配的难度、占用大量存储空间以及占用估计的误差,我们没有使用整个图像的3D占用来估计匹配,而是采用了粗到精的结构。在粗糙的步骤中,我们使用了遮挡感知(OA)模块来获取每个子块之间的匹配,OE模块则用于获取每个子块中的精细匹配。

我们在两个数据集上评估我们的提出的方法:ScanNet[1]和 TartanAir[2],这些数据集包含了各种程度遮挡的现实和模拟场景。我们使用了几种衡量标准,将我们的方法与几种最先进的基于特征的方法以及密集方法进行了比较。实验结果显示,我们的方法在这两个数据集上都取得了优越的准确度,超过了现有方法很多。而且,我们的方法在处理遮挡情况下展示出了高的稳健性和效率。

总的来说,我们提出了一种能够识别遮挡点的图像匹配算法,该算法在真实世界和合成数据集上均优于最先进的方法。具体来说,我们的贡献如下:我们提出了一种新颖的能够识别遮挡的图像匹配算法Occ2Net,该算法使用3D占用模型来描绘物体之间的遮挡关系,并推断出被遮挡区域内匹配点的位置。我们将一个占用估计(Occupancy Estimation, OE)模块和一个遮挡感知(Occlusion-Aware, OA)模块结合起来,使用具有占用估计的粗到精结构,实现可见-被遮挡匹配。我们的实验显示Occ2Net在真实世界数据集ScanNet和模拟数据集TartanAir上都实现了最好的姿态估计精度。

实现方法

51e2a2fa6df15b1131747494d38eb779.png

上图展示了我们的Occ2Net的概述,它通过隐式模拟物体-遮挡关系,帮助在遮挡下进行匹配。我们的方法已经在各种可见-可见和可见-遮挡的情况下进行了广泛的测试,取得了与最新技术方法相当的成果。然而,在这一部分里,我们的主要关注点主要是挑战性较高的可见-遮挡匹配问题。

特征提取模块

我们的特征提取有三个主要功能:粗特征F的提取,精细特征FG的提取,以及生成用于3D占据估计的张量OF和OV。为了匹配可见点和遮蔽点,我们使用了一个大感受野的金字塔结构,并为不同的尺度添加位置编码。由于相机距离的不同,金字塔结构有助于识别不同尺度的同一物体。为了成功地匹配遮蔽区域和可见区域,我们扩大了金字塔结构的感知范围,并在匹配过程中使用了更多周围信息。如图1所示,图像中包含椅子的周边区域,在椅子部分有所不同,但周围区域非常相似。这是一种常见的现象,即匹配到的遮挡区域和可见区域周围的图像特征是相似的。我们还添加了不同尺度的位置编码,这丰富了特征的位置信息,以便从上述相似的周围区域准确推断出遮挡点的偏移量。

OA模块

我们设计了OA模块来实现粗略的匹配。OA模块主要由两部分组成:注意力组件和旋转对齐。注意力组件通过自注意力和交叉注意力,加深了对整个图像结构信息的理解,使得特征更有利于粗略匹配。旋转对齐旨在更好地适应不同视角之间的不同旋转,使得可见和被遮挡的部分更易于匹配。

  • 旋转对齐

c731b256b59186ef14d682fad3b927bf.png

旋转对齐选择具有适当旋转角度的特征。在注意力组件之后,每个特征保留其接受区域的子块信息。左图的特征经过适当的旋转后,会更接近于右图的特征,这进一步可以感知遮挡并使块匹配更加容易。例如,如上图所示,我们想要匹配图(a)和图(b)中由箭头指示的点。图(a)中的点被遮挡,在图(b)中可见。在粗略匹配阶段,我们需要匹配两个绿色的块。然而,由于遮挡区域的存在,两个块的特征会稍有不同。尽管我们在特征提取中扩大了接受野,并引入了更多周围信息,但我们不能消除遮挡的影响。旋转对齐的目标是增加两个块的特征相似性。考虑到我们使用2D旋转来补偿3D相机姿态的差异,图像的不同部分的旋转角度应该不同。为了防止旋转改变匹配块的索引,我们开发了一个局部特征旋转算法,对每个块特征进行局部旋转。由于我们不知道适当的旋转角度,我们使用gumbel softmax来选择最佳匹配的旋转角度。

b639fdb7a8df47725dc44e29d12bfc39.png

2a0a476ea607ffd1d4bbc6106e149b62.png

7257d85f6ddbc24e04bc05ba46737857.png

因为我们不知道真实的旋转角度,根据经验我们选择0度和30度作为旋转角度。

OE模块

在获取粗略级别的子块匹配后,我们利用OE模块进行细致匹配。对于可见子块中的点,我们使用LoFTR子模块生成的热图计算与匹配子块中心的偏移。对于被遮挡子块中的点,根据其周围可见内容推断出匹配点的位置,这些内容是通过特征提取和本地3D占位得到的。OE模块被用来计算精确匹配点的位置。首先,我们设计了一个3D占位估计模块。对每一张图,我们通过特征提取得到两个张量OF和OV。我们计算一个4D张量作为OF和OV的外积,以表示估计的3D占位。

e452c081ccee754638ffd97e68103f75.png

基于真实深度和相机姿势,我们计算真实的3D占用作为监督。我们将在loss部分解释3D占用损失。然后,我们通过注意力模块将估计的3D占用和精细特征相结合。最后,基于两个图像的局部特征和3D占用,我们可以推断出每个匹配点的具体位置。使用粗到精的结构,并且只在精细结构中使用3D占用估计,有两个原因:1. 已经证明粗到精的结构对于可见点之间的匹配是有效的。2. 单眼模型通过3D占用估计是不准确的,而推断遮挡点是困难的。使用粗到精的结构,同时将精细特征与3D占用相结合,使得可以使用从3D占用估计出的3D信息来推断遮挡点的位置。因为先进行了粗匹配,推断的误差可以控制在一定范围内。例如,如上图所示,我们试图匹配左图和右图中的绿色框。匹配点的特征应与3D占用一致。我们可以从3D占用推断出,图中的箭头指示了一个精细匹配对。

loss

  • 粗粒度匹配 loss

我们的网络将以下情况视为有效匹配:可见与可见的子块、可见与遮挡的子块、遮挡与可见的子块。根据真实的相机位置和深度,我们计算左图像块的再投影。当一个子块的投影深度大幅度大于右图像对应的深度时,我们将该子块视为在右图像中被前方的物体遮挡。我们定义图像的遮挡点与像素总数的比率为遮挡比例。我们获取了三组带有监督的子块匹配数据:可见-可见匹配、可见-遮挡匹配和遮挡-可见匹配。

参考LoFTR的loss,有:

5254e2a96d409babcf50f3d3fe0b9683.png

0a1f3cad66792cf3ad5850abe16bc346.png

2c9b63a2fa8d93c6115ea4aa66210593.png

36bb3883f74e79d7094ce62f84eb83a1.png

1423a76c35b403877cf9ff87101212bb.png

a0cbb5095aab14aa109bb3f231eddb78.png

  • 3D占位loss

为了从真实深度和相机姿态中生成真实的3D占用,我们采取了以下步骤:通过结合两张图片的深度和相机姿态,创建一个真实的点云。将点云转化为体素表示,通过将3D空间划分为小立方体单元,并根据其3D占用情况给每个单元分配一个值。使用相机的姿态作为世界坐标系的原点,并将深度分辨率设置为64个体素,将体素表示投影到当前图片上。

64930d46239d098fd7944589a8f7d5d3.png

  • 细粒度匹配Loss

参考LOFTR

3d7f34299b16627418a215a52791ddd2.jpeg

  • 整体Loss

fbea2ef38a72150fefb2ba3a6059628f.png

实验

我们通过在真实数据集ScanNet和模拟数据集Tartanair上的实验来验证我们方法的有效性。虽然MegaDepth[3]是一个常用于图像匹配的数据集,这也是一个真实的数据集,但我们没有采用它,因为它的深度地图误差比ScanNet的大。TartanAir是一个提供真实相机姿态和深度信息的模拟数据集,包括了像MegaDepth一样的室外场景。我们使用ScanNet和TartanAir数据集来展示在深度不准确的情况下,该算法的泛化能力和适应性,以及其在室内和室外场景中的有效性。

我们使用ScanNet来演示我们的姿态估计方法的有效性。ScanNet是一个RGB-D视频数据集,包含来自1500多次扫描的250万视图,这些视图注有3D相机的姿态、表面重构以及实例级的语义分割。参照SuperGlue[4]的评估程序,我们在训练中抽取了230百万的图像对,它们的重叠比例在0.4到0.8之间。图像对的重叠比例是通过使用深度和姿态将一幅图像重新投影到另一幅图像并计算在投影后不超出边界的像素的比例来定义的。我们在测试集中的1500对图像上评估我们的方法。所有的图像和深度图都被调整到了640x480的大小。

TartanAir是一个用于评估SLAM算法的具有挑战性的合成数据集。该数据集包含室内和室外场景,涵盖了各种各样的场景和运动模式。数据是在各种光照条件、天气以及移动物体存在的情况下,在逼真的模拟环境中收集的。与使用物理数据收集平台收集数据的ScanNet不同,TartanAir数据集中的深度和位姿完全准确。我们按照与Droid-SLAM相同的训练测试切分方式构建了测试集,该测试集包含32个场景。在每个场景中,我们随机选取了满足重叠比例在0.4和0.8之间且遮挡比率大于0.3的50对图像,从而得到了包含1600对图像的测试集。

  • 实验结果

dcd6aa039160f526c656469ec4a5d36b.png

上图展示了ScanNet、TartanAir-室内和TartanAir-室外的匹配示例。我们将QuadTree LoFTR [5]与我们的结果进行了比较。绿色和黄色的线分别表示QuadTree LoFTR和Occ2Net的正确匹配,而红色的线则代表错误的匹配(误差超过10像素)。我们用紫色的框突出显示了一些匹配对。蓝色的遮罩标注了正确的匹配区域。图(a)的左图和右图分别包含了讲台1和椅子2的不同视角。图(b)的左图包含了墙壁1和2,而且2部分被显示器遮挡。图(b)的右图仅包含墙壁2。图(c)的左图只有灯光1和2,而右图包含了灯光1、2和3。

我们采用和SuperGlue相同的测试方法,下表中展示了姿态错误AUC在阈值为5度, 10度, 20度下的百分比。这里的姿态错误被定义为旋转中的角度误差和平移中的位移误差的最大值。为了恢复相机的姿态,我们使用RANSAC方法[8]解出预测匹配中的本质矩阵。

2e43dfa256b56d174d7feedfb8b2622d.png

如上表所示,我们的方法在ScanNet和TartanAir上的姿态估计精度上都超过了所有竞争对手,展示了我们的方法在室内外、真实和模拟场景中的有效性。Occ2Net-s是Occ2Net-l的一个缩略版本,它没有明确区分可见和遮挡的点,而且所有匹配都共享权重和张量,参数比QuadTree LoFTR少。

共享权重对最终性能有一定的影响。如我们之前解释过的,准确估计有遮挡的匹配点的确切位置是困难的,所以5度的提升效果并不明显。然而,没有共享权重的模型相当于将有遮挡的匹配点和可见的匹配点加在一起。这两种匹配不会互相影响,而且精度的提升是明显的。TartanAir测试集包含了更多遮挡比例大于40%的图像对,所以匹配效果得到了更大的提升。

  • 遮挡对于位姿估计的有效性

9164c154fcaa43ff146a620a1eb19c66.png

我们为了量化分析遮挡对姿态估计的影响,我们计算了ScanNet测试集中所有图像对的遮挡比率。遮挡比率定义为在一张图像中可见但在另一张图像中被遮挡的像素的比率。接着,我们将累积估计误差R和t作为遮挡比率的函数进行绘图。如图所示,在具有高遮挡比率的图像对中,其他算法在姿态估计方面的误差相对较大,而我们的算法仍能在这些具有挑战性的场景中达到较小的姿态误差。

  • 消融实验

903826f0907a89e8c58dac46f5d22243.png

以上表格各实验含义:1)基准线:QuadTree LoFTR。2)基准线+遮挡损失:仅添加可见-遮挡匹配以进行监督;3)Occ2Net -遮挡损失:使用Occ2Net,而不进行遮挡监督;4)基准线+特征提取:使用我们的特征提取骨干网络,取代LoFTR特征提取骨干网络;5)实验4)+遮挡损失:使用我们的特征提取骨干网络并添加可见-遮挡匹配以进行监督;6)基准线+OA模块:添加旋转对齐方法;7)Occ2Net -占用:Occ2Net不进行3D占用估计;8)Occ2Net:我们的方法。

如表格1)和2)所示,仅增加对可见-遮挡点的监控是无效的。为了实现可见点和遮挡点的匹配,需要设计一个能够意识到遮挡并推断遮挡位置的网络结构。比较3)和8),我们的Occ2Net网络需要与遮挡的概念配合,否则效果提升不明显。比较1)和4),我们的特征提取为3D占用估计提供了张量,并且比QuadTree LoFTR特征提取的参数少,这导致了可见点匹配效果差。比较4)和5),我们的特征提取对于遮挡点匹配是有效的。6)与1)的比较说明,增加旋转对齐对于图像匹配是有帮助的。如8)所示,与7)相比,3D占用估计改进了带有遮挡监控的遮挡点匹配。此外,通过同时匹配遮挡和可见点,也增强了可见-可见匹配,从而改善了整体匹配性能。需要注意的是,表格中的所有方法都不能直接与Occ2Net-s进行比较,因为它们包含的参数数量不同。

结论

我们提出了一种考虑到被其他物体遮挡的点的图像匹配方法。我们设计了一种网络结构,名为Occ2Net,它能在一定程度上感知到被遮挡点的存在。Occ2Net利用特征提取获取多尺度的全局和位置特征,这有助于猜测遮挡信息。OA模块使用注意力和旋转对齐,这对于在后续的粗到精的过程中获取更多正确的匹配对非常有用。OE模块使用3D占用估计来结合细节特征进行精细匹配。实验表明,我们的方法实现了这个目标,并大大提高了姿态估计的准确性。我们认为,我们的工作为未来的研究者探索遮挡场景下更好的图像匹配铺平了道路。

然而,尽管我们的网络可以识别被遮挡的点并将它们与可见点进行匹配,但很难找出这些隐藏点的确切位置。尽管我们首先提出了由可见点和隐藏点组成的光线用于图像匹配的想法,但由于数据限制,我们将光线退化为只有两点。在未来,应考虑涉及多层遮挡的更复杂的场景。

参考文献:

[1] Hongkai Chen, Zixin Luo, Lei Zhou, Yurun Tian, Mingmin Zhen, Tian Fang, David Mckinnon, Yanghai Tsin, and Long Quan. Aspanformer: Detector-free image matching with adaptive span transformer. In European Conference on Computer Vision, pages 20–36. Springer, 2022.

[2] Michał Tyszkiewicz, Pascal Fua, and Eduard Trulls. Disk: Learning local features with policy gradient. Advances in Neural Information Processing Systems, 33:14254–14265, 2020.

[3] Wenbo Li, Zhe Lin, Kun Zhou, Lu Qi, Yi Wang, and Jiaya Jia. Mat: Mask-aware transformer for large hole image inpainting. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 10758– 10768, 2022.

[4] Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, and Andrew Rabinovich. Superglue: Learning feature matching with graph neural networks. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 4938–4947, 2020.

[5] Weijing Shi and Raj Rajkumar. Point-gnn: Graph neural network for 3d object detection in a point cloud. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 1711–1719, 2020.

相关文章:

ICCV 2023|Occ2Net,一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法...

本文为大家介绍一篇入选ICCV 2023的论文,《Occ2Net: Robust Image Matching Based on 3D Occupancy Estimation for Occluded Regions》, 一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法。 论文链接:https://arxiv.org/abs/23…...

leetcode - 14. Longest Common Prefix

Description Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”. Example 1: Input: strs ["flower","flow","flight"] Output: "…...

MySQL-查询语句语法(DQL)结构(查询操作 一)

SQL语句 编写顺序 - 执行顺序 1、SELECT 字段列表 4 2、FROM 表名列表 1 3、WHERE 条件列表 2 4、GROUP BY 分组字段列表 …...

SWAT-MODFLOW地表水与地下水耦合

耦合模型被应用到很多科学和工程领域来改善模型的性能、效率和结果,SWAT作为一个地表水模型可以较好的模拟主要的水文过程,包括地表径流、降水、蒸发、风速、温度、渗流、侧向径流等,但是对于地下水部分的模拟相对粗糙,考虑到SWAT…...

工地临时用电之智慧用电:全方位保障用电安全

随着科技进步和智能化的发展,工地用电管理也迎来了智慧化的革新。智慧用电,作为智慧工地的重要组成部分,通过集中式管理和创新的技术手段,为工地提供了全方位的用电安全保障。 针对工地临时用 的现状及系统结构,力安科…...

JumpServer开源堡垒机与爱可生云树数据库完成兼容性认证

近日,中国领先的开源软件提供商FIT2CLOUD飞致云宣布,JumpServer开源堡垒机已经完成与爱可生云树数据库软件的兼容性认证。经过双方联合测试,云树数据库软件(简称:ActionDB)V1.0与杭州飞致云信息科技有限公司…...

信息化发展64

信息化体系 信息化代表了一种信息技术被高度应用,信息资源被高度共享,从而使得人的智能潜力以及社会物质资源潜力被充分发挥,个人行为、组织决策和社会运行趋于合理化的理想状态。 1997年召开的首届全国信息化工作会议,对信息化和…...

什么是全媒体整合营销?如何做好全媒体整合营销呢?

互联网发展进入深水区,目前营销大部分工作都与网络有关,网络营销形成各种分支,媒体平台的类型越来越多,如今的互联网发展背景下企业如何做好网络营销呢?小马识途营销顾问团队普遍认为企业当今应该开展的全媒体整合营销…...

系统集成|第十六章(笔记)

目录 第十六章 信息(文档)和配置管理16.1 文档管理16.2 配置管理 上篇:第十五章、采购管理 下篇:第十七章、变更管理 第十六章 信息(文档)和配置管理 16.1 文档管理 信息系统项目相关信息(文档…...

hive数据库操作,hive函数,FineBI可视化操作

1、数据库操作 1.1、创建数据库 create database if not exists myhive;use myhive;1.2、查看数据库详细信息 desc database myhive;数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的:/user/hive/warehouse内 1.3、创建数据库并指定hdfs存…...

信息学奥赛一本通 2075:【21CSPJ普及组】插入排序(sort) | 洛谷 P7910 [CSP-J 2021] 插入排序

【题目链接】 ybt 2075&#xff1a;【21CSPJ普及组】插入排序&#xff08;sort&#xff09; 洛谷 P7910 [CSP-J 2021] 插入排序 【题目考点】 1. 排序&#xff1a; 插入排序 插入排序示例&#xff1a; #include <bits/stdc.h> using namespace std; int main() {int…...

基于微信小程序的民宿短租酒店预订系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

Python第二次作业(2)【控制台界面】

要求&#xff1a;使用Python输出五个控制台界面 第一张&#xff1a; 代码如下&#xff1a; print(" 英雄联盟商城登录界面 ") print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*") print(" 1.用户登录 &q…...

conda创建环境在Collecting package metadata (current_repodata.json)时报错的解决

conda创建环境在Collecting package metadata (current_repodata.json)时报错的解决 报错信息&#xff1a; Collecting package metadata (current_repodata.json): - ERROR conda.auxlib.logz:stringify(171): Traceback (most recent call last): File “C:\Users\dandelion…...

卤制品配送经营商城小程序的用处是什么

卤制品也是食品领域重要的分支&#xff0c;尤其对年轻人来说&#xff0c;只要干净卫生好吃价格合理&#xff0c;那复购率宣传性自是不用说&#xff0c;而随着互联网发展&#xff0c;传统线下门店也须要通过线上破解难题或进一步扩大生意。 而商城小程序无疑是商家通过线上私域…...

信息化发展65

1.2现代化基础设施 基础设施包括交通、能源、水利、物流等以传统基础设施和信息网络为核心的新型基础设施&#xff0c;在国家发展全局中具有战略性、基础性、先导性作用。统筹推进传统基础设施和新型基础设施建设&#xff0c;打造系统完备、高效实用、智能绿色、安全可靠的现代…...

pytho实例--pandas读取表格内容

前言&#xff1a;由于运维反馈帮忙计算云主机的费用&#xff0c;特编写此脚本进行运算 如图&#xff0c;有如下excel数据 计算过程中需用到数据库中的数据&#xff0c;故封装了一个读取数据库的类 import MySQLdb from sshtunnel import SSHTunnelForwarderclass SSHMySQL(ob…...

处理飞书在线文档导出Word后无法自动编号问题

处理飞书在线文档导出Word后无法自动编号问题 解题思路&#xff1a;处理效果处理代码测试数据 最近工作中经常编写一些文档&#xff0c;有些文档需要多人协作完成。这两天需要完成一个可研的初稿&#xff0c;同事使用了飞书的在线文档。第一次使用飞书进行文档协作&#xff0c;…...

C++刷题 全排列问题

C刷题 全排列问题 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream>using namespace std;const int maxn 11;//P为当前排列&#xff0c;hashTable记录整数x是否已经在P中 int n, P[maxn], hashTable[maxn] {false};//当前处理排列的第index号…...

求数列a+aa+aaa+aaaa+......前n项和,a和n均由输入获得。

求数列aaaaaaaaaa…前n项和&#xff0c;a和n均由输入获得。 输入格式: 输入两个正整数a和n&#xff0c;两个数之间用逗号分隔。 输出格式: 输出"aaaaaaaaaa…和"的形式&#xff0c;详见输出样例。 输入样例: 在这里给出一组输入。例如&#xff1a; 3,6 输出样例:…...

ElementUI之首页导航+左侧菜单->mockjs,总线

mockjs总线 1.mockjs 什么是Mock.js 前后端分离开发开发过程当中&#xff0c;经常会遇到以下几个尴尬的场景&#xff1a; - 老大&#xff0c;接口文档还没输出&#xff0c;我的好多活干不下去啊&#xff01; - 后端小哥&#xff0c;接口写好了没&#xff0c;我要测试啊&#x…...

文心大模型写TodoList项目需求

大模型写TodoList项目需求 提示词 你是一名资深的互联网软件行业产品经理。 现在要设计一个todo-list项目,它有哪些功能和需求? 分条目写出需求大纲。 文心大模型输出 设计一个Todo-list项目时&#xff0c;需要考虑以下功能和需求&#xff1a; 基本功能&#xff1a; 创建任…...

使用applescript自动化trilium的数学公式环境(二)

9.23 ver1 没想到今天很有精神&#xff0c;在玩chatgpt的时候突然想到&#xff0c;为什么不让他帮我写一份代码呢&#xff1f;说干就干。但是&#xff0c;可能是因为我的英语不怎么样&#xff0c;chatgpt生成出来的整个东西实在是菜的抠脚。所以我觉得还是应该自己先想好一个大…...

机器学习与数据挖掘第三、四周

为什么第二周没有呢……因为刚换老师&#xff0c;自学要适应一段时间。 本课程作者之后的学习目标是&#xff1a;实操代码&#xff0c;至少要将作者参加数学建模中用到的数据处理方法都做一遍。 首先&#xff0c;作者复习一下李宏毅老师的两节课程。 机器学习概述 机器学习就…...

黎明加水印微信小程序源码 支持流量主接入

黎明加水印微信小程序源码&#xff0c;支持流量主接入。支持从聊天记录选择文件、相机拍摄、直接选择文件 支持白底、黑底的隐形水印&#xff0c;制作后&#xff0c;通过增加蒙版方能看到水印 纯前端&#xff0c;可嵌入任何项目。 部署教程 1、解压后得到项目文件夹 3、把…...

22 Python的argparse模块

概述 在上一节&#xff0c;我们介绍了Python的datetime模块&#xff0c;包括&#xff1a;datetime模块中一些常用的属性和函数。在这一节&#xff0c;我们将介绍Python的argparse模块。argparse模块是Python的一个标准库&#xff0c;用于编写命令行界面。它可以处理命令行参数和…...

Unity之NetCode多人网络游戏联机对战教程(3)--NetworkObject组件讲解

文章目录 NetworkObjectAlways Replicate As RootSynchronization TransformActive Scene SynchronizationScene Migration SynchronizationSpawn With ObserversDont Destroy With OwnerAuto Object Parent Sync 后话 NetworkObject 为了复制任何Netcode感知属性或发送/接收R…...

正点原子lwIP学习笔记——Socket接口UDP实验

1. Socket接口UDP连接配置 Socket接口的UDP配置流程如下&#xff1a; sin_family 设置为 AF_INET 表示 IPv4 网络协议&#xff1b;sin_port 为设置端口号&#xff0c; 可设置为 8080&#xff1b;sin_addr.s_addr 设置本地 IP 地址&#xff1b;调用函数 Socket 创建 Socket 连…...

连接组学中的机器学习:从表征学习到模型拟合

前言 机器学习(ML)由于其高自动化程度、高灵敏度和特异性优势&#xff0c;在医学影像领域取得了巨大的成功。由于具备这些优势&#xff0c;机器学习已被广泛应用于神经成像数据&#xff0c;目的是提取与感兴趣变量(如疾病状态)相关的特征。这使我们能够形成关于不同条件下大脑…...

数据结构-----二叉树的创建和遍历

目录 前言 二叉树的链式存储结构 二叉树的遍历 1.前序遍历 2.中序遍历 3.后序遍历 二叉树的创建 创建一个新节点的函数接口 1.创建二叉树返回根节点 2.已有根节点&#xff0c;创建二叉树 3.已有数据&#xff0c;创建二叉树 前言 在此之前我们学习了二叉树的定义和储…...

wordpress开启伪静态/哈尔滨seo关键词排名

离散数学实验报告3 文章目录离散数学实验报告3一、实验题目二、实验目的三、实验要求需求分析&#xff1a;输入形式与输入范围概要设计&#xff1a;使用的数据结构与算法&#xff1a;程序流程&#xff1a;详细代码一、实验题目 实验题目&#xff1a;平面图判定及对偶图的求解 实…...

做网站政府扶持/南京seo培训

内容来源&#xff1a;2017年5月20日&#xff0c;腾讯高级软件工程师吴友强在“中生代技术沙龙系列之互联网大数据”进行《腾讯云大数据实战》演讲分享。IT 大咖说作为独家视频合作方&#xff0c;经主办方和讲者审阅授权发布。阅读字数&#xff1a;1954 | 3分钟阅读嘉宾演讲视频…...

河南网站排名优化价格/搜狗推广登录平台官网

作为系列文章的第六篇&#xff0c;本篇主要在前文的探索下&#xff0c;针对描述一下 Widget 中的一些有意思的原理。 前文&#xff1a; 一、Dart语言和Flutter基础二、 快速开发实战篇三、 打包与填坑篇四、Redux、主题、国际化五、 深入探索首先我们需要明白&#xff0c;Widge…...

整人关不掉的网站怎么做/外贸营销型网站设计

calendar是与日历相关的模块&#xff0c;calendar模块文件里定义了很多类型&#xff0c;主要有Calendar&#xff0c;TextCalendar以及HTMLCalendar类型。其中&#xff0c;Calendar是TextCalendar与HTMLCalendar的基类。该模块文件还对外提供了很多方法&#xff0c;例如&#xf…...

购物网站seo/百度关键词搜索量统计

1. 定义定义一个模板结构(框架,关键步骤,固定流程)&#xff0c;将具体内容延迟到子类去实现,基于“继承”2. 应用场景1. 有多个子类共有的方法&#xff0c;且逻辑相同2. 重要的、复杂的方法&#xff0c;可以考虑作为模板方法3. 优缺点优点&#xff1a;提高代码复用性将相同部分…...

无锡本地网站有哪些/惠州seo外包平台

我在垂直链中有两个视图(viewA,viewB). viewA的宽高比应始终为1&#xff1a;1,而viewB的高度是动态的(可能为400dp,可能为700dp)预期成绩&#xff1a;当viewB的高度太大而无法容纳屏幕中的两个视图时,应减小viewA的宽度(保持宽高比).实际结果&#xff1a;如果viewB的高度太大,则…...