Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习

论文题目:Hierarchically Self-Supervised Transformer for Human Skeleton Representation Learning

论文下载地址:https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136860181.pdf

代码地址:https://github.com/yuxiaochen1103/Hi-TRS/tree/main


层级式建模

整个建模骨架点视频序列的网络架构由三个 Transformer 组成:

  • 对关节点建模空间信息的 Frame-level Transformer (F-TRS)
  • 对序列片段建模短期时序信息的 Clip-leve Transformer (C-TRS)
  • 对整段骨架点视频序列建模长期时序信息的 Video-leve Transformer (V-TRS)

数据在其中是串行流动,即 F-TRS 的输出作为 C-TRS 的输入,以此类推。

Frame-level Transformer (F-TRS)

大家可能更加熟悉对图片进行建模的 Transformer:以 patch 为单位进行 Attention。

在这里,每个 joint 就相当于一个 patch,所以该 Transformer 做的是 joint 和 joint 之间的 Attention。

同时,该 Transformer 还为每个 joint 加上了可学习的位置编码(1D learnable positional embedding)。

Clip-leve Transformer (C-TRS)

在这个 Transformer 里,clip 里的每一帧的每个 joint 都相当于一个 patch。注意和上面的区别,这里 clip 里第 1 帧的左手节点和第 2 帧的左手节点会被认为是不同的 patch。

所以,该 Transformer 的可学习位置编码是二维的(2D learnable positional embedding)。

同时,作者为每个 clip 加上一个 [CLS] token,该 token 就汇聚了 clip 里所有帧里所有节点的信息。这个 token 也就作为该 clip 的 embedding。

Video-leve Transformer (V-TRS)

在这个 Transformer 里,每个 clip 相当于一个 patch,所以该 Transformer 做的是 clip 和 clip 之间的 Attention。

同样,该 Transformer 为每个 clip 加上了可学习的位置编码(1D learnable positional embedding)。

同时,作者为每个 video 加上一个 [CLS] token,该 token 就汇聚了 video 里所有 clips 的信息。这个 token 也就作为该 video 的 embedding。


层级式自监督学习 

可以从上图可知,论文针对不同层级 Transformer 的输出做了不同代理任务的设计。

 

Spatial Pretext task

  • 作用于 Frame-level Transformer 的输出 embeddings
  • 任务类似于 MAE,用不同的策略掩盖掉 15% 的关节点 embeddings。再接上一个全连接层,回归预测出被掩盖掉关节点的坐标。
  • 该任务使用 L1-Loss 去约束预测值与真实值之间的差距。

Temporal Pretext task

  • 分别作用于 Clip-leve Transformer  Video-leve Transformer 的输出 embeddings
  • 简单的二分类任务,判断时序正确与否。当作用于 Clip-leve Transformer 时,可能打乱 clip 中任意两帧 embeddings,也有可能不打乱,再接上一个全连接层,让其判断打乱与否;当作用于 Video-leve Transformer 时,可能打乱任意两个 clip embeddings 的顺序,也有可能不打乱,再接上一个全连接层,让其判断打乱与否;
  • 用交叉熵损失函数约束任务的进行。

Discriminative Pretext task 

  • 作用于 Video-level Transformer 的输出 embeddings
  • 该任务是生成式任务,结合前几个 clip 的 embeddings 去预测最后一个 clip 的 embedding。同样通过接上一个全连接层,让其回归出最后一个 clip 的 embedding。
  • 使用 InfoNCE Loss 来约束任务的进行。正样本对为最后一个 clip 的预测 embedding 和真实 embedding;负样本为同一个 batch 里其他 skeleton sequences 最后一个 clip 的真实 embedding


如果觉得有帮到你的话,可以点击右下方的“打赏”按钮~您的支持是我创作的最大动力呀~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/45111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux -- 进阶 利用大文件来增加分区 自动挂载大文件

情景引入 : 比如, 你的硬盘 分了三个区,但是,现在就是要求要分第四个区, 你一看硬盘没有剩余空 间了,分不出第四个区了,除非你再添加 一块儿 新硬盘。 那就可以使用我们介绍的这种方法 &…

并发-并发挑战及底层实现原理笔记

并发编程挑战 上下文切换 cpu通过给每个线程分配cpu时间片实现多线程执行,时间片是cpu分配给各个线程的时间,cpu通过不断切换线程执行。线程有创建和上下文切换的开销。减少上下文切换的方方法 – 无锁并发编程,eg:将数据的id按…

记录hutool http通过代理模式proxy访问外面的链接

