商汤&港理工提出基于聚类的联合建模时空关系的 GroupFormer 用于解决群体活动识别问题,性能SOTA

 写在前面

群体活动识别是一个关键而又具有挑战性的问题,其核心在于充分探索个体之间的时空交互,产生合理的群体表征 。然而,以前的方法要么分别建模空间和时间信息,要么直接聚合个体特征形成群体特征。

为了解决这些问题,作者提出了一种新的群体活动识别网络,称为GroupFormer 。它联合建模 时空上下文信息,通过聚类 时空Transformer,有效地增强个体和群体的表征。具体来说,GroupFormer有三个的优点:
1)聚类时空Transformer(Clustered Spatial-Temporal Transformer)能够增强个体表征和群体的表征

2)GroupFormer对时空依赖关系进行综合建模 ,并利用解码器建立时空信息之间的联系。

3)利用聚类注意机制动态地将个体划分为多个聚类 ,以更高效地学习具有活动感知能力的语义表征。

此外,实验结果表明,该框架在Volleyball数据集和 Collective Activity数据集上优于SOTA的方法。

 0. K-Means聚类算法

本文在算法实现的时候用到k-means算法,因此,在介绍这篇文章之前,先和大家一起来复习k-means算法吧!

首先我们来看K-Means的名字,K和means分别是什么?K是指类的数量 (是一个超参数),means是指均值 (指的是算法的特性)。
K-means算法主要有步骤可以分为四步:
第一步:初始化聚类中心,这一步就是根据K的数量,来随机初始化K个聚类中心;

第二步:给聚类中心分配样本;

第三步:移动聚类中心;

第四步:判断是否达到终止条件,决定是否停止移动。

聚类之后的效果如下(K=4):

完整代码:

import numpy as np

def distance(p1,p2):
    return np.sqrt((p1[0]-p2[0])**2+(p1[1]-p2[1])**2)

def kmeans(nums,k,tolerance=1e-4,max_iter=100):
    centers={}  #聚类中心
    
    #初始化中心点
    for i in range(k):
        centers[i]=np.random.randint(low=0,high=500,size=2)

for iter in range(max_iter):
        print('this is',iter,'epoch')
        clusters={} #每个类包含那些点
        #初始化每个类的点
        for i in range(k):
            clusters[i]=[]

#计算所有点所属的类
        for item in nums:
            all_dis=[]
            for i in range(k):
                all_dis.append(distance(item,centers[i]))
            clusters[np.argmin(all_dis)].append(item)

#计算新的聚类中心
        pre_centers=centers.copy()
        for i in range(k):
            centers[i]=np.mean(clusters[i],axis=0)

#判断是否还需要继续更新
        ok=True
        for i in range(k):
            if(abs(np.sum((centers[i]-pre_centers[i])**2))>tolerance):
                ok=False
                break
        if(ok==True):
            break

return centers,clusters

input=np.random.randint(low=0,high=500,size=(500,2))
center,cluster=kmeans(input,k=4)
print(center)
        
    
import matplotlib.pyplot as plt

colors=['r','g','b','y']

for k,points in cluster.items():
    for p in points:
        plt.scatter(p[0],p[1],color=colors[k])

for k,point in center.items():
    plt.scatter(point[0],point[1],color=colors[k],marker='*')

plt.show()

 1. 论文和代码地址

GroupFormer: Group Activity Recognition with Clustered Spatial-Temporal Transformer

论文:https://arxiv.org/abs/2108.12630

代码:https://github.com/xueyee/GroupFormer

(未开源)

 2. Motivation

由于其在监控系统、视频分析和社会行为分析中的广泛应用,群体活动识别目前是一个重要的研究问题。与传统的动作识别不同,群体活动识别需要理解多个个体的场景。

