『论文阅读|2024 WACV 多目标跟踪Deep-EloU|纯中文版』

news2024/11/18 18:39:09

论文题目: Iterative Scale-Up ExpansionIoU and Deep Features Association for Multi-Object Tracking in Sports

论文特点: 作者提出了一种迭代扩展的 ExpansionIoU 和深度特征关联方法Deep-EIoU,用于体育场景中的多目标跟踪,旨在解决非线性、不规则运动、相似外观的在线短时多目标跟踪问题,实验表明,提出的方法对于提高跟踪鲁棒性是有效的,缺点就是该方法目前仅适用于短时跟踪,可能无法解决目标短暂消失入镜重识别问题,实时性较差。

论文下载链接: https://arxiv.org/abs/2306.13074。

摘要

基于深度学习的目标跟踪算法推动了多目标跟踪算法的显著进步。然而,目前的跟踪方法主要关注行人或车辆这类简单、规则的运动模式。这就为运动员等非线性、不规则运动目标的跟踪算法留下了空白。此外,当物体运动违反卡尔曼滤波器的线性假设时,在最近的跟踪算法中依赖卡尔曼滤波器就会出现问题。为了克服这些问题,Huang等人提出了一种新颖的在线鲁棒多目标跟踪方法,名为ExpansionIoU (Deep-EIoU),主要用于运动场景的多目标跟踪。与传统方法不同的是,放弃了卡尔曼滤波器的使用,而是利用迭代扩展 ExpansionIoU 和深度特征来实现运动场景中的鲁棒跟踪。这种方法无需采用更强大的检测器就能实现卓越的跟踪性能,同时还能保持在线跟踪过程。提出的方法在跟踪不规则运动物体方面效果显著,在 SportsMOT 数据集上获得了 77.2% 的 HOTA 分数,在 SoccerNet-Tracking 数据集上获得了 85.4% 的 HOTA 分数。在涵盖各种运动场景的各种大规模多目标跟踪基准测试中,该方法的表现优于之前所有最先进的跟踪器。代码和模型可在 https://github.com/hsiangwei0903/Deep-EIoU 上获取。

1 引言(Introduction)

多目标跟踪(MOT)是一项基本的计算机视觉任务,旨在跟踪视频中的多个物体,并在每一帧中对其进行定位。最近的大多数跟踪算法 [33, 1, 28, 4],主要侧重于行人或车辆跟踪,在公共基准测试中取得了巨大进步 [19, 8, 11]。然而,这些最先进的算法在难度较高的数据集上,尤其是那些包含体育场景的数据集上表现不佳[7, 6, 36]。鉴于自动战术分析和运动员运动统计(包括跑步距离和移动速度)等应用对体育分析的需求日益增长,体育多目标跟踪领域需要更多关注。

与行人或车辆的多目标跟踪不同,运动场景中的 MOT 具有更高的难度,由于多种原因,包括如图 2 所示的运动场景中高强度运动造成的严重遮挡、如图 3 所示的同队球员之间因球衣颜色相同而产生的相似外观,以及一些运动动作(如篮球中的交叉步、足球中的滑铲或排球中的扣球)造成的不可预测运动。由于上述原因,以往利用外观-运动融合[34, 28]或单纯基于运动[33, 5, 4]方法的跟踪器在体育场景中的几个主要 MOT 基准[6, 7]上难以进行稳健跟踪。 alt alt

为了解决这些问题,在本文中提出了一种新颖、稳健的在线多目标跟踪算法,专门针对具有不规则和不可预测运动的物体而设计。实验结果表明,该算法能在跟踪过程中有效处理运动员的不规则和不可预测运动。在两个大型公共基准测试[7]中,该算法的性能优于所有跟踪算法,而且在保持算法在线的同时,没有引入额外的计算损失。因此,在本文中提出了三个主要贡献:

  • 提出了一种简单而有效名为 ExpansionIoU 的新型关联方法,以专门应对体育跟踪中的挑战,可用于跟踪具有不规则运动和相似外观的物体。

  • 提出的迭代扩展 ExpansionIoU 进一步利用了深度特征关联,可用于体育场景中稳健的多目标跟踪。

  • 所提出的方法在 SportsMOT [7] 数据集上实现了 77.2 HOTA,在 SoccerNet-Tracking 数据集 [6] 上实现了 85.4 HOTA,大大优于之前所有的跟踪算法。 alt

