以人为中心的视觉任务因其广泛的应用而受到越来越多的研究关注。本文旨在从大量未标记的人类图像中学习通用的人类表示,可以最大程度上有利于下游以人类为中心的任务。我们称这种方法为SOLIDER,一种语义可控的自监督学习框架。与现有的自监督学习方法不同,SOLIDER利用来自人体图像的先验知识构建伪语义标签,并将更多的语义信息导入到学习的表示中。不同的下游任务总是需要不同比例的语义信息和外观信息。例如,人体解析需要更多的语义信息,而行人再识别需要更多的外观信息来进行识别。因此,单一的学习到的表示不能满足所有的需求。为了解决这个问题,SOLIDER引入了一个带有语义控制器的条件网络。在模型训练完成后,用户可以向控制器发送值,生成具有不同比例语义信息的表示,以适应下游任务的不同需求。最后,在6个下游人类中心视觉任务上对SOLIDER进行了验证。它超越了最先进的技术,并为这些任务建立了新的基线。代码发布在https://github.com/tinyvision/SOLIDER。
以人为中心的视觉分析在监控、体育、增强现实、视频制作等领域有着广泛的应用。行人再识别[13,14,41,82],属性识别[72,78],行人搜索[76,92],行人检测[3,24,32],人体解析[27,53],姿态估计[58,90]近年来取得了相当大的进展。另一方面,在当前的计算机视觉社区中有大量的人类图像。例如,即使是一个未标记的行人再识别数据集,LUPerson [25, 26] (#Img≈4.18M)也比ImageNet数据集(#Img≈1M)大4倍。如何使用未标记的数据来构建人类表示具有挑战性,特别是当它需要从各种下游任务中受益时。
自监督学习通过使用未标记数据来学习表示,取得了巨大的发展。已经设计了许多前置任务,如对比学习[6,10,35]和掩膜图像建模[2,34,77,95]。尽管这些方法在学习通用图像表示方面取得了巨大成功,但缺乏针对以人为中心的任务的特定设计。
一些研究人员[55,81,97]致力于将自监督学习方法扩展到以人类为中心的视觉任务上。他们使用DINO[6]与LUPerson[25,26]数据集来为行人再识别任务建立预训练模型。当将预训练模型应用于其他以人为中心的任务时,如人体解析和行人检测,通常得到次优结果。这是由于在它们的学习表示中缺乏语义信息。如图1所示,在DINO[6]1学习到的表示空间中,同一个人的不同部位无论具有何种语义,由于外观的连续性,都会聚集在一起。
如我们所知,在以人为中心的视觉任务中,语义信息与外观信息一样重要[40,50,96]。因此,倾向于用更多的语义信息来训练表示,以将表示扩展到不同的下游以人类为中心的视觉任务。文中提出了一种语义可控的自监督学习框架(SOLIDER)。在SOLIDER中,利用来自人类图像的先验知识来发现语义信息,可以为每个标记产生伪语义标签。引入token级语义分类前置任务,并由这些伪标签进行监督。使用新的前置任务,我们可以训练具有更强语义信息的表示。
在将训练后的表示用于下游任务的过程中,发现尽管语义信息和外观信息都很重要,但不同的下游任务需要它们的不同比例。调整它们在表示中的比例,将导致在下游任务中取得更好的性能。然而,在目前的自监督学习方法中,只要对前置任务进行训练,其表示就不能改变。与以往方法不同,本文将SOLIDER设计为一个包含语义控制器的条件网络。控制器将一个值作为输入,并产生一个潜在表示。在使用来自SOLIDER的预训练模型时,我们向控制器发送一个值(指示表示中语义信息的比例),控制器可以调整模型并以所需的比例输出表示。
总而言之,本文有四个贡献:
1)学习了一个通用的人类表示,作为一个更好的预训练模型,有利于下游以人类为中心的视觉任务。
2)提出了语义可控的自监督学习框架(SOLIDER)。该方法利用人体图像的先验知识生成伪语义标签,并利用伪语义标签训练具有更多语义信息的人体表示。
3)在SOLIDER中设计了语义控制器。通过控制器,预训练模型可以生成具有不同程度语义信息的表示,以满足下游任务的不同需求。
4)在6个下游以人为中心的任务上验证了SOLIDER表示的有效性。相信本文可以推动计算机视觉领域中这些以人为中心的任务的发展。
自监督学习方法在计算机视觉领域引起了人们的极大兴趣,特别是将其用于学习图像表示作为伪装任务时。
在当前的自监督学习中,对比方法[5,6,10,15,35,95]取得了巨大的成功,并为图像表示提供了最先进的性能。对比学习的目标是最小化同一图像[5,10]的两个增强视图之间的距离,并将每个图像与所有其他图像区分开来[6,15,35]。MoCo[15, 35]通过存储动量编码器而不是训练好的网络的表示,改进了对比方法的训练。SimCLR[10]表明,如果批次足够大,则可以完全用同一批次的元素替换记忆库。DINO[6]结合了大多数这些技术,包括动量编码器[35],多作物训练[5],以及ViTs[22]小补丁的使用,这建立了一个更好的基线。
除了对比方法,掩码图像建模方法[2,34,77]引起了研究者的广泛关注。BEiT[2]提出了离散token的预测方法。SimMIM[77]和MAE[34]发现适度大的掩码尺寸和轻的预测头对掩码图像建模是有益的。尽管掩码语言模型成功地将语义信息导入到图像表示中,但它不能明确地从图像中找出语义信息来监督训练。在所提出的SOLIDER中,对标记进行聚类,并使用人类先验为这些标记分配语义标签,可以训练更强的人类语义表示。
值得注意的是,DeepCluster[4]也使用cluster来学习表示。但它是在图像级别上的,不能为标记生成语义标签。一些无监督的语义分割方法[18]在像素级别上扩展了DeepCluster。但它仍然面临问题,不能学习到令人满意的表示,这在3.1节中解释。
通过查看计算机视觉中以人为中心的视觉任务,我们发现有许多任务直接或间接与人类相关,例如行人再识别[23,28,29,37,82],属性识别[51,72,78],行人搜索[76,92],行人检测[3,24,32],多目标跟踪[11,12,48,49,67],人体解析[27,53]和姿态估计[58,90]。
其中,梳理了6个具有代表性的任务,即行人再识别、属性识别、行人搜索、行人检测、人体解析和姿态估计。行人再识别[8,39,59,69,89]旨在在多个不重叠的摄像机中检索感兴趣的行人。属性识别[20,42,51,72]试图挖掘给定人物图像时目标人物的属性,这些属性是可以理解的语义描述。行人搜索[76,92]旨在从整个场景中找到一个探查者,在视频监控社区中对走失人员的追踪具有重要意义。行人检测[21,24,32,86]侧重于在一般图像中检测行人,这是各种重要应用的关键能力。人体解析[27,43,53]是语义分割的一个子任务,旨在像素级别上理解人体部位。人体姿态估计[1,58,83]致力于从图像中定位人体骨架。
最近,Wang等人[84]也专注于以人为中心的视觉任务,并设计了Token Clustering Transformer (TCFormer),但TCFormer是一种监督方法,不能利用大量公开的未标记数据。
拟建SOLIDER的整个管线如图2所示。在本节中,我们首先解释如何从人类先验知识中生成伪语义标签,并使用它来监督token级语义分类前置任务。然后,介绍如何在SOLIDER中控制学习到的表示。
DINO[6]是一种最先进的自监督学习方法,被广泛用于图像表示。作为一种基于对比学习的方法,迪诺图像的表示充分学习了视觉外观信息。我们使用DINO作为基线,并计划在其表示中包含更多语义信息。
从学习到的DINO表示中对token向量进行聚类,如图3(b)所示。可以看出,该表示根据其视觉外观被分为几个部分。换句话说,它可以找到图像中的东西,虽然不能告诉他们的含义。
一些方法[4,18]更进一步,试图为这些聚类的东西分配语义标签。它们不是对单个图像进行聚类,而是对多个图像进行聚类,旨在建立图像之间的语义关系。然而,由于用于聚类的特征是从视觉外观线索中训练得到的,聚类结果受外观线索的影响较大。如图1所示,在原始迪诺空间中,“blue short”(+)由于外观相似,与“blue shirt”(▲)特征更接近,而与“black short”(+)特征更接近,尽管它们具有相同的“short pants”语义。聚类后,将蓝色物体(“蓝短裤"和"蓝衬衫”)聚类在一起,将语义相同的物体(“蓝短裤"和"黑短裤”)分开。换句话说,这些方法无法产生我们想要的语义标签。
在扫描未标记的人体图像后,我们发现大多数图像都有一个固定的模式[64,96]:人的身体直立地占据整个图像,头部始终在图像的顶部,而脚在图像的底部。基于这种观察,根据所有图像的y轴坐标的顺序,为所有图像的聚类部分提供语义标签,即所有图像的顶部标记为上半身,底部标记为鞋子。这些伪语义标签为每个标记向量提供语义信息。引入一个词项级语义分类前置任务,并由这些语义标签监督。为了更好地使用这些标签,我们需要进行额外的修改,如下所示。
涉及到背景和前景聚类。在这些标签中,我们发现有一些背景碎片会对聚类结果造成噪声干扰,并误导对齐。为了解决这个问题,我们在语义聚类之前引入另一种聚类。在训练过程中,背景标记的响应总是比前景标记的响应小[57,96],如图3©所示。根据token向量的大小,将其聚类为两类,即前景和背景。结果如图3(d)所示。然后只对前景token进行语义聚类,新的结果列在图3(e)中。可以清楚地看到,前景token被很好地聚类为三个语义部分,即上半身、下半身、鞋子。
涉及掩码图像建模。受掩码图像建模方法的启发[34,77],我们希望进一步将更多的语义信息引入到表示中。众所周知,人们可以很容易地定位人类图像中的每个语义部分,即使有些部分被遮挡。因此,假设如果人类图像中某个语义部分缺失或被遮挡,模型仍然能够根据周围的其他部分来预测其语义。将语义监督升级为掩码语义监督。具体来说,从图像x中随机屏蔽一个语义部分,并通过框架重新提供该掩码图像x ~。然后,输出标记由原始语义标记监督,因为期望模型能够在其他标记的帮助下为被掩码标记提供真实的语义标记。
整个语义自监督如图2所示。具体来说,在训练过程中,对于每次迭代,我们从backbone获得大小为(n, c, h, w)的输出特征图F。对于每个图像x,我们将其特征图4 Ft视为大小为c的w∗h token向量。然后我们使用K-means[31]根据c的大小(即l2归一化)将它们聚类为两类,并将大小较大的类别视为前景掩码m。对前景掩码M中的token应用K-means进行语义聚类,得到N个预定义的语义类别,并为每个token分配语义标签y。同时,利用一个语义头,根据这些语义标签y对来自学生分支的向量 F s F_{s} Fs进行分类。对应的语义分类损失如下:
L s m = 1 w × h ∑ u ∈ w v ∈ h ∑ i = 1 N + 1 − y ( u , v ) log f s ( u , v ) ( i ) ∑ k = 1 N + 1 f s ( u , v ) ( k ) (1) L_{s m}=\frac{1}{w \times h} \sum_{\substack{u \in w \\ v \in h}} \sum_{i=1}^{N+1}-y^{(u, v)} \log \frac{f_{s}(u, v)^{(i)}}{\sum_{k=1}^{N+1} f_{s}(u, v)^{(k)}} \tag{1} Lsm=w×h1u∈wv∈h∑i=1∑N+1−y(u,v)log∑k=1N+1fs(u,v)(k)fs(u,v)(i)(1)
其中 f s = h _ s m ( flatten ( f s ) ) {f_s}={h_s m}\left (\operatorname{flatten}\left ({f_s}\right) \right) fs=h_sm(flatten(fs))。flatten()用于将 F s {F_s} Fs从 ( n , c , h , w ) (n, c, h, w) (n,c,h,w)重塑为 ( n ∗ h ∗ w , c ) (n * h * w, c) (n∗h∗w,c),其中 h s m {h_{sm}} hsm是语义头。N表示聚类的语义部分的数量。 F s ( u , v ) ( i ) {F_s} (u, v)^{(i)} Fs(u,v)(i)表示第i部分上 t o k e n ( u , v ) token (u, v) token(u,v)的预测概率。在图像x之后,我们随机掩模x的一部分以获得图像 x ~ \tilde{x} x~,并将 x ~ \tilde{x} x~也发送到等式1。
整个SOLIDER框架的总损失为:
L = α L dino + ( 1 − α ) L s m (2) L=\alpha L_{\text {dino }}+(1-\alpha) L_{s m} \tag{2} L=αLdino +(1−α)Lsm(2)
其中 α \alpha α是一个平衡权重,根据经验将其设置为0.5。
当将学习到的表示作为下游任务的预训练模型时,期望在表示中学习到的外观和语义信息可以帮助下游任务。然而,每个下游任务都有自己的关注点。例如,在行人再识别[41,82]中,虽然语义信息可以帮助对齐行人图像中的部位[62,88],但外观信息是区分不同行人的关键线索,是最重要的信息[80,94]。因此,一个具有更多外观信息和更少语义信息的预训练模型将为行人再识别任务提供更好的启动。相反,在行人检测[3,24]和人体解析[27,43,53]中,语义信息对这些任务起着关键作用,而外观差异是无用的,应该部分忽略。其预训练模型有望包含足够的语义信息。
为了适应不同任务的需求,要求相关模型可以根据下游任务进行调整。然而,由于相关的模型是经过训练的,很难针对不同的下游任务改变其参数。任务令牌[54]是解决该问题的一种潜在方法,它为每个任务预先设置一个额外的one-hot令牌。但它有几个问题。首先,在学习表示之前,应该预先定义任务标记的数量。在实际应用中,我们无法事先确定学习到的表示将用于哪些任务。第二,虽然可以从语义角度预定义任务标记(两个任务标记,即有和没有语义信息),但任务标记是一个离散变量,这使得下游任务的表示选择有限。第三,任务token本质上是原始学习到的token的重新加权和。由于Swin[52]中的窗口移位,很难与Swin[52]骨干进行合作,这是一个对视觉任务更友好的transformer骨干。
在本文中,SOLIDER使用带有语义控制器的条件网络来处理这个问题。在前置任务训练过程中,由于下游任务不可用,无法针对特定任务调整表示,因此引入语义控制器,使预训练模型有条件。语义控制器的输入是图像特征映射和一个连续值λ∈[0,1]。λ表示表示中所需语义信息的比例。输出是具有我们要求的比率的新特征图。所提出的语义控制器的细节如图2所示。在语义控制器中,λ被编码为一个权重向量和一个偏置向量。在Softplus激活函数之后,将权重向量乘以原始特征图,并将偏置向量添加到最终输出。
我们在Swin骨干的每个块之后应用语义控制器,并将具有新比例λ的特征映射F (λ)发送到下一个块。我们使用以下公式来生成语义可控模型:
L = α L dino ( F ( λ ) ) + λ ( 1 − α ) L s m ( F ( λ ) ) (3) L=\alpha L_{\text {dino }}(F(\lambda))+\lambda(1-\alpha) L_{s m}(F(\lambda)) \tag{3} L=αLdino (F(λ))+λ(1−α)Lsm(F(λ))(3)
在前置任务训练阶段,对每次迭代随机采样 λ \lambda λ。我们尝试了 λ \lambda λ的不同分布,即二项分布B(p=0.5),连续均匀分布U[0,1]和beta分布 β ( 0.2 , 0.2 ) \beta(0.2,0.2) β(0.2,0.2)。 β ( 0.2 , 0.2 ) \beta(0.2,0.2) β(0.2,0.2)优于U[0,1],这意味着强调两个边界的采样对于训练控制器更加重要,这与Mixup[85]的结论一致。最后,我们发现B(p=0.5)的性能最好,也就是来自{0,1}的二进制分布。当预训练模型应用于下游任务时,手动设置 λ \lambda λ,以使预训练模型适应每个下游任务。使用\lambda的预训练模型为下游微调提供了更好的启动,并对预训练模型的所有参数进行了微调。
总而言之,在从SOLIDER训练一个条件预训练模型后,我们可以向模型发送不同的λ,以为下游任务产生具有不同语义信息比例的表示。补充材料中提供了训练伪代码,进一步阐明了SOLIDER的整个训练过程。
在6个下游以人类为中心的视觉任务上进行验证,包括行人再识别、属性识别、行人搜索、行人检测、人体解析和姿态估计。
对于前置任务,使用LUPerson[25, 26]进行训练,与[55,97]相同。它包含418万张没有任何标签的人类图像。从每个下游任务中,在他们常用的数据集上进行实验。具体而言,在行人再识别方面,分别在Market1501[91]和MSMT17[74]两个数据集上进行实验。在属性识别中,考虑PETAzs[38]、RAPzs[38]和PA100k[51]。在行人搜索方面,我们采用CUHK-SYSU[76]和PRW[92]进行实验。利用CityPerson[86]进行行人检测。在人体解析和姿态估计中,分别使用了LIP[27]和COCO[47]姿态估计。
在行人重识别和行人搜索中,采用mAP/Rank1[91]作为评价指标。对于属性识别,采用平均准确率(mA)[38]作为评价指标。采用对数平均漏检率(MR−2 on R/HO)[32]来评估行人检测性能。人体解析使用mIoU[43]进行评估,姿态估计使用平均精度/召回率(AP/AR)[83]作为评估指标。
在所有实验中,我们使用Swin-Transformer[52]作为骨干。在前置任务训练中,使用SGD作为优化器,学习率为0.0005。模型训练100个epoch,通过余弦退火调度器降低学习率。在8个Tesla V100 32G gpu上进行Swin-Tiny/Small/Base训练时,批量大小为48/32/24。
值得注意的是,由于语义聚类过程耗时,我们没有直接从头开始训练100个epoch的soldier。相反,我们首先用100个epoch训练恐龙,然后使用较小的学习率0.00005用另外10个epoch对训练过的恐龙模型上的SOLIDER进行微调。
对于下游任务,在每个任务中重现了最先进的方法作为基线。我们使用的基线方法列在表1中。我们所做的只是将他们的骨干替换为Swin-Transformer[52]骨干,该骨干由拟议的SOLIDER进行预训练。
语义聚类分析。为了在定性分析中观察预训练模型的语义表示能力,从训练数据中随机选择一些图像,将其在SOLIDER前后学习到的表示特征可视化。可视化结果如图4所示。可以发现,在引入语义监督之前,表示特征主要基于图像的身份进行分布。即使具有不同的语义,具有相似外观的图像也会保持紧密联系。例如,“blue short”(+)的特征更接近“blue shirt”(▲),因为外观“color blue”相似,而进一步接近“black short”(+),甚至具有相同的语义“short pants”。
而加入了soldier语义监督后,特征分布更加关注语义。我们可以发现,具有相似语义的图像即使外观不同,但彼此之间的距离也更近。这意味着由SOLIDER发现的人类先验可以为表示提供更好的语义监督,这有助于预训练模型涉及更多的语义含义。
语义控制器分析。为了进一步验证语义控制器,我们提供了另外两个实验。首先定义两种距离,即图像内距离和图像间距离;图像内距离是来自同一图像的任意两个部分之间的平均距离。图像间距离是指具有相同语义但来自不同图像的部分之间的平均距离。图像内距离小而图像间距离大,表示外观信息在表示中占主导地位,反之则表示语义信息占主导地位。在SOLIDER训练后,我们将语义权重λ设置为0到1,以观察这些不同表示在整个LUP数据集中的两个距离。结果如图5(a)所示。可以看出,随着λ的增大,图像内距离变大,而图像间距离变小,这表明更多的语义信息参与到表示中,并成为主导信息。
同时,正如我们所知,行人再识别需要更多的外观信息,而行人检测则更倾向于语义信息。我们列出了使用不同λ的预训练表示的两个任务的性能,如图5(b)所示,随着λ的增加,行人再识别性能变差,行人检测性能变好。换句话说,λ大的表示可以为行人检测提供更好的启动,而λ小的表示更适合行人再识别。这种现象进一步意味着语义控制器的有效性。
消融实验用于验证SOLIDER中各模块的有效性,所有实验均在swinn - tiny[52]骨干网络上进行。用不同的方法来训练前置任务,并在所有下游以人为中心的视觉任务上验证预训练模型。
ImageNet和LUP1M是用于伪装任务训练的数据集。ImageNet表示模型是在ImageNet上训练的。这个训练是由ImageNet中的标签监督的。LUP1M是从LUP中随机采样的一个子集,它包含100万张人物图像,并且具有与ImageNet相似的图像数量,以便于公平比较。由于LUP1M中没有标签,训练过程是自监督的。我们以DINO[6]为基线。“+聚类”表示通过语义聚类将人类先验纳入迪诺。“+Clustering&Controller”表示引入语义控制器,控制语义信息在表示中的比例。在下游任务中,将λ设置为一个小值(0.0-0.2)用于行人再识别,将一个大值(0.8-1.0)用于行人检测、人体属性、人体解析和姿态估计。对于行人搜索,外观信息与语义信息同等重要,我们将λ设置为一个适中的值。下游任务的λ选择细节在补充材料中提供。
从表1的对比可以发现,在引入语义信息(“+聚类”)后,预训练模型在大多数下游任务上都取得了更好的性能。这意味着表示具有更多语义信息的有效性。值得注意的是,引入语义监督后,行人再识别和行人搜索的性能有所下降。原因是引入语义信息后,模型更倾向于表示语义信息,其区分不同身份的能力在一定程度上减弱,这需要更仔细的平衡。语义控制器正是为这个问题而设计的。在引入语义控制(" +控制器")后,性能进一步提高,特别是在行人再识别和行人搜索方面。将我们的soldier结果与DINO的行人再识别结果进行比较,我们可以观察到我们的改进是有限的。因为行人再识别的关键线索是外观信息,这在恐龙中已经很好地学习了。从SOLIDER处导入的语义信息只起到辅助作用,导致语义信息仅略有增加。
值得注意的是,DINO LUP1M在person ReID上比Sup ImageNet有更大的改进是由于LUPerson图像的街景场景与ReID数据集相似。除了ReID任务外,与Sup ImageNet相比,DINO LUP1M在五个任务中平均带来了1.4个改进(72.6 vs. 74.0),这意味着从DINO中学习到的外观信息的优势。与SOLIDER,平均性能提高到74.9。0.9的进一步增长表明,我们的SOLIDER在涉及语义信息方面取得了成功。这种改进在所有任务中都是一致的。
此外,还对补充材料中出现的聚类零件编号和语义头尺寸对聚类结果的影响进行了实验。
在6个以人为中心的任务上将结果与最新技术进行了比较。表2列出了目前比较先进的方法。在行人再识别中,使用无辅助信息的TransReID作为基线。即使没有辅助信息,也可以取得比其他自监督工作更好的性能,如同样在LUPerson数据集上训练的TransReID[36]和PASS[97]。在人员搜索的PRW结果中,mAP的性能优于其他先进技术10%以上。mAP准则反映了模型的检测能力。这意味着我们的预训练模型可以得到更好的检测结果,这可能要归功于引入的语义信息。在行人检测中,PedesFormer[33]在行人检测任务上取得了比本文更好的性能,因为它还涉及来自自动驾驶数据集的额外数据,这些数据是行人检测任务特定的,而不是其他以人为中心的任务。对于姿态估计,本文报告了HRFormer的最佳性能[83],它是在HRFormer骨干上训练的,而不是Swin。在HRFormer [83] backbone切换到Swin后,MMPose[19]报告的结果为759 /81.1,低于我们的766 /81.5。从表2的对比中,我们可以看到,从SOLIDER中预训练的模型可以为这些以人为中心的任务提供更好的初始化,并可以作为这些任务的进一步工作的新基线。
我们还在不同的骨干上进行了SOLIDER,总结在表2中。可以看出,随着Swin-Transformer骨干中的模型大小的增加,性能进一步提高。在某些任务中,SwinSmall比swinbase取得了更好的性能,这是因为在有限的GPU内存下,SwinSmall比swinbase的批处理大小更大。
提出了一种语义可控的自监督学习框架SOLIDER。它可以利用来自人类图像的先验知识来训练具有更多语义信息的表示。此外,通过语义控制器对SOLIDER的预训练模型进行输入值调整,生成不同比例语义信息的表示,以满足下游任务的需求。在6个以人为中心的视觉任务上验证了SOLIDER的人类表征,可以促进这些以人为中心的视觉任务在计算机视觉领域的发展。