群体活动识别的直观策略是模拟个体之间的相关关系,并推断他们的群体活动。然而,利用个体关系来推断群体活动是非常具有挑战性的,特别是在未修剪的场景中,空间和时间上场景变化都非常复杂。
为了解决群体活动识别的问题,研究人员也一直致力于寻找高效的方法来捕捉视频中的关系上下文,目前也有一些基于RNN、attention、图卷积、Transformer的方法来捕获时空关系。然而,目前的方法仍然面临两个挑战:
1)建立了一个综合建模时空上下文信息的桥梁 (以前的方法大多是将时间和空间维度分开建模);

2)根据个体的相互关系将这些个体分组,以便更好地推断全局的活动上下文

在挑战(1)下,以往的方法很少能联合考虑模型中的时空依赖性,但是不同的时间序列信息具有很强的空间依赖性 ,如上图所示。因此,共同捕获时空依赖关系对于推理群体活动是至关重要的。
在挑战(2)下,以前的方法建立全部个体的连通关系是次优的 ,因为引入了无关个体的连接会成为干扰信息。换句话说,并非所有个体在多人场景中的关系都会对推断群体活动产生关键影响。如上图所示,在排球场景中,“spiking”和“blocking”的运动员之间的交互远远高于有“spiking”和“standing”的运动员之间的交互,因此“spiking”和“standing”的运动员之间的关系对群体活动的推断贡献更大。换句话说,群体活动通常是由一组具备潜在交互关系的关键群体决定的
在本文中,作者提出了一个端到端可训练的框架,称为GroupFormer,它利用Transformer来建模个体和群体的特征表示。首先,作者设计了一个群体表示生成器(Group Representation Generator,GRG) ,通过合并个体上下文和场景上下文来生成一个初始的群体表示。
然后利用多个堆叠的时空Transformer(STT) 来增强个体和群体的特征表示。具体来说,作者使用两个编码器 (时间和空间)进行时空特征的embed,然后利用两个交叉解码器 构建时空交互,综合建模时空上下文信息。此外,作者还利用群体解码器(Group Decoder) 获取个体的上下文表示,以增强群体特征。
此外,与现有Transformer中的全注意(全注意指每个位置都会和其他所有位置进行交互)方式相比,STT通过聚类注意机制 进一步增强。具体实现上,作者动态地将所有个体划分为C个聚类,其中同一个聚类中的个体通常具有相关的语义信息。
通过在每个聚类内进行信息传播,可以生成个体的紧凑动作特征。不同聚类之间的attention是充分建聚类之间的关系,以促进群体活动感知表征学习。最后,实验结果表明,该网络在Volleyball和Collective Activity数据集上优于SOTA的方法。

 3. 方法

上图为Groupformer的网络图,主要由三个结构组成:
1)提取视频clip的特征表示的CNN主干

2)用于个体和场景特征初始化的群体表示生成器(Group Representation Generator,GRG)

3)用于建模时空关系,细化群体表示和个体表示的聚类时空Transformer(CSTT)

3.1.特征提取器

对于特征提取器,作者使用了Kinetics预训练的3D网络(I3D)作为Backbone。首先切割以标注帧为中心的t帧,记为。作者从最后一个卷积层中提取特征图,并将大小调整为,这可以看做整个视频clip的场景特征。

然后,作者还从中间的层中生成了更高分辨率的特征图,并将个可学习的位置编码添加到特征图中。然后用RoIAlign提取每个视频帧中给定N个边界框的个体特征,每个个体的姿势信息由AlphaPose获得,将个体特征和姿势信息进行concat,得到最终的个体特征。最后采用全连接层将对齐的个体特征的通道维度投影到D维,该个体特征表示为。

3.2.群体表示生成器

群体表示生成器(GRG)是一个在模型中用于初始化群体表示的预处理组件。作者将场景特征和个体特征分别转换为视觉token,然后将它们聚合以生成群体表示。对于场景特征,作者将时间维度视为Batch维度,并应用二维卷积将通道维度转换为。然后,作者将其flatten为,并用softmax操作,生成空间注意矩阵。

