GIAOTracker——一个用于多类、多对象追踪的综合框架探索

news2024/10/6 1:42:02

介绍

论文地址:https://arxiv.org/pdf/2202.11983.pdf

这篇论文探讨了人工智能图像处理领域中一项非常直观且令人兴奋的任务——在原始视频数据中检测和追踪单个物体。在图像处理的人工智能应用中,图像分类、物体检测和语义分割等任务经常被提及,而物体追踪的重要性往往没有得到足够的强调。物体检测无法捕捉运动信息,图像分类则受限于其假设——即图像数据是对要分类物体的代表性展示,并且完全处于视场内。与之相对,物体追踪能够捕捉到物体随时间变化的详细动态,这为数据分析、犯罪预防和机器人控制等提供了丰富的特征,具有极高的实用价值。

本文将要讨论的是"GIAOTracker:一种针对无人机视频多类多物体追踪(MCMOT)任务的综合框架",这一框架在VisDrone 2021的全球信息整合和优化策略方面提出了一个高度精确的解决方案。

MCMOT任务具有很高的挑战性,因为它要求同时追踪多个不同类别的物体,而不是专注于某一特定类别或单一物体。然而,无人机视频的追踪需要更高级的技术来应对一些特殊情况,这些情况比固定摄像头(如监控摄像头)所面临的情况要复杂得多,具体包括:

  • 航拍图像中反映出的大量小物体。
  • 不规则的物体运动和摄像机运动。
  • 物体被树木、桥梁等障碍物遮挡的问题。

这些问题在无人机视频中尤为突出,尽管它们在一般视频数据中也同样存在。如果能解决这些问题,预计可以将解决方案应用于其他各种追踪任务中。

本文介绍的GIAOTracker将追踪任务分为三个阶段,并通过为每个阶段提出和整合有效的技术来应对上述挑战。GIAOTracker由"在线跟踪、全局链接和后处理"三个部分组成,其整体架构如下图所示。通过这三个阶段的协同工作,GIAOTracker能够实现对无人机视频中多物体的高效、精确追踪。

此外,据称每个阶段的技术并不是GIAOTracker特有的,而是可以很容易地应用于其他追踪方法,以提高其准确性。

实验表明,与基线DeepSORT相比,每个阶段都有消融的效果,并在与VisDrone MOT数据集上进行的SOTA模型比较中取得了第二名。据称,检测模型的准确性和训练数据的范围将更加完善。现在让我们来看看这个方法的细节。

系统定位

首先解释这个方法的系统定位。追踪任务正是将每一帧中检测到的相同物体在各帧之间联系起来的任务。它预测在时间 t t t检测到的物体在时间 t + 1 t+1 t+1的位置,并在帧间(ReID)与实际检测结果相匹配。换句话说,跟踪任务是以检测任务为基础的,而跟踪精度不可避免地在很大程度上取决于检测阶段的精度。

这里的主要区别是跟踪的方法。SDE和JDE可以分为两种类型,取决于检测和跟踪是在一个模型中同时训练还是在多个模型中分别训练。通过检测(SDE),也被称为通过检测跟踪,是指一种先训练检测器,然后再训练跟踪的方法。它的特点是检测和跟踪是分开优化的,使其更加灵活,适合复杂的视频。JDE(联合检测和嵌入)则是一种将检测和跟踪统一为一体的方法,它通过在检测器(如Faster R-CNN、CentreNet和YOLOv3)上分支并添加用于跟踪的特征提取器和预测器。同时实施。一般来说,JDEs比SDEs更快,但在复杂的环境中,JDEs的准确性会降低。由于考虑到如果只对检测进行优化,而只对跟踪进行优化,准确性会更好,所以本文选择了处理复杂无人机视频的SDE,并将DeepSORT作为基础方法。

在关于追踪的论文中,TrackletTrajectory这两个词经常被使用。两者都是指跟踪的结果的轨迹,但我在阅读各种论文后的印象是,tracklet指的是 “一个不完整的轨迹,它被准确地跟踪,但只是在很短的时间内”,而trajectory指的是 “一个完整的轨迹,结合了多个tracklet”。在本文中,该术语的使用方式与此类似。