2 相关工作(Related Work)

2.1 基于卡尔曼滤波器的多目标跟踪算法(Multi-Object Tracking using Kalman Filter)

现有的大多数跟踪算法 [33, 4, 5, 28, 35, 30, 14, 12, 13, 29] 都采用卡尔曼滤波 [15] 作为物体运动建模的方法。卡尔曼滤波器可将物体运动视为一个线性动态系统,并可根据物体在前几帧的运动情况预测其下一帧的位置。卡尔曼滤波器在多个公共基准测试中展示出了多目标跟踪的有效性 [19, 8, 23]。然而,由于卡尔曼滤波器的线性运动和高斯噪声假设,卡尔曼滤波器可能无法跟踪非线性运动的物体。基于这个原因,OC-SORT [5] 提出了几种方法,包括以观测为中心的重新更新,在跟踪过程中修改卡尔曼滤波器的参数,防止在未跟踪物体时误差累积。该方法在多个公共数据集上展示出跟踪不规则运动物体的有效性[23, 7]。

2.2 基于定位的多目标跟踪算法(Location-based Multi-Object Tracking)

在高帧率输入视频序列中,由于帧率较高,物体在帧间的位置偏移相对较小,因此位置信息成为帧间关联的可靠线索。有几种方法[22, 14]利用边界框距离作为边界框关联的损失,而最近的一些工作[31]则利用不同的 IoU 计算方法,包括 GIoU [20]、DIoU [38] 和 BIoU [31],来进行帧间边界框关联,这些方法在多目标跟踪中也展示出了有效性。

2.3 基于外观的多目标跟踪(Appearance-based Multi-Object Tracking)

随着近年来物体 ReID 模型[39]和训练技巧[17]的发展和改进,许多跟踪算法都将 ReID 纳入了关联过程。有些方法使用联合检测和嵌入架构 [35, 27],同时进行检测和物体嵌入,以实现实时跟踪。而其他方法[28, 1]则应用其他独立的 ReID 模型来提取检测的嵌入特征进行关联。基于外观的跟踪方法通过额外的外观线索来提高跟踪的鲁棒性,但有时外观线索可能会因为一些原因而不可靠,这些原因包括遮挡、被跟踪物体之间的外观相似、物体旋转或光照条件导致的外观变化等。

2.4 体育运动中的多目标跟踪(Multi-Object Tracking in Sports)

在团队运动中,人们对球员在比赛中的动作进行了大量监控研究。这种监测不仅能自动记录比赛统计数据,还能让体育分析人员从视频场景理解的角度获得全面信息。与行人的 MOT 不同[19],体育场景中的 MOT 具有更高的挑战性,原因包括目标的运动速度更快、不规则,同队球员的外观相似,以及体育运动的激烈特点导致的更严重的遮挡问题。最近的大多数体育运动中的移动定位方法都采用了通过检测进行跟踪的模式,并整合了一个重新识别网络来生成用于关联的嵌入特征。

Vats 等人[25] 结合球队分类和球员识别方法,提高了曲棍球的跟踪性能。同样,Yang 等人[32] 和 Maglo 等人[18] 的研究表明,通过定位场地和球员,足球的跟踪结果可以更加准确。此外,Sang ̈ uesa 等人[21] 利用人体姿势信息和动作作为嵌入特征来增强篮球运动员的跟踪。Huang 等人[14] 则结合 OC-SORT [5] 和基于外观的后处理技术,对篮球、排球和足球等多种运动场景进行跟踪[7]。

3 提出的方法(Proposed Methods)

alt