接着,作者采用二维卷积将场景特征的通道维度embed到D中,用A计算每个像素的加权和,生成K个视觉场景token,然后进行Avgpool操作,实现形状为的场景token。对于个体特征,作者将的可学习query和个体特征输入解码器,以生成个体token。最后,作者将个体token和场景token融合,形成一个初始化群体token,记为。

3.3.聚类时空Transformer

3.3.1 标准Transformer

标准的Transformer是用于序列到序列的NLP任务,它包含编码器和解码器,两者都由多头注意层(multi-head attention layer)和前馈网络(feed-forward network)组成。多头注意力通过比较一个特征和其他特征之间的两两相似性来计算权重。

简而言之,首先将维度为d的l个向量序列,表示为,分别使用线性投影映射到query、key和value。attention矩阵是由query和key的缩放点积得到的。输出特征被计算为基于attention权重的value的加权和。此外,Transformer还利用由线性变换和非线性激活函数组成的前馈网络(FFN)来embed这些特征。

3.3.2 时空Transformer(SST)

为群体活动识别而设计的时空Transformer(STT)增强了个体表征和群体表征。它包括两个并行的编码器(一个空间编码器时间编码器 ),分别生成空间和时间特征。并引入交叉的个体解码器 来解码时空上下文信息。最后,用一个群体解码器 来增强群体的表示。(具体结构如上图所示)

Encoders

尽管每个个体都已经被准确定位了,但仍然缺乏对语义时空上下文的信息增强。因此,作者采用了两个并行编码器来embed上下文特征。在一个分支中,作者采用了一个基于Transformer的空间编码器 来学习个体的上下文信息。给定输入的个体表示,作者将时间维度视为Batch维度,并应用一个编码器来建模所有帧的空间上下文。第t帧的空间上下文的embed过程可以表述为:

其中、、是可学习的参数;表示第t帧中的个体特征图。FFN是标准Transformer中的前馈网络。所有时间步的特征图被,,打包之后变成。
另一种并行时间编码器 利用时间动态线索增强输入特征,通过突出每个个体沿时间维度的信息特征来丰富时间上下文。时间编码器遵循空间编码器的操作。与上述空间编码器的不同之处在于,时间编码器将空间维度视为一个Batch维度。将第n个个体的输出时间特征表示为,最后将生成的特征图,,组合在一起,表示为。

Individual Decoders

上面的两个Encoder中分别对时间和空间维度的个体特征进行了建模。然后,作者提出了个体解码器 来综合考虑空间和时空上下文信息。个体解码器遵循标准Transformer的解码器的设计,来互补利用时空上下文。

对于空间解码器 ,空间编码器的输出结果被视为 actor query,时间编码器输出结果的embedding被视为key和value。actor query和key、value进行cross-attention,捕获时间动态,并输出更新后的上下文特征。
同样的,对于时间解码器 ,空间编码器的输出结果将时间维度与空间维度进行转换,可以看作是解码器使用的key和value。解码器将时间上下文视为time query,然后进行cross-attention的过程,时间解码器有助于查找视频中感兴趣的帧。
最后,将这两个交叉解码器的输出embedding进行融合,生成增强的个体表示。这两种交叉解码器是利用了基于空间上下文时间上下文 的语义关联来增强个体表征。

Group Decoder

在多人场景中总结个体互动对于群体活动推断至关重要,因此,作者引入了一个群体解码器 (Group Decoder)来通过个体表示来增强群体表示。群体解码器也遵循Transformer的解码器设计。

与原Transformer的区别在于,群体解码器只包含多头交叉注意机制和一个前馈网络,不包含Self-Attention。它以增强的个体表示和群体表示作为输入。作者将群体特征作为query(记为group query),将增强的个体特征作为key。这样group query就能从增强的个体特征中总结了整体上下文,更新后的group query能够实现群体活动预测。

3.3.3 Clustered Attention Mechanism

虽然基于全连接注意机制的时空Transformer(STT)能够建模个体的关系,但它包含了许多不相关个体的关系。为了使模型能够关注关键的群体关系,作者将全连接的注意力替换为聚类的注意力,并将整个模块称之为聚类时空Transformer(Clustered Spatial-Temporal Transformer,CSTT) 。它可以对个体进行分组,并利用组内和组间的关系来捕获全局活动上下文。