在线跟踪(第一阶段)

这一阶段旨在通过新的特征更新方法、物体运动预测和相机校正来生成高度精确的Tracklets。

追踪任务中在线和离线的区别在于未来信息是否用于追踪。在线追踪只使用最近的两帧进行匹配。另一方面,离线追踪通过加入在线追踪产生的Tracklets来生成一个完整的轨迹。我们将首先解释第一阶段,在线追踪。下图显示了基线DeepSORT和拟议方法之间的差异。其关键特征是外观特征和物体运动预测。成本矩阵是根据这些信息生成的。

EMA银行

EMA(指数移动平均)银行在更新外观特征时引入了一个惯性项,这使得Tracklet能够同时捕捉到代表Tracklet的特征和特征变化。在跟踪中,有必要获得能够在检测阶段区分属于同一类别的物体的外观特征。所提出的方法使用了一个叫做OSNet的模型,而不是DeepSORT中使用的简单特征提取器,并提出了一种叫做EMA Bank的新更新方法来更新特征。传统方法的缺点是容易受到检测噪声的影响,因为它保留了Tracklet每一帧的特征。因此,通过使用惯性项更新和保留特征,EMA库已经被改进为每个Tracklet有一个特征。

e e e是Tracklet i i i 在时间 t t t的特征值, f f f是在时间 t t t检测到的物体的特征值, α α α是惯性项。在反映特征值变化的同时,整合减少了检测噪音。

NSA Karman

NSA卡尔曼根据检测的置信度自适应地改变卡尔曼滤波器的噪声,以应对复杂的物体运动。卡尔曼滤波假设,除了物体的真实状态(坐标)外,我们可以进行的观测(坐标)由于噪声而具有与真实状态不同的值。这种噪声的特性代表了跟踪任务中检测阶段的bbox错位,线性卡尔曼滤波器假定所有物体都有一个共同的噪声。另一方面,NSA卡尔曼采取的方法是根据检测的置信度来改变它。

c k ck ck代表每个对象的信心水平。探测器对每个物体输出的检测置信度越高,检测噪声就越低,运动预测可以用来估计各种复杂物体运动的位置。例外的是车辆类,他们使用UKF(无色卡尔曼滤波),由于非线性运动,UKF更加稳健。

其他

在跟踪任务中,应对摄像机的移动也很重要。建议的方法使用ORBRANSAC技术来补偿摄像机的移动。

此外,目标数据可能包含两类(如汽车和货车),难以区分。我们提出了一种叫做Rough2Fine的方法,它不是独立地追踪不同的类别,而是首先在一个高度抽象的类别中追踪它们,然后使用投票机制来确定Tracklet的细粒度类别。传统的方法是 “曾经投票”,指定一个单一的抽象类别,而这种方法是 “软投票”,指定多个类别,并根据每个类别的检测置信度对投票进行加权。

全局链接(第2阶段)

这一阶段的目的是将第一阶段生成的Tracklets联系起来,生成一个完整的Trajectory。

第一阶段产生了一个高度准确的Tracklet。然而,由于在线跟踪,Tracklet是不完整的。虽然在线追踪的速度很快,但一旦物体丢失,即使能再次检测到,也很难假设它是同一个物体。这是因为在中断期间,物体仍在移动,其大小、方向和角度可能会发生重大变化,从而导致匹配困难。因此,被中断的同一对象的小追踪器必须在在线追踪后重新连接起来。这方面的离线过程是全局链接。在线跟踪是检测结果的匹配,而全局链接则是跟踪结果的匹配(Tracklets)。这种一步步的匹配使得所提出的方法能够实现高精确度。关键因素是GIModel和Tracklet的成本。为匹配过程中使用的外观特征提取器提出了一种叫做GIModel的方法。

GIModel

所提出的方法GIModel是一个外观特征提取器,对检测噪声和物体外观的突然变化具有鲁棒性;它从Stage1生成的Tracklet中提取全局和局部特征,并使用Transformer进行特征提取,适当考虑帧间关系。