提出的方法遵循经典的 "跟踪-检测 "范式,无需使用未来信息也能实现在线跟踪。首先在每个输入帧上应用目标检测器 YOLOX,然后根据提取的外观特征之间的 相似性 以及小轨迹和检测之间的 ExpansionIoU 等几条线索进行关联。在得到关联损失后,采用匈牙利算法来获得小轨迹和检测之间的最佳匹配。

3.1 基于外观的关联(Appearance-based Association)

外观相似度是帧间物体关联的有力线索,相似度可以通过外观特征之间的余弦相似度来计算,也可以用来过滤掉一些不可能的关联。根据余弦相似度可以直接得到外观关联的损失Cost_A,计算公式如下:

这里,a 和 b 分别是小轨迹的外观特征和检测的外观特征。余弦相似度越高,表示外观相似度越高,余弦相似度越低,表示小轨迹的外观和检测的外观不同。

3.2 与 ExpansionIoU 关联(Association with ExpansionIoU)

受之前利用扩展边界框进行关联来处理运动员的快速和不规则运动的工作[31]的启发,提出了一种在大运动量和非线性运动下进行跟踪的鲁棒关联方法ExpansionIoU(EIoU)。与之前的工作 [31]不同,发现在关联过程中进一步扩大边界框可以显著降低在运动员跟踪中获得更好的性能。传统的 IoU 一直是基于位置的跟踪方法的基石,但它往往缺乏灵活性,当跟踪器和检测边界框在相邻帧之间共享较小的 IoU 或没有 IoU 时,无法顾及物体的大运动量。EIoU 通过修改边界框的尺寸、扩大其宽度和高度以及考虑更广泛的物体关系来解决这一局限性,从而恢复体育场景中运动量大的物体的关联性。边界框的扩展由扩展尺度 E 控制,给定一个高度为 h、宽度为 w 的原始边界框,可以计算出扩展长度 h⋆和 w⋆,如下所示:

原始边界框根据扩展长度进行扩展。将原始边界框的左上角和右下角坐标分别表示为 (t, l),(b, r),可以得出扩展边界框的坐标为 :

扩展后的边界框进一步用于计算小轨迹和检测对之间的 IoU,注意扩展同时应用于小轨迹的最后一帧检测和检测器的新检测,计算出的 EIoU 用于相邻帧之间的匈牙利关联。扩展边界框的操作不会改变几个重要的对象信息,如边界框中心、长宽比或外观特征。通过简单地扩展搜索空间,可以关联常见的目标快速移动时,尤其是在体育比赛中那些IoU 较小或没有 IoU 的小轨迹和检测结果。

3.3 置信度分数感知匹配(Confidence Score Aware Matching)

根据 ByteTrack [33],在匹配过程中会给高置信度分数的检测赋予更高的权重。高分检测通常意味着较少的遮挡,因此更有可能保留更可靠的外观特征。因此,第一阶段的高分检测匹配基于外观和 ExpansionIoU 的关联损失,记为 Cstage1。第一阶段的匹配建立在几轮迭代关联的基础上,并逐步扩大扩展规模,这将在第 3.4 节中讨论。在低分检测的第二轮匹配中,只使用 ExpansionIoU,损失记为 Cstage2。

在第一匹配阶段,放弃了之前几项研究中使用的 IoU-ReID 加权损失法 [34,28],其中损失是外观损失 CA 和 IoU 损失 CIoU 的加权和:

相反,作者采用与 BoT-SORT [1] 类似的策略来处理基于外观的关联。更具体地说,首先通过设置外观和ExpansionIoU(EIoU)的损失阈值来过滤掉一些不可能的关联。如果其中一个损失大于相应的阈值,则调整后的外观损失 C ˆ A 设为 1,否则 C ˆ A 设为其外观损失CA 的一半。最后,第一阶段的最终关联损失 Cstage1 设为外观损失 C ˆ A 和 EIoU 损失 CEIoU 的最小值。 τA 和 τEIoU 表示损失过滤器的阈值,可以将外观成本 C ˆ A 写成:

