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

GroupFormer是一种新型的群体活动识别网络,通过聚类时空Transformer增强个体和群体表征,有效处理时空上下文信息,解决了传统方法在群体活动识别中的挑战。在Volleyball和Collective Activity数据集上,GroupFormer的表现超越了当前的SOTA方法。
摘要由CSDN通过智能技术生成

关注公众号,发现CV技术之美

 写在前面

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

为了解决这些问题,作者提出了一种新的群体活动识别网络,称为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):

1e4c26f9f15dd83d9ef95ec8ec84d1de.png

完整代码:

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=(5
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值