Tracklet外观特征的提取方式与在线跟踪不同。首先,GIModel将Tracklet的N个帧中的每一个输入到一个CNN(ResNet50-TP)中,以获得一个特征图。此时,(a)中得到的特征通常被简单地压平,并根据任务连接到一个层,如全连接层,但GIModel在空间方向上将部分特征(绿色和橙色)与整体特征压平(蓝色)分开处理。通过将全局特征与每个区域的局部特征相结合,它专注于物体不同部分的详细特征,使其对闭塞现象更加稳健。这被认为是由于它可以更好地利用来自物体的部分信息,这些部分即使在遮挡期间也是清晰可见的。

然后,必须对获得的N个框架的特征进行整合。传统的方法©只是对N个特征取平均数,但简单的平均数并不能很好地捕捉帧之间的关系。另一方面,GIModel在平均化之前给Transformer Encoder提供了一个叫做Self-Attention的机制,可以学习斑块之间的关系,所以它可以更灵活地学习帧之间的关系,然后进行平均化。Transformer Encoder可以更灵活地学习帧之间的关系,然后对其进行平均化。

上述情况使提取的特征对检测噪声和物体外观的突然变化具有鲁棒性。

成本矩阵

在在线追踪中,使用外观特征和位置信息进行了匹配。另一方面,在Tracklet匹配的情况下,除了位置信息外,时间信息也被用于匹配成本。追踪器 _i_和_j_的匹配成本表示如下

_Ca_是GIModel提取的特征之间的余弦距离,_Ct_是Tracklets之间的时间差,_Cs_是空间距离。为了更好地匹配,每个成本都有一个阈值,只有满足所有条件的配对才被用于匹配。

全局链接可以根据上述的外观特征和时空距离,将第一阶段获得的不完整的Tracklets连接起来。

全局链接(第三阶段)

这个阶段通过第一阶段和第二阶段产生的轨迹进行四个后处理步骤完善****轨迹

尽管在跟踪任务中,后处理似乎被忽视了,但所提出的方法通过应用四个有效的后处理步骤进一步提高了准确性。**这些是****去噪、**插值、重定和轨迹融合

去噪

对一个物体的重复探测器探测会增加无意义轨迹的数量。通常的做法是在空间方向上应用基于IoU的NMS,以防止重复检测。所提出的方法在时间方向上应用SoftNMS,使用Temporal-IoU来消除Trajectory而不是检测。

内插法

随后是对检测误差导致的跟踪中断进行插值。已成功追踪的区域被全局链接,但被中断的区域则未被触及。所提出的方法应用线性插值来提高精度,假设插值是可能的,如果中断的帧在60帧之内。

重新计分。

在检测任务中,置信度被用作评估检测结果的阈值,而在跟踪任务中则使用平均值。所提出的方法没有使用简单的平均值,而是使用重评分,根据轨迹的长度对置信度进行加权。这是基于这样的假设:跟踪的轨迹越长,结果就越可靠:Tracklet _i_的权重_ωi_由以下公式表示。

_LI_是弹道的长度。长度越接近于零,重量就越接近于零,长度越长,就越接近于一。这就为评估期间的轨迹提供了一个更合适的阈值。

轨迹融合。

在这里,多个模型的跟踪结果被融合在一起。尽管在图像分类和物体检测中已经采取了利用多种模型结果的方法,但在跟踪任务中还没有得到太多的关注。因此,建议的方法TrackNMS从多个模型的总轨迹中删除不必要的轨迹,只留下有用的轨迹。该机制的细节如下。

  • TrackNMS基于SoftNMS:SoftNMS在空间方向上抑制基于IoU的检测结果,而TrackNMS在时间方向上抑制基于IoU的多个模型的跟踪结果。
  • SoftNMS在排序时使用置信度来选择要抑制的检测,而TrackNMS则根据每帧的置信度之和进行排序。同样,由于重新评分,较长的轨迹往往有较高的优先权。

上述内容构成了GIAOTracker,它包括三个阶段。

实验

数据集

实验证明了上述所有机制在消融方面的有效性,并与SOTA进行了比较。要验证的VisDrone MOT数据集是一个5类跟踪任务数据集,有96个序列(共39,988帧)。评价指标是每个班级后不同阈值的平均精度(mAP)和所有班级的平均值。如果一个轨迹与正确的轨迹的IoU高于阈值,则认为该轨迹是正确的。