第一阶段匹配的最终损失 Cstage1 将是调整后的外观损失 C ˆ A 与 EIoU 损失 CEIoU 之间的最小值。

而第二匹配阶段 Cstage2 的关联损失将只使用 EIoU 损失 CEIoU。

3.4 迭代扩展ExpansionIoU(Iterative Scale-Up ExpansionIoU)

正如之前使用扩展边界框进行关联的工作[31]所示,边界框的扩展量是跟踪过程中一个关键而敏感的超参数,跟踪器的性能在很大程度上会受到超参数选择的影响。在现实世界中,有几个因素可能会限制我们调整扩展尺度并提高跟踪性能,其中包括:1)在线跟踪要求。运动员跟踪系统的一个常见要求是系统需要在线运行,在这种情况下,通过实验调整扩展尺度和调整性能是不可能的。2) 无法获取测试数据。在现实世界中,往往无法获得测试数据的真实值,这就不可能找到完美的关联扩展尺度。基于上述原因,作者提出了一种新颖的迭代扩展 ExpansionIoU 关联阶段来实现鲁棒跟踪,实验结果表明,在不进行任何参数调整的情况下,该算法可以在公共基准上始终保持 SOTA 性能。在跟踪过程中,作者选择基于逐渐增大的 Et 来迭代进行 EIoU 关联,而不是对最佳扩展尺度 E 进行超参数调整。在每次扩展迭代中,当前迭代的扩展尺度 Et 可由以下公式得出:

其中,E_initial是初始扩展尺度,λ 表示迭代扩展过程的步长,t 代表迭代次数,从 0 开始。 通过这种方法,可以先对扩展尺度较高的轨迹和探测对进行关联,然后逐步搜索重叠面积较小的轨迹和探测对,从而增强关联过程的鲁棒性。需要注意的是,迭代扩展过程只适用于高分检测关联,一旦迭代次数达到总迭代次数 t_total,高分检测关联就会停止,跟踪器将进入低分检测关联阶段。

4 实验和结果(Experiments and Results)

alt

4.1 数据集(Dataset)

alt

在两个大型多体育项目球员跟踪数据集(即 SportsMOT [7] 和 SoccerNet-Tracking [6])上对跟踪算法进行了评估。

SportsMOT 包含 240 个视频序列,超过 150K 个帧和 160 多万个边界框,收集自篮球、足球和排球等 3 种不同的运动项目。与 MOT 数据集 [19, 8]不同,SportsMOT 具有更高的难度,包括1) 目标的快速和不规则运动;2) 更大的摄像机运动;3) 同一球队球员的相似外观。

SoccerNet-Tracking 是一个大规模的多目标跟踪数据集,由 201 个足球比赛序列组成。每个序列长度为 30 秒。该数据集包含 225,375 个帧,3,645,661 个注释边界框和 5,009 个轨迹。与 仅关注体育运动员在球场上的跟踪情况的SportsMOT 不同,SoccerNet 的跟踪目标包含多个对象类别,包括普通球员、守门员、裁判和足球。

4.2 检测器(Detector)

作者选择 YOLOX [10] 作为目标检测器,以实现实时和高精度的检测性能。现有的几个跟踪器 [33, 5, 1, 31] 也采用了 YOLOX 作为检测器,这也使得这些跟踪器与作者的跟踪器之间的比较更加公平。作者使用 YOLOX 官方 GitHub 仓库提供的 COCO 预训练 YOLOX-X 模型[10],并使用 SportsMOT 训练集和验证集对该模型进一步微调。 epochs设置为80,输入图像大小为 1440 × 800,数据增强包括 Mosaic 和 Mixup。使用权重衰减为 5 × 10-4 和动量为 0.9 的 SGD 优化器。带有1 epoch的加热和余弦退火计划的初始学习率为 10-3,这与 ByteTrack [33] 的训练步骤相同。至于SoccerNet-Tracking 数据集,由于该数据集提供了oracle detections,为了进行公平比较并侧重于跟踪,直接使用该数据集提供的oracle detetions对所有跟踪器进行评估。