首先将个体分组为C个聚类,然后计算一下两种类型的注意:
1)组内注意(intra-group attention) :只有来自同一个聚类内的query和key才会被考虑。

2)组间注意(inter-group attention) :考虑了聚类之间成对的加权连接。

在实现上,作者将一组聚类中心向量定义为,,,利用mini-batch k-means聚类算法 将所有query自适应地分组为C个聚类,并根据K-means算法不断的更新聚类中心。
组内注意 是通过提取同一组内的个体信息来完善每个个体的动作感知特征。组间注意 是充分建模不同组之间的关系,以促进群体活动感知表征学习。

3.4.网络优化

本文提出的CSTT以端到端的方式进行训练。在CSTT中,可以直接从群体表示生成群体活动分数。同样,采用另一个分类器,使用CSTT生成的个体表示来预测个体的动作得分。对于这两个任务,作者都选择了交叉熵损失函数来指导优化过程:

其中和表示交叉熵损失。和是群体活动得分和个体动作得分,而和代表群体活动和个体动作的 ground truth标签。λ是平衡这两项的超参数。

 4.实验

4.1.与SOTA的比较

Volleyball dataset

上表比较了本文方法在Volleyball 数据集上和SOTA方法的比较,CSTT在性能上相比于其他的SOTA方法具有明显的性能优势。

Collective dataset

上表比较了本文方法在Collective 数据集上和SOTA方法的比较,在相同的Backbone下,本文的方法能够比其他方法的性能更高。

4.2.消融研究

时空关系建模

从上表可以看出,采用时空并行方式将性能从91.0%提高到92.2%。CSTT使用单个解码器,以交叉方式联合利用时空上下文信息,与Baseline相比,性能显著提高了3.1%。

聚类注意力方式

作者还研究了不同聚类数量对结果的影响,在没有聚类的情况下,能够达到93.4%,随着聚类数量的增加,性能先上升,后下降。

CSTT Block的数量

作者还研究CSTT Block的数量对实验结果的影响,随着CSTT Block的增加,性能先上升,后下降。block数量为3时达到了最好的性能。

4.3.可视化

Feature Embedding可视化

上图显示了由GroupFormer不同变种学习到的视频表示的t-SNE可视化。
1)base:用简单的FC层替换CSTT。
2)ST:使用堆叠的时空Transformer。
3)STT:无聚类注意机制的时空Transformer。
4)CSTT:本文的聚类时空Transformer。可以看出CSTT使得不同特征的距离更远,达到最好的结果。

聚类可视化

上图可视化了几个聚类个体的示例。通过聚类注意机制,个体被分成一组节点,每一组节点在内部紧密相连。通过利用组内和组间的关系,模型更容易捕获关键的交互信息并学习具有活动感知能力的语义表示。

 5. 总结

在本文中,作者提出了一种新的基于Transformer的结构,称为GroupFormer,它联合建模了时空上下文表示来推断群体活动。此外,作者还引入了聚类注意机制来对个体进行分组,并利用组内和组间的关系获得更好的群体特征表示。作者在两个数据集上进行了广泛的实验。结果表明,GroupFormer的表现超过了大多数目前的SOTA方法。

▊ 作者简介

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

END

(0)