选择一个模型

如前所述,检测器的选择对跟踪精度有很大影响。探测器由VisDrone MOT使用基于ResNet的探测器DetectoRS进行微调,该探测器是在MS COCO数据集上预先训练的。为了避免过度训练,在5个框架中抽出一个用于训练。

在这个实验中,为两种类型的检测器提供了不同的训练方法–Dev1和Dev2。

  • DetV1:在训练期间固定图像大小,但在测试期间改变图像大小以评估对多尺度的反应;AP50达到56.9;AP50达到56.9;AP50达到56.9;AP50达到56.9;AP50达到56.9;AP50达到56.9。
  • DetV2:训练时,将输入的图像切成四块并放大,使其没有重叠,测试时,将整个图像放大并输入,以同样的方式进行多尺度评估。此外,通过使用SoftNMS融合Dev1的检测结果,实现了63.2的AP50。

用于外观特征提取的OSNet是在基于VisDrone MOT数据集创建的ReID数据集上训练的,使用的是已经在ImageNet上预训练过的OSNet。ReID数据集是以五帧为间隔进行采样的,有遮挡物或缺失物超过50%的物体被删除。训练是以每个对象类别的不同输入大小进行的。

GIModel同样使用已经在ImageNet上训练过的模型。和上面的ReID数据集一样,GIModel的数据集也被创建和训练。不同的是,采样率是三帧。

参数

每个阶段的参数取自论文;它们是基于DeepSORT和JDE的。

消融

对于在线跟踪,我们比较了从基线DeepSORT中依次添加机制时的准确性。添加显示了是否在GIAOTracker中采用。添加补偿了摄像机的运动,提高了跟踪性能,而基于ORB的匹配补偿了摄像机的运动,提高了跟踪性能。事实证明,它对强大的特征提取器OSNet和强大的EMA Bank也很有用。NSA卡尔曼和UKF也比线性卡尔曼好得多,而对于Rough2Fine,"软投票 "明显优于 “硬投票”。因此,所引入的每个机制的有效性都得到了证明。

接下来全局链接中的GIM模型:对于ReID数据集,使用mAP和Rank1作为评价指标。对于基线,+train是用VisDrone学习的GIM模型,+sat用Transformer考虑了帧之间的关系,最后+part引入了全局和局部扁平化。该表显示,每个机制都能显著提高准确度。

最后一步是后处理:GIAOTracker-Global是一个采用到第二阶段的GIAOTracker。相比之下,采用去噪、插值和重计分的结果显示,去除冗余轨迹和插值轨迹的表现良好。还可以看出,跟踪的质量与轨迹的长度相关。

所有阶段的性能比较

第2-4行显示了以DetV1为检测器的GIAOTracker的准确性,第3-4行显示了以DetV1为检测器的GIAOTracker-Post的准确性,第4-5行显示了以DetV2为检测器的GIAOTracker-Post的准确性。第2-4行是以DetV1为检测器的GIAOTracker,-DetV2是在GIAOTracker-Post中改为DetV2的模型。融合显示了最后一个后处理步骤的准确性,即轨迹融合,使用-Post与DetV1和-DetV2。最后一个GIAOTracker*代表了使用注释数据进行检测时的准确性。换句话说,它代表了检测精度为100%时的跟踪精度。可以看出,每个阶段都提高了准确性。使用注释数据时的准确性比DetV1和DetV2等单个模型的估计要好92%。这意味着,尽管基于检测器的估计,整体精度乍一看可能很低,但如果能保证检测精度,GIAOTracker的各个阶段就会非常有效。

与SOTA的比较

最后一个实验是与VisDrone2021 SOTA模型进行比较。

它在前九个模型中取得了第二高的准确率,显示了它的优越性;之所以没有成为第一,是因为检测器的准确率和训练数据的数量有限,表4的结果声称,随着检测器准确率的提高,该方法的准确率将进一步提高。

总结