4.3 ReID模型(ReID模型)

对于运动员再识别(ReID),作者使用 OSNet [39] 中提出的全尺度特征学习。统一的聚合门融合了不同尺度的特征,增强了人员ReID 的能力。

SportsMOT 用于 SportsMOT 数据集实验的 ReID 训练数据是基于原始的 SportsMOT 数据集构建的,作者根据每个球员的边界框的标注真实值对其进行裁剪。采样数据集包括 31279 张训练图像、133 张查询图像和 1025 张图库图像。

SoccerNet-Tracking 作者从 SoccerNet-Tracking 训练集中抽取 ReID 训练数据,从随机抽样的视频中为每个球员随机选取 100 个真实值边界框,其中 65 个用作训练图像,10 个用作查询图像,25 个用作图库图像。采样的 ReID 数据包含 7,085 张训练图像、1,090 张查询图像和 2,725 张图库图像,共随机选择了 109 个身份。

训练细节 作者使用 Market-1501 数据集[37]中的预训练模型,并根据上述每个抽样体育 ReID 数据集进一步微调模型,最终为这两个数据集建立两个 ReID 模型。每个模型训练 60 个epochs,使用带有交叉熵损失的Adam优化器,初始学习率为 3 × 10-4。所有实验均在单个 Nvidia RTX 4080 GPU 上进行。

4.4 跟踪设置(Tracking Setting)

高分检测的阈值为 0.6,而置信度在 0.6 和 0.1 之间的检测将被视为低分检测,其余置信度低于 0.1 的检测将被过滤。损失过滤阈值 τA 和 τEIoU 分别设为 0.25 和 0.5。作者还取消了检测边界框中的长宽比限制,因为体育场景中可能会出现球员躺在地上的情况,这与 MOT 数据集中大多数行人站立和行走的情况不同。对于高分检测关联,将扩展尺度 E_initial 的初始值设为 0.7,步长 λ 为 0.1,迭代总次数t_total为2。低分检测关联的扩展尺度 E 为 0.7,未匹配检测的扩展尺度 E 为 0.5。保留丢失轨迹的最大帧数为 60 帧。跟踪结束后,应用线性插值来提高最终跟踪性能。

4.5 评估指标(Evaluation Metrics)

MOTA [2] 通常被用作多目标跟踪任务的评估指标,但 MOTA 主要关注的是检测性能而非关联精度。最近,为了在检测性能和关联性能之间取得平衡,越来越多的公共基准开始使用 HOTA [16] 作为主要评估指标。在对 SportsMOT 数据集进行评估时,作者采用了 HOTA、MOTA、IDF1 和其他相关指标 [3] 进行比较。而对于 SoccerNet,采用 HOTA 指标以及相关的 DetA 和 AssA 指标,因为只有这些指标是由评估服务器提供的。

4.6 性能(Performance)

作者在两个大型体育场景多目标跟踪数据集SportsMOT 和 SoccerNetTracking 数据集上将他们的跟踪算法与之前已有的跟踪器进行了比较。所有实验均在一个 Nvidia RTX 4080 GPU 上运行,跟踪结果在数据集的官方评估服务器上进行评估。

SportsMOT 如表 2 所示,提出的 Deep-EIoU 在 HOTA 中达到 77.2,在 IDF1 中达到 79.8,在 AssA 中达到 67.7。性能达到了最先进的水平,优于之前所有的跟踪器,同时还保持了在线跟踪过程,展示了算法在体育场景中多目标跟踪的有效性。 alt

SoccerNet 为了关注跟踪性能并进行公平比较,所有评估方法都使用了由 SoccerNet-Tracking 数据集 [6] 提供的 oracle 检测。作者提出的方法的性能见表 3。方法在 HOTA、AssA 和 DetA 中的性能分别达到了 85.443、73.567 和 99.236,远远超过了几种最先进的在线跟踪算法。DeepSORT 和 ByteTrack 的性能报告来自最初的 SoccerNet-Tracking 论文[6]。Deep-EIoU 在各种大规模体育运动员跟踪数据集中的优异表现证明了作者的算法在体育多目标跟踪中的有效性。 alt