效果: 代码: public class TestMain {public static void main(String[] args){HttpRequest httpRequest HttpRequest.get("https://www.youtube.com").timeout(30000);httpRequest.setProxy(new Proxy(Proxy.Type.HTTP,new InetSocketAddre…

Laravel 框架模型的定义 模型的增删改 批量赋值和软删除 ⑧

作者 : SYFStrive 博客首页 : HomePage 📜: THINK PHP 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f44…

linux 搭建 nexus maven私服

目录 环境: 下载 访问百度网盘链接 官网下载 部署 : 进入目录,创建文件夹,进入文件夹 将安装包放入nexus文件夹,并解压​编辑 启动 nexus,并查看状态.​编辑 更改 nexus 端口为7020,并重新启动,访问虚拟机7020…

SpringBoot + Vue 前后端分离项目 微人事(九)

职位管理后端接口设计 在controller包里面新建system包,再在system包里面新建basic包,再在basic包里面创建PositionController类,在定义PositionController类的接口的时候,一定要与数据库的menu中的url地址到一致,不然…

JavaScript(JavaEE初阶系列13)

目录 前言: 1.初识JavaScript 2.JavaScript的书写形式 2.1行内式 2.2内嵌式 2.3外部式 2.4注释 2.5输入输出 3.语法 3.1变量的使用 3.2基本数据类型 3.3运算符 3.4条件语句 3.5循环语句 3.6数组 3.7函数 3.8对象 3.8.1 对象的创建 4.案例演示 4…

Linux 系统编程拾遗

Linux 系统编程拾遗 进程的创建 进程的创建 fork()、exit()、wait()以及execve()的简介 创建新进程:fork()

【ARM v8】如何在ARM上实现x86的rdtsc()函数

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表

题目一: 54. 螺旋矩阵https://leetcode.cn/problems/spiral-matrix/ 题目要求: 思路:一定要先找好边界。如下图 ,上边界是1234,右边界是8、12,下边界是9、10、11,左边界是5,所以可…

滑块验证码-接口返回base64数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言所需包图片示例使用方法提示前言 滑动验证码在实际爬虫开发过程中会遇到很多,不同网站返回的数据也是千奇百怪。这里分享一种接口返回base64格式的情况以及处理方式 所需包 opencv-python、…

vue3 路由缓存问题

目录 解决问题的思路: 解决问题的方案: 1、给roter-view添加key(破坏复用机制,强制销毁重建) 2、使用beforeRouteUpdate导航钩子 3、使用watch监听路由 vue3路由缓存:当用户从/users/johnny导航到/use…

Linux网络编程:Socket套接字编程(Server服务器 Client客户端)

文章目录: 一:定义和流程分析 1.定义 2.流程分析 3.网络字节序 二:相关函数 IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结…

Git概述

目录 一、什么是Git 二、什么是版本控制系统 三、Git和SVN对比 SVN集中式 SVN优缺点 Git分布式 Git优缺点 四、Git工作流程 四个工作区域 工作流程 五、Git下载与安装 一、什么是Git 很多人都知道,林纳斯托瓦兹在1991年创建了开源的Linux,从…

不是说嵌入式是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染嵌入式可以拿高薪,这在行业内也是事实,但前提是你有足够的竞争力,真的懂嵌入式。 时至今日,能做嵌入式程序开发的人其实相当常见,尤其是随着树莓派、Arduino等开发板的普及,甚…

[NLP] BERT模型参数量

一 BERT_Base 110M参数拆解 BERT_base模型的110M的参数具体是如何组成的呢,我们一起来计算一下: 刚好也能更深入地了解一下Transformer Encoder模型的架构细节。 借助transformers模块查看一下模型的架构: import torch from transformers …

Linux 线程库中的接口介绍

1.pthread_create()创建线程 pthread_create()的语法形式: 参数解释: 第一个参数thread:事先创建好的pthread_t类型的参数。成功时thread指向的内存单元被设置为新创建线程的线程ID。 第二个参数attr:用于定制各种不同的线程属性…

SQL Monitor Crack,PostgreSQL监控的传入复制图表

SQL Monitor Crack,PostgreSQL监控的传入复制图表  现在,您可以在从Estate页面导出的Microsoft Excel报告的摘要标题中看到UTC偏移量。 添加了PostgreSQL监控的传入复制图表。 Microsoft PowerShell API现在支持将使用New-SqlMonitorWindowsHost和New-SqlMonitorin…

【AI大模型】训练Al大模型

大模型超越AI 前言 洁洁的个人主页 我就问你有没有发挥! 知行合一,志存高远。 目前所指的大模型,是“大规模深度学习模型”的简称,指具有大量参数和复杂结构的机器学习模型,可以处理大规模的数据和复杂的问题&#x…

MybatisPlus整合p6spy组件SQL分析

目录 p6spy java为什么需要 如何使用 其他配置 p6spy p6spy是一个开源项目,通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。 p6spy将应用的数据源给劫持了,应用操作数据库其实在调用p6spy的数据源,p6spy劫持到…