相关推荐

  • 完全图解GPT-2:看完这篇就够了(一)

    设为 "星标",重磅干货,第一时间送达! 选自github.io,作者:Jay Alammar 机器之心编译 今年涌现出了许多机器学习的精彩应用,令人目不暇接,OpenAI 的 G ...

  • 谈一谈UNet图像分割

    作者丨呼啦圈正在输入中 来源丨GiantPandaCV 编辑丨极市平台 极市导读 这篇文章主要针对于图像分割的算法的一些理解,主要是一个比较经典的UNet系列的网络的认识.最后希望看完这篇文章的读者可 ...

  • 用于代码生成的基于树的Transformer结构

    介绍: 代码生成是一个重要的人工智能问题,有可能显着提高程序员的生产力.给定以自然语言编写的规范,代码生成系统会将规范转换为可执行程序.例如,如果 python 程序员给出指令"初始化字典 ...

  • ACL 2019 | 将带推敲解码器的增量Transformer用于文档级知识对话

    本文将对 ACL2019论文<Incremental Transformer with Deliberation Decoder for Document Grounded Conversati ...

  • 用Transformer进行图像语义分割,性能超最先进的卷积方法!

    重磅干货,第一时间送达 丰色 发自 凹非寺 报道 | 量子位 正如大家所知,在进行图像语义分割时,图像被编码成一系列补丁后往往很模糊,需要借助上下文信息才能被正确分割. 因此上下文建模对图像语义分割的 ...

  • NLP实操手册: 基于Transformer的深度学习架构的应用指南(综述)

    人工智能算法与Python大数据 致力于提供深度学习.机器学习.人工智能干货文章,为AI人员提供学习路线以及前沿资讯 23篇原创内容 公众号 点上方人工智能算法与Python大数据获取更多干货 在右上 ...

  • 低成本测距方案--单目深度估计(二)

    设为'星标',重磅干货,第一时间送达! CV研习社 一个专注于计算机视觉方向的公众号.包括计算机视觉.图像处理.点云处理.机器学习.深度学习.C/C++.Python.制作美食等. 70篇原创内容 O ...

  • 一文理解 Transformer 的工作原理

    概  述 自然语言处理中的 Transformer 模型真正改变了我们处理文本数据的方式. Transformer 是最近自然语言处理发展的幕后推手,包括 Google 的 BERT. 了解 Tran ...

  • YOLOv4一作提出Transformer新架构:DPT!替代卷积网络做密集预测

    AI/CV重磅干货,第一时间送达 CVer 一个专注侃侃计算机视觉方向的公众号.计算机视觉.图像处理.机器学习.深度学习.C/C++.Python.诗和远方等. 220篇原创内容 Official A ...

  • 利用Transformers进行手写文字识别

    重磅干货,第一时间送达 小黑导读 论文是学术研究的精华和未来发展的明灯.小黑决心每天为大家带来经典或者最新论文的解读和分享,旨在帮助各位读者快速了解论文内容.个人能力有限,理解难免出现偏差,建议对文章 ...

  • 开源|qa_match更新啦——新增知识库半自动挖掘模块

    qa_match是58同城推出的一款基于深度学习的轻量级问答匹配工具,V1.0版本于2020年3月9日发布,2020年6月更新v1.1版本. 可参见: 开源|qa_match:一款基于深度学习的层级问 ...

  • 用生成模型来做图像恢复的介绍和回顾:上下文编码器

    作者:Chu-Tak Li 编译:ronghuaiyang 导读 本文给出了图像恢复的一般性框架,编解码器 + GAN,后面的图像复原基本都是这个框架. 本文会介绍图像修复的目的,它的应用,等等.然后 ...

  • 基于Transformer对透明物体进行分割

    重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家带来经典或者最新论文的解读和分享,旨在帮助各位读者快速了解论文内容.个人能力有限,理解难免出现偏差,建议对文章 ...

  • 用于图像分割的深度学习架构

    基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展.如今,它被用于图像分类.人脸识别.图像中物体的识别.视频分析和分类以及机器人和自动驾驶车辆的图像处理等应用上. 现代图像分割 ...

  • CPTR:用于图像添加主题的全Transformer网络

    重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家带来经典或者最新论文的解读和分享,旨在帮助各位读者快速了解论文内容.个人能力有限,理解难免出现偏差,建议对文章 ...

  • ​TransUNet:用于医学图像分割的强大变压器编码器

    重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家带来经典或者最新论文的解读和分享,旨在帮助各位读者快速了解论文内容.个人能力有限,理解难免出现偏差,建议对文章 ...