4.7 Deep-EIoU消融实验研究(Ablation Studies on Deep-EIoU)

在实验中,Deep-EIoU 在 SportsMOT 测试集上以不同的设置进行了评估,包括是否在跟踪过程中加入外观(ReID)、使用迭代扩展边界框扩展以及使用线性插值作为后处理。如表 4 所示,在加入基于外观关联的 ReID 模型后,Deep-EIoU 的 HOTA 提升了 3.8,这表明虽然运动员之间具有相似的外观,但在运动场景中以外观为线索进行追踪仍然非常重要。通过迭代扩展过程(ISU),逐步扩展的边界框可以首先与 EIoU 较高的小轨迹和检测建立关联,从而也提高了跟踪性能,需要注意的是,迭代扩展过程结合了更大的跟踪缓冲区,与行人跟踪的默认设置 30 不同,由于体育场景的遮挡特性更强,使用了 60。最后,按照大多数在线跟踪算法[33, 5],还加入了线性插值(LI)作为提高最终跟踪性能的策略。 alt

4.8 初始扩展尺度的鲁棒性(Robustness to initial expansion scale)

为了证明方法的有效性和鲁棒性,作者在迭代扩展过程中根据不同的初始扩展尺度进行了实验。将初始扩展尺度从 0.2 改为 0.8。图 5 中的实验结果表明,由于迭代扩展过程可以增强鲁棒性,并且无需调整任何参数即可实现 SOTA 性能,因此仍然可以在不同的初始扩展尺度下实现 SOTA 性能。这证明了方法在现实世界中的有效性,因为现实世界中往往没有真实值,跟踪参数也无法调整。 alt

4.9 基于卡尔曼滤波器的跟踪器上的ExpansionIoU(ExpansionIoU on Kalman filter-based tracker)

为了测试 ExpansionIoU 对基于卡尔曼滤波器的跟踪器的影响,作者还通过直接集成卡尔曼滤波器和 ExpansionIoU 实现了几个版本的方法。在实施过程中,在ExpansionIoU 之后的跟踪过程中,将对卡尔曼滤波器的预测和检测结果进行扩展。表 5 中的实验结果表明,将 IoU 直接替换为 EIoU 后,这两种基于卡尔曼滤波器的经典跟踪器在 HOTA、AssA 和 DetA 中的性能都有很大程度的提高。这表明,ExpansionIoU 也可以作为基于卡尔曼滤波器的跟踪器的即插即用技巧来提高跟踪性能。 alt

4.10 局限性(Limitation)

虽然作者的算法为体育场景中的在线多目标跟踪提供了一个强大而实用的解决方案,但它也有其局限性,包括缺乏离线后处理轨迹细化方法。这种方法可能涉及后处理方法[14]或强内存缓冲区[26],这对于处理体育运动员临时退出和重新进入摄像机视野的边缘情况非常有价值。值得注意的是,未来探索和整合离线细化技术有可能提高整体性能,并将方法的适用范围扩展到短期跟踪场景之外。

Deep-EIoU 的另一个问题是,与基于运动的跟踪器相比,它的运行速度相对较慢。尽管性能大幅提升,但基于外观的逐个检测跟踪框架(涉及检测器和 ReID 模型)的集成带来了额外的计算成本。目前的 DeepEIoU 管道在单个 Nvidia RTX 4080 GPU 上可达到约 14.6 FPS,与基于运动的跟踪器相比速度较慢。值得注意的是,过渡到更轻便的探测器和 ReID 模式有可能大大提高运行速度。

5 总结

在本文中,提出了 Deep-EIoU,一种迭代扩展的 ExpansionIoU 和深度特征关联方法,用于体育场景中的多目标跟踪。在包括 SportsMOT 和 SoccerNet-Tracking 在内的两个大规模多目标运动选手跟踪数据集上取得了极具竞争力的性能。该方法成功地解决了体育场景中多目标跟踪过程中不规则运动的难题,并在很大程度上优于之前的跟踪算法。