(1). 与SOTA(State-of-the-Art)的比较:在物体追踪领域,与现有最先进技术的比较是衡量新方法性能的重要标准。您提到的“最后一次与SOTA的比较”可能指的是在某个数据集或任务上,新方法与当前最佳方法的对比。如果使用所有SOTA的注释数据进行追踪,理论上可以更全面地评估新方法的性能,但这也可能受限于不同SOTA方法的兼容性和数据集的一致性。
(2). JDE和公平比较:JDE(Joint Detection and Embedding)是一种多目标追踪算法。您提到的“对于JDE来说,可能很难做一个公平的比较”,这可能意味着JDE在某些方面可能与其他方法不完全可比,比如检测精度或数据处理方式。VisDrone-MOT2021是一个特定的多目标追踪挑战,其中SDE(Simple Online Detection and Embedding)可能提供了一个更公平的比较基准。
(3). 超参数的实用性:在算法设计中,超参数的设置对模型性能有显著影响。您提到的“大量的超参数是否对该应用有用”,这表明在全局链接阶段,需要调整多个参数,包括成本的权重和阈值。这些参数的设置确实可能不够直观,需要通过实验和调整来找到最优解。
(4). GIAOTracker的性能:GIAOTracker在无人机视频的MCMOT任务中显示出了卓越的准确性。您提到的“所有的机制”包括改进的相机校正、卡尔曼滤波、特征更新、全局链接和后处理,这些都对提高追踪性能起到了关键作用。
(5). 机制的通用性:GIAOTracker中提出的机制被证明是有效的,并且“可以很容易地引入到其他追踪方法中”。这表明这些技术具有一定的通用性,可以被其他追踪框架所采用,如StrongSORT,它是DeepSORT的一个改进版本,也整合了GIAOTracker的方法。
(6). 论文的价值:您认为这篇论文对于那些想要系统了解物体追踪并对最新框架感兴趣的研究者来说是一个很好的启示。这强调了论文在教育和启发新思想方面的价值。

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

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

相关文章

【查缺补漏】python

python查缺补漏 底板除 还有一种除法是//,称为地板除,两个整数的除法仍然是整数: >>> 10 // 3 3你没有看错,整数的地板除//永远是整数,即使除不尽。要做精确的除法,使用/就可以。 因为//除法只…

什么是元数据管理?企业进行元数据管理可以满足什么目的?

元数据管理作为数据治理的重要组成部分,其作用日益凸显。元数据,即“关于数据的数据”,提供了对数据的描述、上下文和意义的详细信息,对于确保数据的准确性、一致性和可访问性至关重要。 有效的元数据管理能够帮助企业更好地理解…

ffmpeg的安装教程

1.官网下载ffmpeg 进入Download FFmpeg网址,点击下载windows版ffmpeg(点击左下第一个绿色的行) 在release builds第一个绿框里面选择一个版本下载。 2.配置 下载完成后解压该压缩包单击进入ffmpeg\bin,会出现如下界面&#xff1…

毕设有论文,有代码,以及开题报告, PPT,使用手册

包含以下项目 1.学生班级管理系统 摘 要。21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&#xf…

MYSQL 四、mysql进阶 4(索引的数据结构)

一、为什么使用索引 以及 索引的优缺点 1.为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。Mysql中也是一样的道理,进行数…

Unity【入门】光源、物理、音效系统

核心系统 文章目录 核心系统1、光源系统基础1、光源组件2、光面板相关 2、物理系统之碰撞检测1、刚体 RigidBody2、碰撞器 Collider3、物理材质4、碰撞检测函数5、刚体加力 3、音效系统1、音频文件导入2、音频源和音频监听器脚本3、代码控制音频源4、麦克风输入相关 1、光源系统…

34、shell数组+正则表达式

0、课前补充 jiafa () { result$(echo " $1 $2 " | bc ) print "%.2f\n" "$result" } ##保留小数点两位 薄弱加强点 a$(df -h | awk NR>1 {print $5} | tr -d %) echo "$a"一、数组 1.1、定义 数组的定义&am…

Visual Studio2022+cuda环境配置及代码调试

