Object Counting.
人类的视觉系统在计算图像中的物体数量时具有速算 (subbitizing)能力,即当给定不超过5个物体集合的视觉场景,人类能够对物体数量进行快速、准确和自信的判断。然而在物体数量不断增加的场景中,人类判断的准确性和可信度往往会急剧下降。
目标计数 (Object Counting)任务旨在从图像或视频中统计特定目标实例的数量。值得一提的是,通过目标检测和分割技术可以获得目标实例的边界框或mask,从而进一步计算出目标的数量;上述方法在标注样本较少的场合实施比较困难。本文主要讨论基于回归的计数方式,即直接学习图像到目标数量或目标密度图的映射关系。
通用的目标技术方案包括:
- 少样本计数 (Few-Shot Counting):提供目标样本exemplar在查询图像中进行匹配,如GMN, FamNet, LaoNet, CFOCNet, SAFECount, BMNet+, Counting-DETR, CounTR, LOCA, SPDCN, VCN, SAM Counting, CACViT, DAVE, SSD。
- 无参考计数 (Reference-less Counting):自动挖掘和计数所有显著性目标,如LC, RLC, MoVie, DSAA, CaOC, RepRPN-Counter, RCC, GCNet, ZSC, ABC123, OmniCount。
- 文本引导计数 (Text-Guided Counting):通过预训练视觉语言模型进行目标计数,如CountCLIP, CLIP-Count, CounTX, VLCounter, CLIP Counting, ExpressCount。
1. 少样本计数 (Few-Shot Counting)
少样本计数是指预先指定若干目标样本作为计数时的模板(exemplar或support),把计数问题转换为查询图像中的块匹配问题;这类方法的两个重要组成部分是特征提取模块和特征相似度度量,在训练和推理时需要额外引入图像块级别的标注成本。
⚪ Generic Matching Network (GMN)
- (arXiv1811) Class-Agnostic Counting
GMN模型通过resnet-50双流网络分别对查询图像和模板样本进行编码,将查询特征与样本特征连接后通过卷积回归预测密度图;并在特征编码中加入residual adapter模块,在微调计数任务时只训练该模块的参数。
⚪ Few-shot adaptation & matching Network (FamNet)
- (arXiv2104) Learning To Count Everything
FamNet模型通过冻结的resnet-50提取查询特征与样本特征,并通过FPN的多尺度来强化特征;然后通过ROI pooling将样本特征池化到统一大小,将查询特征与用作卷积核的样本特征进行卷积并生成多个相似性图,并通过密度估计模块预测密度图。
⚪ Look At One instance (LaoNet)
- (arXiv2112) Object Counting: You Only Need to Look at One
LaoNet仅采用包含一个查询样本边界框的图像作为输入,来统计出该类别所有目标的个数。主要由三个部分组成:特征提取、特征关联、密度回归。
- 特征提取模块采用VGG-19,对于查询样本采用尺度聚合机制融合不同尺度的信息;
- 特征关联模块通过自注意力和交叉注意力学习查询样本和图像特征的类内和类间关系
- 密度回归模块用于回归密度图。
⚪ Class-agnostic Fewshot Object Counting Network (CFOCNet)
- (WACV2021) Class-agnostic Few-shot Object Counting
CFOCNet网络由一个双流Resnet编码器和一个解码器组成。编码器分别提取查询图像和参考图像的特征,通过无参数卷积计算不同尺度下的匹配分数图(其中参考图像池化特征作为卷积核,自注意力增强的查询特征作为输入特征);解码器通过可训练的加权求和机制融合编码器生成的分数图,以生成预测的密度图。
⚪ Similarity-Aware Feature Enhancement (SAFECount)
- (arXiv2201) Few-shot Object Counting with Similarity-Aware Feature Enhancement
SAFECount首先采用相似度对比模块SCM对比目标模板和整个图像的特征并生成相似度图;然后采用特征增强模块FEM将相似度图作为引导,用目标模板的特征来提升整个图像的特征;最后从提升过的特征中回归密度图。
⚪ Bilinear Matching Network (BMNet+)
- (arXiv2203) Represent, Compare, and Learn: A Similarity-Aware Framework for Class-Agnostic Counting
BMNet+以端到端方式同时学习特征表示和相似度度量。对于特征表示,使用自注意力提取特征的类内信息;对于相似度度量,使用可学习的双线性相似度度量,并通过特征选择模块计算动态相似性度量,且对相似性图施加相似性损失。
⚪ Counting-DETR
- (arXiv2207) Few-shot Object Counting and Detection
Counting-DETR采用两阶段训练策略:首先在几个目标样本边界框上预训练,然后用预训练网络以点标注为查询点生成伪边界框,最后使用这些边界框作为监督来训练目标检测。考虑到伪边界框的不确定性,引入了不确定性损失来正则化边界框的学习。
⚪ CounTR
- (arXiv2208) CounTR: Transformer-based Generalised Visual Counting
CounTR模型首先通过掩码图像重建进行自监督预训练,然后对下游计数任务进行微调。进一步采用一种可扩展的Mosaic数据增强来合成训练图像。该模型首先通过视觉编码器对目标样本和查询图像进行编码,再通过特征交互模块进行信息交互,最后通过视觉解码器生成密度图。
⚪ Low-shot Object Counting network with iterative prototype Adaptation (LOCA)
- (arXiv2211) A Low-Shot Object Counting Network With Iterative Prototype Adaptation
LOCA模型包括图像特征提取、目标原型提取、原型匹配和密度回归。图像特征提取生成编码后的图像特征,目标原型提取为每个边界框计算一个目标原型,原型匹配通过目标原型和图像特征的深度相关运算构造相似度图,密度回归预测密度图。
⚪ Scale-Prior Deformable Convolution Network (SPDCN)
- (BMVC2022) Scale-Prior Deformable Convolution for Exemplar-Guided Class-Agnostic Counting
SPDCN将样本的尺度信息集成到计数网络主干中。主干网络使用了尺度先验的可变形卷积,给定样本的尺度来学习相应的尺度嵌入,然后根据这些嵌入向量调整可变形卷积的偏移量。作者进一步提出了一种尺度敏感的广义损失,该算法根据目标尺度自适应地调整损失函数。
⚪ Vicinal Counting Network (VCN)
- (CVPRW2022) Vicinal Counting Networks
VCN由一个生成器和一个计数回归器组成,共同学习计数和增加现有训练数据。生成器将图像与随机噪声向量一起作为输入,并生成输入图像的增强版本。计数回归器学习对原始图像和增强图像中的物体进行计数。
⚪ SAM Counting
- (arXiv2304) Can SAM Count Anything? An Empirical Study on SAM Counting
首先利用SAM的图像编码器(ViT-H)对给定图像进行特征提取;其次利用给定的目标边界框作为提示来生成参考目标的分割掩码,并与图像特征相乘并取平均以产生参考目标的特征向量;之后使用点网格(每边设定32个点)作为提示对所有内容进行分割,并将输出掩码与图像特征相乘并取平均生成所有掩码的特征向量;最后计算预测掩码的特征向量与参考目标的特征向量之间的余弦相似度,如果余弦相似度超过预定阈值,则将其视为目标对象。
⚪ Class-Agnostic Counting Vision Transformer (CACViT)
- (arXiv2305) Vision Transformer Off-the-Shelf: A Surprising Baseline for Few-Shot Class-Agnostic Counting
CACViT通过视觉Transformer中的自注意力机制能够实现特征提取与匹配过程:ViT中的自注意力过程分为自注意力组和交叉注意力组,前者关注的是查询图像与样本的特征提取,后者关注的是查询图像与样本的匹配过程。
⚪ Detect-and-Verify Paradigm (DAVE)
- (arXiv2404) DAVE – A Detect-and-Verify Paradigm for Low-Shot Counting
DAVE采用检测-验证的两阶段框架。检测阶段基于现成的计数器LOCA来估计目标位置密度图,通过非极大值抑制获得目标中心位置,然后预测每个目标的边界框参,构造高召回率的候选区域;验证阶段对候选区域的特征进行聚类,以识别和拒绝异常的候选区域,并更新密度图。
⚪ Spatial Similarity Distribution (SSD)
- (arXiv2405) Learning Spatial Similarity Distribution for Few-shot Object Counting
SSD框架包括特征提取模块、特征交叉增强模块、相似度金字塔计算模块、相似度学习模块与回归解码器模块组成。特征提取模块使用冻结的ResNet-50从查询图像和样本图像中提取金字塔特征;特征交叉增强模块增强特定类别的物体特征的相似度;相似度金字塔计算模块计算相似度图;相似度学习模块采用中心-枢轴4D卷积提取融合特征图;回归解码器模块预测密度图。
2. 无参考计数 (Reference-less Counting)
无参考计数是指直接从图像中提取显著的目标区域并进行计数;这类方法不需要额外标记与模板,但无法指定计数的目标类型,只能对所有目标进行计数。
⚪ Lower-Count (LC)
- (arXiv1903) Object Counting and Instance Segmentation with Image-level Supervision
LC框架是一种低数量图像级监督的计数框架,仅需要标记出小于4个计数样本的类别。LC框架由图像分类分支和密度分支组成:图像分类分支估计当前图像内是否存在目标类别;密度分支预测目标类别的目标数量,对于标记类别优化目标定位与类别计数,对于剩余类别惩罚过低计数。
⚪ Reduced Lower-Count (RLC)
- (arXiv1912) Towards Partial Supervision for Generic Object Counting in Natural Scenes
RLC框架是对LC框架的改进,仅需要标记出小于4个计数样本的类别的一个子集,使得计数器能够泛化到任意新类别上。RLC引入一个权重调制层,将在标记训练上训练好的卷积核迁移到未标注的类别上;并在密度分支上引入了一个类别无关的子分支,可以估计一幅图像的所有目标数量。
⚪ Modulated conVolutional bottleneck (MoVie)
- (arXiv2004) MoVie: Revisiting Modulated Convolutions for Visual Counting and Beyond
本文关注视觉计数VQA:给定一幅图像和一个序列,旨在预测出图像中与序列相关的目标数量。使用ResNet提取图像特征后送入到 Movie 模块。MoVie 模块由 4 个调制卷积瓶颈结构组成,每一个瓶颈结构将序列作为额外的输入来建模特征图,并输出相同尺寸的特征图,最后采用平均池化和两层的分类器来预测答案。
⚪ Dilated-Scale-Aware Attention (DSAA)
- (arXiv2012) Dilated-Scale-Aware Attention ConvNet For Multi-Class Object Counting
DSAA在给定点标注的情况下预测所有类别的密度图,首先利用VGG16提取特征图,然后采用扩张尺度感知模块DSAM通过不同的卷积扩张率来提取不同尺度的特征,最后通过类别注意力模块CAM减少不同类别密度图中的负关联。
⚪ Class-aware Object Counting (CaOC)
- (WACV Workshop 2022) Class-aware Object Counting
本文基于检测的方法,使用多类别密度估计分支估计类别密度图,然后将检测结果与类别密度图输入计数估计网络,从而预测出每个类别的数量。
⚪ RepRPN-Counter
- (arXiv2205) Exemplar Free Class Agnostic Counting
RepRPN-Counter首先使用Resnet-50提取输入图像的特征表示,并使用RepRPN预测每个anchor位置处的Proposal边界框、目标得分和重复得分。其中重复得分是指Proposal中的目标在图像中出现的次数。然后选择重复分数最高的Proposal作为示例样本,通过密度预测网络预测密度图。
⚪ Reference-less Class-agnostic Counting (RCC)
- (arXiv2205) Learning to Count Anything: Reference-less Class-agnostic Counting with Weak Supervision
RCC使用自监督知识蒸馏从ViT-small教师网络$g_t$中学习一个学生网络$g_s$,然后通过线性投影直接回归目标计数值。损失函数选用绝对百分比误差$\mid c -\hat{c}\mid / c$。
⚪ Generalized Counting Network (GCNet)
- (arXiv2302) GCNet: Probing Self-Similarity Learning for Generalized Counting Network
GCNet通过利用固有重复模式的自相似性来构造伪目标样本,进一步将提取的伪目标样本与原始图像的低级特征进行比较,以生成高保真的自相似图,作为随后计数回归的输入,并仅使用计数级监督信号进行端到端训练。
⚪ Zero-shot Object Counting (ZSC)
- (arXiv2303) Zero-shot Object Counting
ZSC可以对输入图像中的特定目标物体进行计数,在计数过程中只需要给定物体类别名:
- 给定查询类别,通过预训练的条件VAE在特征空间中生成类别原型;
- 给定查询图像,随机抽取若干图像patch,为每个patch提取特征嵌入;
- 选择特征嵌入与类别原型最邻近的patch作为类相关patch;
- 对选择的类相关patch,使用预训练的类别无关计数模型获得密度图;
- 使用误差预测器预测所有密度图的计数误差,选择误差最小的patch作为最终的样本exemplar。
⚪ A Blind Counter (ABC123)
- (arXiv2309) ABC Easy as 123: A Blind Counter for Exemplar-Free Multi-Class Class-agnostic Counting
ABC123同时学习预测类别数与每个类别的密度图。使用ViT-Small提取图像特征后,使用$m$个卷积上采样头回归$m$个类别密度图($m$通常大于所有可能出现的类别数)。之后构造$m$个预测密度图和$n$个真实密度图之间的最优二分匹配。
⚪ OmniCount
- (arXiv2403) OmniCount: Multi-label Object Counting with Semantic-Geometric Priors
OmniCount模型无需训练,利用预训练模型SAN对每个类别输出二元语义掩码,利用深度图渲染模型Marigold为图像生成深度图,使用深度图细化语义掩码以减少重复计数问题;对语义掩码应用基于k近邻的几何校正并生成一组参考点,输入预训练分割模型SAM生成每个目标物体的掩码进行计数。
3. 文本引导计数 (Text-Guided Counting)
文本引导计数是指通过视觉语言模型进行计数,通过文本提示来指定计数的类别。视觉语言模型(Vision Language Model, VLM)是在大量数据集上预训练的图像-文本匹配模型。
⚪ CountCLIP
- (arXiv2302) Teaching CLIP to Count to Ten
本文通过基于计数的对比损失微调CLIP来提高其对计数概念的定量理解。预测时将文本提示中的数字替换为所有数字可能的目标数量,并计算图像与每个文本提示之间的相似度得分。文本提示中与图像相似度得分最高的数字被认为是预测数量。
⚪ CLIP-Count
- (arXiv2305) CLIP-Count: Towards Text-Guided Zero-Shot Object Counting
CLIP-Count模型设计了块-文本对比损失,将CLIP模型的视觉编码器特征块与目标类别文本对齐;并进一步设计了层次化文本-块交互模块生成不同分辨率的特征图,并将这些特征图解码为目标的密度图。
⚪ CounTX
- (arXiv2306) Open-world Text-specified Object Counting
CounTX模型由图像编码器、文本编码器、特征交互模块和解码器组成。图像编码器和文本编码器使用预训练的CLIP模型;特征交互模块是两个Transformer解码器层,使用图像特征计算查询向量,使用文本特征计算键向量和值向量;解码器将特征解码为单通道密度图。
⚪ Visual-language Counter (VLCounter)
- (arXiv2312) VLCounter: Text-aware Visual Representation for Zero-Shot Object Counting
VLBase由CLIP编码器和计数解码器组成。利用CLIP的嵌入空间,实现文本和Token嵌入的隐式关联,从而对目标物体进行定位。在VLBase的基础上作者进一步提出了VLCounter,通过引入语义条件提示微调、可学习仿射变换与语义感知跳跃连接,增强预测相似度图与密度图中的语义信息。
⚪ CLIP Counting
- (NeurIPS workshop 2023) Zero-shot Improvement of Object Counting with CLIP
本文操纵CLIP模型的文本嵌入空间来提高CLIP模型的计数精度。作者提出了零样本文本嵌入编辑方法,从容易计数的目标中提取计数知识(表示为嵌入空间中的线性方向),然后通过向目标嵌入中增加特定计数向量,将该知识应用于目标对象。
⚪ ExpressCount
- (arXiv2402) Enhancing Zero-shot Counting via Language-guided Exemplar Learning
ExpressCount模型由一个面向语言的模板感知模块和一个零样本目标计数模块组成。其中面向语言的模板感知模块由一个语言编码器(预训练CLIP)、一个视觉编码器和一个基于Transformer的多模态集成模块组成,通过学习文本表达式与目标示例的边界框之间的映射,来提取目标样本进行后续的计数。