本文由 mdnice 多平台发布

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

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

相关文章

【GitHub项目推荐--不错的 Java 开源项目】【转载】

1 基于 Java 的沙盒塔防游戏 Mindustry 是一款用 Java 编写的沙盒塔防游戏。玩家需要建造精密的传送带供应链,提供炮塔弹药,生产建筑材料,保护建筑并抵御敌人。也可以在跨平台多人合作游戏中与朋友一起战斗,或组队进行 PVP 比赛。…

SpringBoot项目整合MybatisPlus并使用SQLite作为数据库

文章目录 SQLite介绍搭建项目创建项目修改pom.xml SQLite查看SQLite是否安装创建数据库创建数据表IDEA连接SQLitenavicat连接SQLite数据库 后端增删改查接口实现MybatisX生成代码不会生成看这个UserUserMapperUserMapper.xml controller创建配置文件application.yaml启动类Incr…

集简云新增邮件发送功能,适用多种创意场景并提升邮件发送效率

在数字营销中,电子邮件依旧是连接企业与客户的重要桥梁。集简云深知这一点,本周推出为企业通讯打造的内置应用——集简云邮件发送,帮助用户创建充满个性化的交易电子邮件,还能通过HTML自定义代码来实现用户的创意场景。可与近千款…

springboot导出数据到excel模板,使用hutool导出数据到指定excel,java写入数据到excel模板

最近遇到一个需求,需要从数据库查询数据,写入到对应的excel导入模板中。再把导出的数据进行修改,上传。 我们项目用的是easyExcel,一顿百度搜索,不得其法。 主要是要把数据填充到指定单元格中,跟平时用到的…

【操作工具】IDEA的properties文件变为灰色的解决办法

背景 赋值了一份properties文件放到项目下面,但是里面的key都是灰色的 解决方案 去掉下面3后面对应的勾 去掉之后

《Linux C编程实战》笔记:信号的发送

信号的发送主要由函数kill、raise、sigqueue、alarm、setitimer以及abort来完成 kill函数 kill函数用来发送信号给指定的进程。 #include<sys/types.h> #include<signal.h> int kill(pid_t pid,int sig); 该函数的行为与第一个参数pid有关&#xff0c;第二个参…

幻兽帕鲁安装和开服教学

《幻兽帕鲁》游戏热度异常火爆&#xff0c;很多玩家想下载《幻兽帕鲁》和朋友玩&#xff0c;但不知道在哪里能够下载到&#xff0c;下面请看《幻兽帕鲁》下载安装教学&#xff0c;希望能够帮助大家。 幻兽帕鲁》目前仅在PC上的Steam平台发售&#xff0c;可以登录Steam搜索“幻…

Unity 解决异步分发方案

很多程序&#xff0c;包括游戏、小程序、一些AR、VR的程序&#xff0c;因为客户端体量太大&#xff0c;更新频繁都涉及到远程热更新的问题&#xff0c;解决这类问题的思路基本上是客户端解决主要功能&#xff0c;资源类放置在服务器。 下面记录下&#xff1a; 1.CDN或者云轻量…

AI嵌入式K210项目(18)-卷积人工神经网络硬件加速器 KPU

文章目录 前言一、K210的KPU二、实验过程总结 前言 K210内置了丰富的加速器&#xff0c;包括神经网络处理器 (KPU)&#xff0c;AES(高级加密加速器)&#xff0c;APU 麦克风阵列语音数据加速计算处理器&#xff0c;现场可编程 IO 阵列 (FPIOA)&#xff0c;数字摄像头接口 (DVP)…

源码篇--Redis 五种数据类型

文章目录 前言一、 字符串类型&#xff1a;1.1 字符串的编码格式&#xff1a;1.1.1 raw 编码格式:1.1.2 empstr编码格式:1.1.3 int 编码格式:1.1.4 字符串存储结构展示: 二、 list类型&#xff1a;2.1 List 底层数据支持&#xff1a;2.2 List 源码实现&#xff1a;2.3 List 结构…