环境配置 下载并安装CUDA Toolkit 打开Visual Studio,新建项目。如下图所示,已经包含CUDA编程选项 代码调试 1、打开cu文件的属性页,按下图所示,将Host中的Generate Host Debug Information设置为“是" 2、不可勾选Nsight…

System.Dynamic.ExpandoObject的使用说明

官方文档 ExpandoObject 类 (System.Dynamic) | Microsoft Learn https://learn.microsoft.com/zh-cn/dotnet/api/system.dynamic.expandoobject?viewnet-8.0 System.Dynamic.ExpandoObject 类 - .NET | Microsoft Learn https://learn.microsoft.com/zh-cn/dotnet/fundame…

虚拟机安装JDK11操作教程

1、新建/usr/java目录 mkdir /usr/java 2、将jdk-11文件上传/usr/java目录 3、解压jdk-11文件 tar -zxvf jdk-11_linux-x64_bin.tar.gz 4、编辑配置文件,配置环境变量 vi /etc/profile 在打开的文件末尾添加 export JAVA_HOME/usr/java/jdk-11 export JRE_HOM…

接口自动化之参数快递的几种方式!

1. 直接在代码中硬编码 这是最简单直接的方式,直接在测试脚本中写入具体的参数值。但这种方法不灵活,难以维护,也不利于数据的复用。 def test_api_request(): response requests.get("http://example.com/api?paramvalue")…

一文读懂一致性Hash算法

Hash算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。 Hash算法在安全加密领域MD5、SHA等加密算法,数据存储和查找的Hash表等方面均有应用。Hash表的数据查询效率极高,时间…

借助Aspose.Email,使用 C# .NET 创建 PST 文件并填充内容

PST(个人存储表)文件是管理 Outlook 数据的重要组成部分,方便存储电子邮件、联系人、日历和其他项目。在 C# .NET 开发领域,创建和管理存储文件的过程对于各种应用程序至关重要。 在本文中,我们将探讨如何使用 C# .NE…

江苏新世纪信息科技有限公司

NCT是国内专业从事信息化人才培训、咨询,以及企业级数字化培训平台建设,企业内训课程、课件制作;工业企业智能制造诊断和信息化规划服务;信息化建设项目的运维服务和解决方案为一体的标准应用服务商。NCT是中国ITSS实训基地的运营…

云专线组网方案的特性和实施要素

云专线组网方案是指企业通过专用的网络连接,将其内部网络与云服务商的数据中心直接相连,从而实现高速、安全、稳定的云资源访问。云专线通常提供比公共互联网更优的网络性能,包括更低的延迟、更高的带宽和更强的安全性。以下是云专线组网方案…

去中心化衍生品协议内卷,ZKX 能否通过差异化道路突出重围?

去中心化衍生品赛道目前从协议类型来看,主要有两种解决方案: 以 GMX 为代表的 Vault 模式,LP 作为交易者的对手盘,由 Orcale 喂价决定交易价格。 以 dYdX 为代表的订单薄模式,链下撮合链上结算。 这两种解决方案虽然…

法国电信集团高层莅临美格智能参观交流,共商行业未来

6月19日,世界500强法国电信Orange集团高层一行莅临美格智能深圳总部参观交流。美格智能董事长王平、副总裁兼西安产品线总经理李小兵携公司管理层对Orange团队的到访表示热烈欢迎,双方就FWA市场的发展、双方之间前期合作情况以及未来规划进行了会谈与交流…

qmt量化交易策略小白学习笔记第42期【qmt编程之期货数据--如何获取历史主力合约--内置python】

qmt编程之获取期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 获取历史主力合约 …

Hive数据锁问题处理

在测试环境有定时任务会定期将flume采集的数据load到hive表中,在查看yarn application过程中发现load操作没有执行,且后续的任务在上一个任务执行结束后很久才开始。感觉像是阻塞一样,于是手动执行相关脚本,发现也是会卡住&#x…

分享vs code十大好用的插件

1.Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 将 VS Code 界面改成简体中文。 2.PDF Viewer 在VS Code 中打开 PDF文件。 3.TODO Highlight 这个扩展会突出显示您的待办事项注释,并提醒存在未完成的注释或任务。 该扩展附带了内…