牛津大学开源视频中的开放世界目标计数!
视频中的开放世界目标计数
GitHub
PaPer
Niki Amini-Naieni
nikian@robots.ox.ac.uk
Andrew Zisserman
az@robots.ox.ac.uk
视觉几何组(VGG),牛津大学,英国
图 1:视频中的目标计数:给定顶行的视频(由几个样本帧显示)和文本“fish”,COUNTVID 能够准确地在视频中匹配实例(通过分配给每条鱼的颜色和数字表示),识别新目标,并估计数量。我们敦促读者播放补充材料中的视频,以看到任务的挑战性(以及所提出模型的成功)。
摘要
我们引入了一项新的视频开放世界目标计数任务:给定一个描述目标对象的文本或图像示例,目标是枚举视频中所有独特的目标实例。这项任务在拥挤场景中有遮挡和相似目标的情况下特别具有挑战性,避免重复计数和识别重新出现的目标至关重要。为此,我们做出了以下贡献:我们介绍了一个用于此任务的模型 COUNTVID。它利用基于图像的计数模型和可提示的视频分割与跟踪模型,实现跨视频帧的自动化、开放世界的对象计数。为了评估其性能,我们介绍了 VIDEOCOUNT,这是一个新的数据集,建立在 TAO 和 MOT 20 跟踪数据集上,以及从企鹅和金属合金结晶的 X 射线捕获的视频中构建。使用这个数据集,我们展示了 COUNTVID 提供了准确的对象计数,并显著优于强大的基线。VIDEOCOUNT 数据集、COUNTVID 模型和所有代码可在https://github.com/niki-amini-naieni/CountVid/获取。
1 引言
我们的目标是本论文中的开放词汇表视频计数——确定视频中某个目标类别存在多少个实例,其中感兴趣的目标类别由文本描述或图像示例指定。这是一项时间依赖的任务,因为当前(可见计数)可以在帧级别或其他时间间隔报告,也可以在整个视频中进行累计计数。
如图 1 所示,在视频中保持计数自然是一个对应或跟踪任务——因为我们不想多次计数同一实例,我们必须确认连续帧中的实例是否相同。然而,如图也说明,视频计数的一个基本挑战是实例识别——出现在帧中的对象是一个新实例吗?还是在序列早期移出画面或被暂时遮挡的对象?当对象变得难以区分时,这一挑战会加剧:如果鱼有不同的颜色和标记,可以区分个体鱼,但可能无法区分昆虫或乌鸦。
令人惊讶的是,视频中的自动计数是一个相对未被探索的领域。除了统计人[7, 20]之外,几乎没有自动化的方法,也没有我们所知的开放词汇方法。相比之下,图像计数方面已有广泛研究,开放词汇方法能够使用文本和示例来指定目标对象,并且可以计数到数千个实例[2, 27, 28]。甚至一些大规模的视觉-语言模型,如 Malmo[11],现在也能在图像中准确地计数超过十个实例。
视频计数研究的缺乏尤其令人惊讶,鉴于其在科学应用和需求方面的广泛多样性。保护主义者需要统计无人机拍摄的视频序列中的动物数量以监测种群[12, 24]。对于受过训练的人类分析员来说,手动注释单个小时飞行的数据可能需要长达 30 小时[33]。材料科学家统计从液态金属合金形成的晶体,以确定冷却如何影响形成过程的速度[17]。流行病学家使用城市街道上拍摄的视频中的人和车辆计数来研究行人暴露于空气污染的原因并加以缓解[30, 31]。一种‘开放世界’的方法,可以快速应用于所有这些问题,无需手动计数或额外培训,有潜力催化这些应用,消除注释时间,显著促进他们的研究。
在本文中,我们介绍了一个名为 COUNTVID 的开放世界视频目标计数模型,该模型接受视频和指定要计数的目标的提示作为输入,并输出视频中出现的独特目标实例的数量。提示可以包括自由形式的文本描述和/或任意数量的“视觉示例”,其中视觉示例通过边界框指示感兴趣的物体,可以从视频帧或外部图像中获取。
COUNTVID 模型基于两个不同任务的最新进展:(i) 强大的开放词汇图像计数和检测模型[2, 26, 38];以及 (ii) 强大的类别无关的视频分割和跟踪模型[29, 34]。然而,天真地结合图像检测器为跟踪器提供实例是不够的,因为最先进的目标检测器在密集堆积的场景中难以计数大量物体,这些场景中有很多遮挡和重叠的实例[2, 3],同样,这些条件对最先进的跟踪器也是严重挑战[14]。为了克服这个问题,对于我们的模型,我们利用了能够输出边界框的精确图像基础计数器[26, 38]用于 (i),而对于 (ii),我们采用了一个可提示的视频分割和跟踪模型,例如 SAM 2[29],因为它能够在给定(手动)指定的提示下分割和跟踪多个对象。
为了准确地在视频中使用这些模型进行计数,我们引入了两项创新:首先,我们将最灵活的基于图像的计数器 CountGD[2]扩展为生成边界框(跟踪器所需),提供了在接受文本、视觉示例或组合提示和检测能力方面的多功能性;其次,我们提出了一种时间滤波器,以去除由于错误检测产生的假阳性跟踪。扩展后的 CountGD 模型,命名为 COUNTGD-BOX,和其他基于检测的计数器用于在视频的多帧上提供框提示,跟踪器则用于关联生成的分割并将它们传播到其他帧。
为了评估视频计数的性能,我们引入了 VIDEOCOUNT,这是一个包含此任务真实标签的新数据集。VIDEOCOUNT 有两个类型的基准测试:首先,我们重新利用标准跟踪数据集 TAO[4]和 MOT 20[5],通过添加额外注释确保所有对象都被计数(因为跟踪基准通常只评估对象的子集,例如不考虑静态对象);其次,我们引入了两个科学应用的计数,包含监控企鹅在其自然栖息地的实时视频和金属合金结晶过程的 X 射线图像的新视频。
总结一下,我们做出了以下四个贡献:第一,我们提出了视频开放世界目标计数的新任务;第二,我们通过重新利用和结合开放词汇图像计数和类别无关的分割和跟踪模型,提出了 COUNTVID 模型;第三,我们将 CountGD 扩展为生成边界框作为输出,并介绍了一种自动去除假跟踪的方法;第四,我们发布了 VIDEOCOUNT,这是一个新的视频数据集,用于评估此开放世界目标计数任务算法的性能。
2 相关工作
开放世界图像目标计数
关于开放世界目标计数的先前工作仅集中在图像上。最早的基于图像的方法要求用户在推理时手动标注一些示例对象,使用“视觉示例”进行计数[6, 8, 16, 18, 21, 25, 28, 32, 35, 36]。最近的工作[1, 2, 3, 10, 13]利用预训练的视觉-语言基础模型,使类别可以通过文本指定。CountGD[2]是最新的最先进的开放世界计数模型,它使用 Grounding DINO[19]基础模型的联合视觉-语言嵌入空间,允许用户用文本指定要计数的对象。此外,与大多数之前仅接受文本或仅接受视觉示例的方法不同,CountGD 允许同时接受两种输入。通过仅接受文本,CountGD 可以在无人干预的情况下适应新类别,而通过接受视觉示例,它提供了更高的准确性。我们在本工作中构建在 CountGD 之上。
开放世界视频目标计数
虽然没有先前工作明确关注视频中的开放世界目标计数,但有一些开放世界的跟踪器可以重新用作计数器。最新的开放世界跟踪器依赖于对象检测器[14, 15]。例如,开放世界跟踪器 MASA[14]利用诸如 Grounding DINO[19]和 Detic[39]等检测器,首先使用文本检测任何对象,然后在视频帧之间进行关联。在整个视频中识别和跟踪的独特对象可以被枚举以估算数量。然而,由于这些方法扩展了检测器,它们继承了其局限性,例如在杂乱场景中难以识别许多遮挡的物体。
不依赖于预训练的基于图像的目标检测器的跟踪器也有局限性。Trackformer[22]是一种基于 Transformer 的跟踪模型,使用集合预测损失端到端训练。与 MASA[14]和其他开放世界跟踪方法不同,Trackformer 不能在推理时适应新类别。它只能跟踪经过训练的跟踪对象。SAM 2[29]、SAM 2.1 和 SAMURAI[34]是非常新的最先进的跟踪和分割模型,可以在不重新训练的情况下适应新对象。
SAM 2.1 和 SAMURAI 通过运动线索、更长的视频训练和遮挡处理进行了扩展,但都需要手动提示,而 COUNTGD-BOX 和 COUNTVID 自动化了这一过程。SAMURAI 还主要专注于单目标跟踪。
3 COUNTVID 和 COUNTGD-BOX 模型
图 2: 使用 COUNTVID 推理: 每个阶段以逐渐降低的粒度处理视频。在第 1 阶段,基于检测的计数器使用文本和示例生成每个帧的框提示,这些提示由分割模型用来生成对象掩码。第 2 阶段在 w 帧的序列上应用时间过滤器,以去除瞬时假阳性(例如 f i f_i fi 中的红色圈住的对象)。第 3 阶段将第 2 阶段的对象掩码传播到整个视频,同时检查每一帧中的新对象。所有已识别的对象都被枚举以生成最终的全局计数。
在本节中,我们首先介绍 COUNTVID,这是我们用于开放世界视频目标计数的方法。然后介绍 COUNTGD-BOX,这是一种多模态计数模型,输出边界框并扩展 CountGD[2]。
3.1 COUNTVID
COUNTVID 是一个模型,输入视频和灵活的提示,包括仅文本、仅视觉示例或两者兼有,并输出帧级别的计数和一个全局计数,指示视频中匹配提示的唯一对象的数量。在推理过程中,COUNTVID 分三个阶段处理视频,每个阶段的粒度逐渐降低。各阶段如图 2 所示。
阶段 1 - 帧级处理
第一阶段是使用视觉示例和文本提示的地方,目标是自动生成每帧中所有目标对象实例的边界框和分割掩码。为了实现这一点,将视觉示例和文本提示馈送到一个计数和检测模型,该模型独立地应用于每个视频帧以获得边界框。计数模型输出的边界框用作分割模型的框提示,该模型输出帧中所有对象的掩码。我们使用来自单个帧的示例并将其应用于整个视频以减少用户的注释工作量。为了提高效率,在开始此阶段之前会对帧进行子采样。
阶段 2 - 短期处理
尽管计数模型在计数方面非常准确,但仍可能产生误检。这可能是由于运动模糊造成的。阶段 2 的目标是通过时间过滤器去除这些误检。该过滤器利用观察到的事实,即误检在阶段 1 的独立(逐帧)预测中往往是瞬时的,在后续帧中几乎立即消失。对于阶段 1 中的每个检测,过滤器检查对象是否存在于 w 帧的时间窗口内。使用分割和跟踪模型,过滤器向后跟踪 w−1 帧并向前跟踪 w−1 帧。对象通过跟踪传播的掩码与阶段 1 中独立逐帧检测的掩码之间的交并比 (IoU) 进行匹配。IoU 大于 0.5 被视为匹配。如果对象在至少 w 个连续帧的序列中匹配,则保留它。否则,在阶段 3 开始前将其删除。注意,必须前后跟踪时间,因为新对象可能会出现(并通过向前跟踪验证),并且对象也可能消失(例如被遮挡),并通过向后跟踪验证。
阶段 3 - 长期处理
在最后一个阶段,COUNTVID 将分割和跟踪模型应用于完整视频,长期跟踪对象的同时检查每帧中的新对象。对于每个对象,COUNTVID 预测一个 masklet,即随时间传播的对象掩码。通过比较现有 masklet 与阶段 2 中的逐帧掩码来检测新对象。与现有 masklet 不重叠的逐帧掩码被识别为新对象。新对象随后也被跟踪。
一旦所有帧都检查完新对象后,masklet 被枚举以计算最终的全局计数。新对象检测逻辑将在补充材料中详细解释和说明。
COUNTVID 实现
我们使用 COUNTGD-BOX(如下所述)实现 COUNTVID 的计数和检测模型,并使用 SAM 2.1 作为跟踪器。COUNTGD-BOX 中的框被用作阶段 1 中 SAM 2.1 的框提示,然后 SAM 2.1 跟踪提示对象的掩码,生成 masklet。
3.2 COUNTGD-BOX
为了自动获取分割模型的框提示,我们需要一个能够处理有许多相似重叠对象的密集场景的检测器,因为这在我们具有挑战性的任务中的视频中会发生。正如我们的结果和先前工作[1, 2]所示,存在开放世界的检测器,但它们在这种设置下表现不佳。另一方面,存在表现良好的开放世界计数器。在所有这些计数器中,CountGD[2] 是最灵活的,可以接受仅文本、仅视觉示例或两者同时指定对象。
它还在所有提示设置中普遍提供强健的计数性能,如我们的结果所示。然而,与其他不太灵活的基于检测的计数模型[25, 26, 27]不同,CountGD 输出点,而不是框。
点提示不能很好地定义要计数的对象。例如,汽车窗户上的一个点可能意味着每个窗户或每辆汽车都应该被计数。
鉴于一辆车上可能不止一个窗户,这个问题可能导致错误的高或低计数。这种歧义可以通过指定图像区域(框)来解决。
为了获取分割模型的良好定义对象提示,我们训练 CountGD[2]除了点之外还输出框。CountGD 原本缺乏这种能力,因为对象计数数据集中可用的边界框数据有限,例如 FSC-147[28]。这种稀缺性存在的原因是标注数百到数千个对象的边界框极其繁琐。相反,这些数据集只为每张图像提供少数对象的框注释。受到 DAVE[27] 的启发,我们扩展了 CountGD 来利用这些弱训练标签。由于 CountGD 是建立在 Grounding DINO[19]
架构之上,它已经为每个对象输出四个参数。前两个用作对象的中心,而后两个被 CountGD 丢弃。我们在 CountGD 的损失中增加了两个新项 L h , w e L^e_{h,w} Lh,we 和 L G I o U e L^e_{GIoU} LGIoUe,如公式 (1) 所示,训练最后两个参数成为边界框的高度和宽度。 L h , w e L^e_{h,w} Lh,we, 和 L G I o U e L^e_{GIoU} LGIoUe 基于 Grounding DINO[19] 的边界框回归损失。这里的区别在于这些损失仅针对示例计算,而在 [19] 中,它们是针对图像中的所有对象计算的。 L h , w e L^e_{h,w} Lh,we 是高度和宽度的绝对误差之和, L G I o U e L^e_{GIoU} LGIoUe 是预测和地面真值示例框之间的广义交并比。
通过在示例框上训练,CountGD 学习不仅预测点,还能预测边界框。我们将扩展的 CountGD 命名为 COUNTGD-BOX,并在推断时使用它来生成分割模型的框提示。
L = λ l o c ( L h e , w + L c e n t e r ) + λ G I o U L e G I o U + λ c l s L c l s (1) L=λ_{loc}(L_{he,w}+L_{center})+λ_{GIoU}L_{eGIoU}+λ_{cls}L_{cls} \tag{1} L=λloc(Lhe,w+Lcenter)+λGIoULeGIoU+λclsLcls(1)
4 VIDEOCOUNT: 一个新的视频计数数据集
目前的对象计数基准不足以支持开放世界视频对象计数任务。这是因为现有的计数数据集要么仅支持图像[9, 28],要么仅包含有限数量的类别[5, 20, 40]。此外,现有的跟踪数据集如 TAO[4] 只为对象的一个子集提供详尽的注释,并且每个视频最多只标注十个对象,这对于实际的计数用例来说太低了。因此,在本节中,我们介绍 VIDEOCOUNT,这是第一个用于开放世界视频对象计数的新数据集,它克服了这些限制。VIDEOCOUNT 包含三个基准测试:TAO-Count、MOT 20-Count 和 Science-Count。它包含 370 个视频,涵盖了广泛的对象类别和计数,如表 1 所示。我们在补充材料中包含更多细节。
我们的数据集来源于多样化的来源。对于 TAO-Count 和 MOT 20-Count,我们向现有的跟踪数据集 TAO[4] 和 MOT 20[5] 的子集添加元数据,指定了目标对象的数量。对于 Science-Count,我们发布新的视频和计数注释,这些注释来自于监测企鹅种群和用 X 射线成像捕捉的液态金属合金结晶过程的视频[17]。VIDEOCOUNT 的示例视频帧如图 3 和补充材料所示。
VIDEOCOUNT 测试 COUNTVID 适应各种具有挑战性的场景的能力。TAO-Count 测试 COUNTVID 在具有显著运动的场景中计数少量对象的能力。MOT 20-Count 测试 COUNTVID 在严重拥挤的场景中(例如,>1000 个对象)计数的能力,其中有很多重叠的实例。Science-Count 评估 COUNTVID 在许多相似对象的棘手现实应用中的表现,有些对象甚至在 X 射线视频中结构迅速变化,这通常是基础模型以外的领域。
5 实验
实施细节:COUNTGD-BOX 使用 CountGD[2] 的预训练权重初始化。它的 MLP 框检测头然后在 FSC-147[28] 训练集上微调 30 个周期,并在验证集上早停。方程 (1) 中的 λloc、λGIoU 和 λcls 设置为 5、2 和 2,使用验证集上的网格搜索。对于 COUNTVID,在阶段 1 中,我们以 3 fps 的频率采样帧。在阶段 2 中,时间滤波器的窗口大小 w 设置为 3 帧,对应一秒。匹配的 IoU 阈值设置为 0.5。补充材料中给出了其他实施细节,包括每个阶段的推理时间和内存消耗的详细分析。
图 3:在 VIDEOCOUNT 上的定性结果:f 1 和 f 2 是按时间顺序采样的帧。COUNTVID 处理密集 (b, c)、变形 (b) 和相似 (a, b) 对象。
5.1 数据集 & 指标
图像:
为了评估在拥挤场景中先进检测和计数模型的计数和检测准确性,我们使用了 FSCD-147[25],它为广泛建立的开放世界图像对象计数数据集 FSC-147[28] 的验证和测试集提供了边界框。训练集没有提供详尽的边界框。
每张图像都用三个视觉示例进行注释。为了测量检测准确性,我们按照 [25] 提供平均精度阈值 0.5 到 0.95 (AP) 和 IoU 阈值 0.5 (AP 50) 的平均精度。我们还报告了 [25, 26, 28] 中使用的基于图像的计数 MAE 和 RMSE。我们按照 [26] 的方法,将计数视为边界框的枚举,并根据每种方法允许的内容报告结果,分别给出仅文本、仅三个示例或两者的结果。
视频:
为了评估视频计数的准确性,我们在 VIDEOCOUNT 上报告结果。由于 FSC-147[28] 的训练集与 TAO-Count 的类别重叠,我们也在 TAO-Count 中删除了 FSC-147 训练类别的视频子集上报告结果。为了衡量视频计数的准确性,我们借鉴了图像计数的先前工作 [28],使用了平均绝对误差 (MAE) 和均方根误差 (RMSE)。我们定义了这些指标的视频模拟版本用于我们的新任务。更具体地说,我们定义视频的 MAE 和 RMSE 如下:MAE=(1/N)∑Ni=1 |yˆi−yi|,RMSE=[(1/N)∑Ni=1 (yˆi−yi) 2]^1/2,其中 N 是测试视频的数量,yˆi 是视频 Xi 的预测计数,yi 是视频 Xi 的地面真实计数。更详细地说,yi 是视频中匹配提示的唯一对象的数量。在计算 MAE 和 RMSE 时,如果一个视频包含多个类别,我们将每个唯一的视频-文本对视为一个不同的数据点。重要的是,视频计数的 MAE 和 RMSE 指标不同于图像使用的指标。在视频设置中,地面真实计数反映了唯一对象身份的数量,而不是检测的数量。这需要匹配和重新识别:跨帧重新出现的对象不得重复计数,同一对象的重复检测必须正确关联。
5.2 评估帧级处理
在表 2 中,我们评估了不同图像计数和检测方法在 FSCD-147[25] 上的表现,使用不同的提示,包括仅文本、仅示例或两者一起。对于示例,我们使用 FSC-147 为每个样本提供的三个。文本描述来自 FSC-147 类名或 FSC-147-D[1]。对于 CountGD 基线,我们使用 COUNTGD-BOX 初始化 CountGD[2] 的预训练权重,没有额外的微调。重要的是,这意味着 CountGD 基线产生与原始 CountGD 模型完全相同的计数。从这些结果中,我们得出三个结论:(i) 正如先前工作[2, 3]所证实的那样,
SoTA 检测器如 Owlv 2[23] 和 Grounding DINO[19] 在计数设定中效果不佳,尤其是在有许多相似和重叠对象的情况下。这里需要注意的是,这些检测器并未在 FSC-147[28] 上进行训练,而计数器则进行了训练。另一方面,这些检测器是在更大的数据集上端到端训练的[19, 23],而 FSC-147 是评估计数方法的标准基准,无论这些方法是否在 FSC-147[1, 13, 28] 上进行微调;(ii) 将 CountGD[2] 扩展为 COUNTGD-BOX,显著提高了其检测准确性,同时保留了其计数准确性;(iii) SoTA 模型取决于使用的提示类型(文本/示例/两者)。虽然 COUNTGD-BOX 是一个“全能型选手”,但它并不是所有情况下的最佳选择。COUNTGD-BOX 和 PSeCo[38] 在仅文本设定中表现相当出色。GeCo[26] 在仅示例设定中是优越的模型,尽管 COUNTGD-BOX 和 DAVE[27] 也是强有力的竞争对手。对于接受示例和文本两者的模型,COUNTGD-BOX 在检测方面优于 CountGD[2]。在某些情况下,文本确实为示例增加了信息,例如指定位置或颜色(参见 [2] 的第 4.5 节)。然而,在文本和示例都代表类别的设定中,如 FSC-147,仅使用示例的 GeCo 应该被使用。
5.3 短期处理评估
在表 3 中,我们评估了时间滤波器在 TAO-Count 上的效果。具体而言,我们报告了在应用 COUNTVID 时(有无时间滤波器)基于视频的 MAE 和 RMSE,仅使用文本提示。对于计数器,我们使用 COUNTGD-BOX,对于跟踪器,我们使用 SAM 2.1[29]。TAO-Count 中的场景涉及显著的运动和模糊,导致假阳性。时间滤波器有效地去除了这些假阳性,将 MAE 和 RMSE 减少了超过 50%,显著提高了计数准确性。
5.4 长期处理评估
在本节中,我们评估 COUNTVID 在 VIDEOCOUNT 中基准测试的整体基于视频的计数性能,并将其性能与基线进行比较。对于 TAO-Count 的文本描述,我们使用类别 synsets[4]。我们使用文本“human”为 MOT 20-Count。我们为 Science-Count 使用“white crystal”和“penguin”。当使用示例时,为视频的第一帧提供 3–6 个示例,并应用于所有后续帧。整体结果见表 4 和表 5。
基线:我们将 COUNTVID 与两个强大的基线进行比较,这两个基线基于多目标跟踪(MOT)方法。第一个基线,我们重新利用了强大的开放世界跟踪器 MASA[14],其实现基于 Grounding DINO[19]。第二个基线,ByteTrack[37] 与 COUNTGD-BOX 结合。每种方法中的唯一轨迹被枚举以估计计数。更多实现细节在补充材料中。
使用 COUNTGD-BOX 和 SAM 2[29] 或 SAM 2.1[34] 实现的 COUNTVID 在仅文本提示下,以及在同时提供示例和文本的情况下,取得了比 MASA[14] 和 ByteTrack[37] 显著更好的计数准确性,如表 4 和表 5 所示。在仅示例提示下,ByteTrack 的表现略优于 COUNTVID。我们还比较了使用不同计数器和跟踪器实现的不同变体的 COUNTVID。对于计数器,我们使用 COUNTGD-BOX 和 GeCo[26],对于跟踪器,我们使用 SAM 2 和 SAM 2.1。我们注意到,仅示例的表现优于仅文本,同时提供两种提示是最好的,表明 COUNTVID 能有效受益于更多的对象信息。我们发现,虽然 GeCo[26] 在图像上表现良好,但在视频上不如 COUNTGD-BOX 准确。在仅示例设定中,SAM 2.1 在 Crystals 方面显著优于 SAM 2。然而,它在 Penguins 方面略微落后于 SAM 2。在表 4 中可以看到,TAO-Count 和 FSC-147[28] 的类别重叠对 COUNTVID 的计数准确性没有显著影响。如图 3 所示,COUNTVID 能够在密集场景中计数,检测新对象并跟踪旧对象,并计数变形对象。错误可能由于计数模型的漏检和跟踪器的重新识别挑战而发生。包含大量遮挡和相似实例的场景会导致更高错误率,因为这种情况的发生次数更多。
6 结论
我们提出了视频中开放世界目标计数的新任务,以及一个新模型 COUNTVID 和一个新数据集 VIDEOCOUNT 来测试该模型。COUNTVID 输入灵活的视觉示例和文本提示,并输出帧级计数和一个全局计数,表示视频中匹配提示的唯一对象数量。COUNTVID 将继续受益于更好的跟踪器和类别无关的基于检测的计数模型,因为它们可以轻松插入我们提出的框架中。
视频目标计数希望是真正的“实用化”与“智能化”。比如生态监测领域中需统计鱼类数量、鸟类迁徙路径,无需人工标注,只需一句“帮我数一下这些红头鸭的数量”,即可完成任务。智慧城市常见的对监控视频中行人、车辆进行实时统计,可灵活切换关注对象,如“帮我数一下骑自行车的人”。随着 CountVid 等模型的不断发展和完善,相信它将在更多的实际应用场景中发挥重要作用,为视频分析和理解带来更大的突破。
参考文章
https://mp.weixin.qq.com/s/hICrrfEgriyktoIxnbjPEQ
https://github.com/niki-amini-naieni/CountVid/
https://arxiv.org/pdf/2506.15368
相关文章:
牛津大学开源视频中的开放世界目标计数!
视频中的开放世界目标计数 GitHub PaPer Niki Amini-Naieni nikianrobots.ox.ac.uk Andrew Zisserman azrobots.ox.ac.uk 视觉几何组(VGG),牛津大学,英国 图 1:视频中的目标计数:给定顶行的视频&#…...
1.2、CAN总线帧格式
1、帧类型 2、帧类型介绍 (1)数据帧 扩展格式是为了扩展ID,ID号每4位一个字节(11位最大ID号为0x7FF) (2)遥控帧 遥控帧由于没有Data,所以DLC可能没有意义,可给任意值&am…...
DeepSeek今天喝什么随机奶茶推荐器
用DeepSeek生成了一个随机奶茶推荐器-今天喝什么,效果非常棒!UI界面美观。 提示词prompt如下 用html5帮我生成一个今天喝什么的网页 点击按钮随机生成奶茶品牌等,要包括中国常见的知名的奶茶品牌 如果不满意还可以随机再次生成 ui界面要好看 …...
词编码模型怎么进行训练的,输出输入是什么,标签是什么
词编码模型怎么进行训练的,输出输入是什么,标签是什么 词编码模型的训练本质是通过数据驱动的方式,将离散的文本符号映射为连续的语义向量。 一、训练机制:从符号到向量的映射逻辑 1. 核心目标 将单词/子词(Token)映射为低维向量,使语义相关的词在向量空间中距离更近…...
LSTM、GRU 与 Transformer网络模型参数计算
参数计算公式对比 模型类型参数计算公式关键组成部分LSTM4 (embed_dim hidden_size hidden_size hidden_size)4个门控结构GRU3 (embed_dim hidden_size hidden_size hidden_size)3个门控结构Transformer (Encoder)12 embed_dim 9 embed_dim ff_dim 14 embed_dim…...
nnv开源神经网络验证软件工具
一、软件介绍 文末提供程序和源码下载 用于神经网络验证的 Matlab 工具箱,该工具箱实现了可访问性方法,用于分析自主信息物理系统 (CPS) 领域中带有神经网络控制器的神经网络和控制系统。 二、相关工具和软件 该工具箱利用神经…...
SQLite3 在嵌入式系统中的应用指南
SQLite3 在嵌入式系统中的应用指南 一、嵌入式系统中 SQLite3 的优势 SQLite3 是嵌入式系统的理想数据库解决方案,具有以下核心优势: 特性嵌入式系统价值典型指标轻量级适合资源受限环境库大小:500-700KB零配置无需数据库管理员开箱即用无…...
原生微信小程序网络请求与上传接口封装实战指南
本文基于微信小程序原生 API,封装 request 和 uploadFile 接口,最终实现统一请求管理、请求拦截、错误处理等能力。 📦 一、为什么要封装网络请求? 微信小程序提供了 wx.request 和 wx.uploadFile 原生 API,但直接使用…...
电路图识图基础知识-塔式起重机控制电路识图与操作要点(三十五)
引言: 塔式起重机作为建筑施工中不可或缺的大型起重运输机械设备,其控制电路的识图与操作对于确保施工安全和效率至关重要。本文将详细介绍塔式起重机的控制电路识图,帮助操作人员更好地理解和掌握其工作原理。 一、塔式起重机概述 塔式起重…...
基于SpringBoot + Vue 的网上拍卖系统
基于springbootvue的在线拍卖系统| Java | vue | 配万字文档 | springboot001 〔运行环境〕 Java版本:jdk1.8 node版本:13.x python版本:2.7 IDE类型:idea或exlipse 数据库:MySQL(5.x或8.x版本都…...
用 EXCEL/WPS 实现聚类分析:赋能智能客服场景的最佳实践
聚类分析作为无监督学习的核心技术,能在客服数据中发现隐藏的用户群体或问题模式。尽管 Excel/WPS 并非专业统计软件,但巧妙利用其内置功能,也能实现基础的聚类分析,为中小型客服团队提供快速洞察。以下介绍具体方法及智能客服场景…...
利用mold加快rust程序构建
我用rust的cargo build命令编译polars-cli时,用时达到14分钟,如下所示。 Finished dev profile [unoptimized debuginfo] target(s) in 14m 19s,通过核对时间戳,发觉其中最后一步生成可执行文件花了6分钟。 于是向DeepSeek请教&a…...
leetcode543-二叉树的直径
leetcode 543 思路 路径长度计算:任意两个节点之间的路径长度,等于它们的最低公共祖先到它们各自的深度之和递归遍历:通过后序遍历(左右根)计算每个节点的左右子树深度,并更新全局最大直径深度与直径的关…...
(三)yolov5——模型训练
一、准备数据 先准备一个MP4的视频 1.测试一帧 使用opencv来提取每一个视频的帧 先使用以下代码查看一帧的内容,是否符合预期 import cv2 import matplotlib.pyplot as plt# 打开视频文件 video cv2.VideoCapture("111.mp4") # 读取一帧 ret, frame…...
STM32对接霍尔传感器
STM32对接霍尔传感器的技术解析与应用实现,结合测速原理、硬件设计、代码实现及进阶应用,涵盖从基础到实战的全流程指南,可以应用到金属检测等功能。 ⚙️ 一、霍尔传感器基础 工作原理 霍尔传感器基于霍尔效应,当磁铁靠近时输出电平变化(常开型无磁铁时输出高电平,靠近时…...
SpringCloud系列(32)--使用Hystrix进行全局服务降级
前言:在上一节中我们使用Hystrix进行了服务降级,但是要在每个方法上面配置HystrixCommand才能实现服务降级,如果需要进行服务降级的方法多了,HystrixCommand也就得配置很多遍,所以本节内容则是使用Hystrix进行了全局服…...
Origin绘制三Y轴柱状图、点线图、柱状点线图
三Y轴柱状图是一种高级数据可视化形式,它通过三个独立的纵轴在同一个图表中展示不同量纲或量级的数据系列。其主要用于揭示不同量级指标间的关联性(例如高销售额是否伴随高利润率)。 当数据满足以下条件时,即可绘制三Y轴图&#x…...
通信网络编程3.0——JAVA
主要添加了私聊功能 1服务器类定义与成员变量 public class ChatServer {int port 6666;// 定义服务器端口号为 6666ServerSocket ss;// 定义一个 ServerSocket 对象用于监听客户端连接//List<Socket> clientSockets new ArrayList<>();// 定义一个列表用于存储…...
4-深度学习网络层
深度学习模型 Embedding层 Embedding矩阵是可训练的参数,一般会在模型构建时随机初始化 也可以使用预训练的词向量来做初始化,此时也可以选择不训练Embedding层中的参数 输入的整数序列可以有重复,但取值不能超过Embedding矩阵的列数 核心…...
【LeetCode】用双指针解决移除元素问题、合并两个有序数组求解
🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训 🍉学习方向:C/C方向 ⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,…...
车载诊断架构协议篇 --- OBDonUDS和ZEVonUDS
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从&#x…...
医学 Agent:自带医学深度调研 deep research,优化治疗策略+药物参考
医学 Agent:自带医学深度调研deep research,优化治疗策略药物参考 第一版代码输出结果,居然连不上网运行结果梳理 第二版结果测试 第一版代码 医疗顾问AI系统 - 基于Qwen API 的智能医疗助手 最终目标:构建一个能够查询疾病治疗方…...
硬件工程师笔试面试高频考点汇总——(2025版)
目录 1 电子器件部分 1.1 电阻 1.1.1 电阻选型时一般从哪几个方面进行考虑? 1.1.2 上拉下拉电阻的作用 1.1.3 PTC热敏电阻作为电源电路保险丝的工作原理 1.1.4 如果阻抗不匹配,有哪些后果 1.1.5 电阻、电容和电感0402、0603和0805封装的含义 1.1.6 电阻、电…...
春秋云镜【CVE-2017-18349】fastjson wp
知识点 fastjson反序列化 将json转为java对象的过程 漏洞存在版本 Fastjson<1.2.24 漏洞原理 fastjson引入的autotype功能,本来是为了区分同名同元素但是不同类型的对象序列化后内容一致无法还原的问题,但是这一操作允许了json数据中通过type来指定对…...
网络编程:八股文
一.Reactor网络模型 ------------------- | 应用主线程 | -------------------|v ------------------- | Reactor | | (事件分发器) | -------------------|v ------------------- | 事件多路分发器 | <--- epoll/poll/select -----------------…...
设计模式精讲 Day 11:享元模式(Flyweight Pattern)
【设计模式精讲 Day 11】享元模式(Flyweight Pattern) 文章内容 在软件开发过程中,我们常常需要处理大量相似对象的创建和管理问题。如果这些对象之间存在大量的重复信息,直接创建每一个对象会导致内存占用过高、系统性能下降。享…...
常用终端命令(Linux/macOS/bash 通用)分类速查表
文件与目录操作 命令作用说明pwd显示当前路径ls列出当前目录内容ls -l以列表形式显示文件详细信息ls -a显示所有文件(包括隐藏文件)cd <目录名>进入指定目录cd ..返回上一级目录cd ~回到用户主目录mkdir <目录名>创建目录mkdir -p a/b/c创建…...
Robyn高性能Web框架系列04:事件、中间件与错误处理
请求-响应过程 应用启动、关闭事件1、启动事件(Startup Events)2、关闭事件(Shutdown Events) 中间件1、前置中间件(BeforeRequest)2、后置中间件(AfterRequest)3、示例:…...
深入理解JavaScript设计模式之迭代器模式
文章目录 深入理解JavaScript设计模式之迭代器模式定义官方翻译白话翻译 实现jQuery中的each迭代器实现数组迭代器迭代器实现创建Dom元素 内部迭代器和外部迭代器内部迭代器外部迭代器 迭代类数组对象和字面量对象倒序迭代器中止迭代器迭代器的应用举例音乐播放器案例待输出更新…...
【项目管理】项目管理资料文档模板(ZIP,PPT,WORD)
项目交付文档 01项目详细调研计划编写规范V1.0.doc 03项目详细调研报告编写规范V1.0.doc 07软件需求规格说明书评审规范V1.0.doc 10.软件需求规格说明.doc 产品检查单,xls 工程评审.zip 软件标准过程集.zip 系统测试管理规程.docx 四)项目管理计划.doc 项目管理系统实施项目管理…...
DeepSeek中的提示库及其用法示例
《DEEPSEEK原生应用与智能体开发实践 图书》【摘要 书评 试读】- 京东图书 为了深入探索DeepSeek提示词样例的丰富内涵,充分挖掘其背后潜藏的无限可能,同时致力于为用户打造更为卓越、便捷且高效的使用体验,DeepSeek官网的API文档匠心独运地…...
292. Nim 游戏
292. Nim 游戏 - 力扣(LeetCode) 想法 枚举问题: n 1 ~ 3 ,由于我先手,我可以直接拿走全部的石头,所以我赢n 4,由于我先手,我拿掉 1 - 3 块石头 ,剩下的可能就是 1 -…...
STM32 串口通信②:蓝牙模块HC-05控制单片机
一 前言 上一篇我们已经成功实现单片机和电脑的连接,接下来,我们学习一个有趣的板块,HC-05蓝牙模块,这个蓝牙模块,我们就要建立手机和单片机的通讯啦,还是比较有趣的一个过程,大家可以跟着多操作…...
艾立泰数字化重塑汽车零部件包装租赁行业
在汽车零部件包装租赁行业,资产利用率低、流转效率差、运输成本高等痛点长期困扰企业。艾立泰科技通过数字化解决方案,成为该行业降本增效的关键合作伙伴,助力企业实现从传统管理模式向智能化的跃迁。 精准库存管理:告别“盲人摸…...
Windows电脑数据恢复终极指南:从原理到实战
Windows电脑数据恢复终极指南:从原理到实战 数据丢失是每个电脑用户都可能遭遇的噩梦。本文将为您全面解析Windows平台下的数据恢复技术,从基础原理到高级技巧,帮助您在文件误删、格式化、系统崩溃等情况下找回宝贵数据。 一、数据恢复基础…...
进入python虚拟环境的方法
首先,切换到虚拟环境所在的目录(即包含venv文件夹的目录): Cmd cd D:\phd\phd1spring\July\pythonstduy\projecton 然后,激活虚拟环境: Cmd .\venv\Scripts\activate 如果上述方法不行,还可…...
大数据时代UI前端的变革:从静态展示到动态交互
hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在大数据时代,信息以前所未有的速度和规模增长。这种数据环境的变化,深…...
海拔案例分享-门店业绩管理小程序
在各大电商平台和直播带货如火如荼来的当下,各行各业的门店都在积极寻求创新的管理方式,以提升业绩、优化运营。长沙的一家策划运营公司,敏锐地捕捉到这一市场需求,他们见过太多门店老板对着Excel表格叹气:美容店算错提…...
Python中的数据可视化:使用Matplotlib绘制图表
数据可视化是将复杂数据集转换为图形或图像表示的过程,旨在简化信息的解释和传达。Python作为一种多功能编程语言,提供了多种强大的库来实现这一目标,其中最受欢迎和广泛使用的是Matplotlib。 首先,我们需要确保已经安装了必要的…...
【VUE】1.准备工作
一、环境准备(本机仅需一次) 安装 Node.js(推荐 LTS 版本,包含 npm) 打开 VSCode,安装插件(推荐): Vetur 或 Volar(用于 Vue 支持) ESLint / Pr…...
Linux下的版本控制器Git(15)
文章目录 如何理解版本控制(9-0.00.00)Git 的理解Git 的历史具体操作和用法补充细节 简介:那个对Git的理解,是我用自己的话语结合故事进行阐述,可能理解的不到位,有些错误还请多多包含!说句实话…...
UI设计 | 审美积累 | 极繁风格(Maximalism / Complex UI)
如果极简追求“只保留必须的”,那极繁的设计思路就是“有条理地堆叠信息和情绪”。它不是无序的炫技,而是在秩序中有意识地填满视觉空间:字体层叠、图文混排、大量干扰信息并置,却又彼此克制。最终目标,是让用户在强信…...
MocapApi 中文文档 和github下载地址 NeuronDataReader(以下简称 NDR)的下一代编程接口
以下是 MocapApi 技术文档 github https://github.com/pnmocap/MocapApi?tabreadme-ov-file 国内可以查找getcode 英文文档 https://mocap-api.noitom.com/mocap_api_en.html 概述 MocapApi 是 NeuronDataReader(以下简称 NDR)的下一代编程接口&…...
c++面试题每日一学记录-C++类型转换
一、C++ 类型转换体系 C++ 提供 4 种命名转换操作符,比 C 风格转换更安全、意图更明确: 转换类型关键字主要用途安全检查静态转换static_cast相关类型转换(数值、类层次上行/下行)编译期动态转换dynamic_cast多态类型的安全下行转换运行时常量转换const_cast添加/移除 con…...
Maven 多模块项目调试与问题排查总结
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
【C#】C#异步编程:异步延时 vs 阻塞延时深度对比
文章目录 前言一、阻塞延时:Thread.Sleep1、 实现方式2、 工作原理3、 缺点 二、异步延时:Task.Delay1、 实现方式2、 工作原理3、 优点 三、深度对比四、实际应用示例对比1、 阻塞延时在UI应用中的问题2、 异步延时在UI应用中的正确用法3、 带取消功能的…...
c#实现halcon的rle编码blob分析
效果展示 实现功能 connection膨胀腐蚀开运算闭运算特征计算 核心代码 using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Drawing; using System.Linq;namespace view3d {// 基础对象类,类似于 Halcon 的 HO…...
python基于微信小程序的广西文化传承系统
文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示:文章底部获取博主联系方式!!!!本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献:源码获取/详细视频演示 ##项目…...
Apache Flink深度解析:现代流处理引擎
好的,我来帮您写一篇关于Flink技术的详细介绍博客: Apache Flink深度解析:现代流处理引擎 一、Flink简介 Apache Flink是一个开源的分布式流处理和批处理统一计算引擎。它提供了数据流上的状态计算、精确一次性语义保证、高吞吐、低延迟等特性,能够运行在所有常见的集群…...
跨平台后端编程ASP.NET CORE Razor新一代Web开发框架C#
asp.net core Razor动态语言编程代替asp.net .aspx更高级吗? https://blog.csdn.net/xiaoyao961/article/details/148846065 C#Blazor应用-跨平台WEB开发VB.NET-CSDN博客 https://blog.csdn.net/xiaoyao961/article/details/148846437 Products.razor文件,Blazor和…...