水经微图系列产品新功能盘点!

水经微图&#xff0c;简称“微图”。 我们曾在直播中分享过微图APP苹果版的功能&#xff0c;本周四晚19:30我们将在另一个视频号分享盘点微图APP安卓版的详细功能&#xff0c;以及Web版近期上线的新功能功能。 微图APP安卓版 我们在《水经微图安卓版APP正式上线》一文中&…

ABAP SQL CDSView Entity中使用正则RegEx表达式(Regular Expressions)

1. 正则表达式测试程序 DEMO_REGEXDEMO_REGEX_TOY 2. ABAP SQL & CDSView Entity支持正则语法的场景 SQL函数语法作用执行逻辑返回类型CDS View EntitiesABAP SQLLIKE_REGEXPRLIKE_REGEXPR( PCRE pcre, VALUE sql_exp1[, CASE_SENSIT…

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的&#xff0c;但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList&#xff1a;mask1&#xff0c;IM1&#xff0c;IM2&#xff0c;mask2&#xff0c;IM3&#xf…

Centos7 两种方式安装 MySQL5.7 步骤 yum 、本地 tar 文件

一、使用 yum 源方式安装 1、卸载系统自带 mariadb MariaDB Server 是最流行的开源 关系型数据库 之一。它由 MySQL 的原始开发者制作&#xff0c;并保证保持开源。 在 CentOS 7 中默认安装有 MariaDB 可忽略&#xff0c;安装完成之后可以直接覆盖掉 MariaDB。 查看并卸载系统…

如何在阿里云提交使用工单

有时候大家在使用阿里云的服务时候&#xff0c;可能会遇到一些问题&#xff0c;或许是云服务器如何升级了如何改套餐啊之类的&#xff0c;亦或者是域名ICP备案啊看进度啊等等问题&#xff0c;遇到问题怎么办不要慌。我们可以使用阿里云的工单系统&#xff0c;阿里云工单系统可以…

虚拟机网络配置及Moba工具的使用

A、设置IP和网关 1、设置IP [roothadoop00 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 &#xff08;修改如下标红内容&#xff0c;没有的就添加&#xff09; DEVICEeth0 HWADDR08:00:27:BD:9D:B5 #不用改 TYPEEthernet UUID53e4e4b6-9724-43ab-9da7-68792e611031…

Confluence6+mysql5.7破j安装避坑详细记录

目录 一、前言 二、下载与安装 1、版本和安装环境 2、安装数据库 3、配置数据库 4、安装confluence 三、Pj confluence 1、选择语言和产品安装 2、Pj 3、上传mysql驱动 4、重启Confluence服务继续安装 四、Confluence重启卸载方法 重启方法 方法一 方法二 卸载…

acwing 动态规划dp 0 1背包问题

前言 hello小伙伴们&#xff0c;最近由于个人放假原因颓废了一段时间很长时间没有更新CSDN的内容了&#xff0c;唉&#xff0c;毕竟懂得都懂寒暑假静下心来学习的难度远比在学校里大的多。 但是&#xff0c;也不是毫无办法克服&#xff0c;今天我来了我们当地的一家自习室来学习…

《WebKit 技术内幕》学习之四(3): 资源加载和网络栈

3. 网络栈 3.1 WebKit的网络设施 WebKit的资源加载其实是交由各个移植来实现的&#xff0c;所以WebCore其实并没有什么特别的基础设施&#xff0c;每个移植的网络实现是非常不一样的。 从WebKit的代码结构中可以看出&#xff0c;网络部分代码的确比较少的&#xff0c;它们都在…

Mybatis 全局配置文件(三)

文章目录 第一章&#xff1a;概述第二章&#xff1a;properties (了解)第三章&#xff1a;settings第四章&#xff1a;typeAliases (别名处理器)第五章&#xff1a;typeHandlers (类型处理器)第六章&#xff1a;plugins(插件)第七章&#xff1a;environments (环境)第八章&…