【论文阅读 + 核心代码定位解读】(2023 AAAI)HiCLR

Hierarchical Consistent Contrastive Learning for Skeleton-Based Action Recognition with Growing Augmentations

Contribution

  1. 直接使用 strong augmentations 会导致图片/骨架点序列的结构变形语义信息损失,从而导致训练过程的不稳定。于是本文提出了一种逐级融合(hierarchically integrates)strong augmentations 的设计,并提出逐级一致性对比学习的框架 hierarchical consistent contrastive learning framework, HiCLR
  2. 不对称的逐级学习方式(asymmetric hierarchical learning)来约束正样本对特征的一致性,将 “应用了 strong augmentations 的骨架点特征” 往 “应用了 weak augmentations 的骨架点特征” 方向拉近(单向),以此利用 strong augmentations 带来的丰富信息提升模型的表征能力。
  3. 提出了三种 strong augmentation: Random Mask, Drop/Add Edges, 和 SkeleAdaIN. 需要注意的是:直接在经典的对比学习框架中使用这些 strong augmentations 会起反效果,但这些 strong augmentations 配合本文提出的逐级一致性对比学习的框架(HiCLR)可以带来明显提升。

Method

本文的 HiCLR 是基于经典对比学习框架 MoCo v2(对应最下面的两个分支)。

Strong Augmentation for Skeleton

本文定义了三个 augmentation sets

1. Basic Augmentation Set(BA):spatial transformation Shear and a temporal transformation Crop.

2. Normal Augmentation Set(NA)Spatial Flip, Rotation, Gaussian Noise, Gaussian Blur, and Channel Mask

3. Strong Augmentation Set

  • Random Mask
    • A random mask for the spatial-temporal 3D coordinate data of the joints. It can be viewed as a random perturbation of the joint coordinates.
    • 代码实现:https://github.com/JHang2020/HiCLR/blob/49ffdf85231f19c1c7795ec63fb8d25ea96d37cf/processor/utils.py#L42-L57
  • Drop/Add Edges (DAE)
    • We randomly drop/add connections between different joints in each information aggregation layer. The target to be augmented is the predefined or learnable adjacency matrix for the graph convolution layer and the attention map for the transformer block.
    • 代码实现:https://github.com/JHang2020/HiCLR/blob/49ffdf85231f19c1c7795ec63fb8d25ea96d37cf/net/st_gcn.py#L71-L100
  • SkeleAdaIN
    • Inspired by the practice of style transfer (Huang and Belongie 2017; Karras, Laine, and Aila 2019), we exchange statistics of two skeleton samples on the spatial-temporal dimension, i.e., the mean and the variance of the style sample are transferred to the content sample, to generate the augmented views. Since this transformation does not change the relative order of joint coordinates, we maintain the semantics of skeleton sequences unchanged.
    • 代码实现:https://github.com/JHang2020/HiCLR/blob/49ffdf85231f19c1c7795ec63fb8d25ea96d37cf/net/skeletonAdaIN.py

Gradual growing augmentation

图中第三~第一个分支的数据增强操作在前一个分支的基础上进行增加。

核心代码如下:

https://github.com/JHang2020/HiCLR/blob/49ffdf85231f19c1c7795ec63fb8d25ea96d37cf/feeder/ntu_feeder.py#L82-L118

https://github.com/JHang2020/HiCLR/blob/main/processor/pretrain_hiclr.py#L100

https://github.com/JHang2020/HiCLR/blob/49ffdf85231f19c1c7795ec63fb8d25ea96d37cf/net/hiclr.py#L113-L117

Asymmetric hierarchical learning

单方向将 “应用了 strong augmentations 的骨架点特征” 往 “应用了 weak augmentations 的骨架点特征” 方向拉近

sim() 可以是任何衡量相似性的函数,本文用的是 KL Divergence

核心代码:https://github.com/JHang2020/HiCLR/blob/49ffdf85231f19c1c7795ec63fb8d25ea96d37cf/net/hiclr.py#L180-L187

Total Loss

其中,InfoNCE Loss 只应用在第三和四分支生成的 pairs 上

代码:https://github.com/JHang2020/HiCLR/blob/main/processor/pretrain_hiclr.py#L101-L109

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java Servlet

请求 请求行 方式 uri http/1.1 请求头 请求体 form表单标签提交Get请求时,参数以键值对形式放在url后,不放在请求体里,Get方式的请求也是可以有请求体的 Post请求时,放在请求头里面 Servlet (server applet) 是运行在服务端…

curl --compressed报错,此版本不支持此命令

出现这个问题是因为微软windows自带的curl不支持这个选项,验证如下 执行where curl 时,可以看到输出为 C:\Windows\System32\curl.ee 解决方法是使用其它curl,下载地址如下 curl for Windows https://curl.se/windows/ 然后把安装目录的bin目录放到path环境变量里最开始, 让…

基于微信小程序的高校活动系统

1 前言 1.1开发背景及意义 高校课余活动管理是中职学生素质教育的重要途径及有效方式,特别是对于一个院校的校园文化建设、校风学风建设和学生综合素质方面的提高至关重要t叫"。良好的学生活动组织可以更好地调动学生参与活动,让学生展示自己的能力…

理解SpringIOC和DI第一课(Spring的特点),IOC对应五大注解,ApplicationContext vs BeanFactory

Spring是一个包含众多工具等Ioc容器 对象这个词在Spring范围内,称为bean Spring两大核心思想 1.IOC (IOC是控制反转,意思是控制权反转-控制权(正常是谁用这个对象,谁去创建,)-控制对象的控制权&#xf…

十五届海峡两岸电视主持新秀大会竞赛流程

海峡两岸电视主持新秀会是两岸电视媒体共同举办的一项活动,旨在为两岸年轻的电视主持人提供一个展示才华的舞台,促进两岸文化交流和青年交流。本届新秀会是第十二届海峡两岸电视艺术节的重要活动之一。本次竞赛赛制流程如下: (1&…

navicat某些表为什么不按主键排序

不知道大家注没注意过navicat的这种情况 为什么不是按主键排序呢 我们来全表扫描看下他的执行计划 explain select * from orsql3; 可以发现不是全表扫描而是索引树扫描,由此得知了共性,不按主键顺序排序的表,肯定是在二级索引上就保存着全部…

【uni-app】赋予你的APP(Android原生)小程序开发能力

采用DCloud(数字天堂(北京)网络技术有限公司)的uniMPsdk(uni小程序SDK),是为原生App打造的可运行基于 uni-app 开发的小程序前端项目的框架,从而帮助原生App快速获取小程序的能力。 uni-app文档地址(小程序开发人员开发用) uniMP…

SmartsoftHelp8,条形码,二维码 生成,解析 专业工具

生成条形码 生成二维码 条形码解析 二维码解析 专业工具 下载地址: https://pan.baidu.com/s/1zBgeYsqWnSlNgiKPR2lUYg?pwd8888

9、Qt使用随机验证码

一、新建项目 创建一个"Qt Widget Application"项目,基类选择“QMainWindow” 二、自定义CaptchaLabel类 右击项目名,选择"Add New...” C -> CClass,点击“Choose” 更改类名CaptchaLabel,添加基类QLabel&a…

《YOLOv8原创自研》专栏介绍 CSDN独家改进创新实战专栏目录

YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适合paper !!! 💡&a…

分治-归并排序

文章目录 🌞315. 计算右侧小于当前元素的个数🌈1. 题目⛅2. 算法原理🪐3. 代码实现 🌕493. 翻转对🌠1. 题目⭐2. 算法原理🌟3. 代码实现 🌞315. 计算右侧小于当前元素的个数 🌈1. 题…

Matlab数学建模详解之发电机的最佳调度实现

🔗 运行环境:Matlab、Python 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&am…

String类 ---java

目录 一. 常用的字符串的构造 二. 字符串的源代码 三. 字符串比较 1. 是不能比较字符串的值的 ​编辑 2.比较两个字符串 --- compareTo() 3. 忽略大小写比较 ---compareToIgnoreCase() 四. 字符串转化 1. 数字转字符串 valueOf() 2. 字符串转数字 3. 小写转大写 to…

树莓派多串口通信

树莓派多串口通信 串口配置串口通信函数分析串口通信示例代码 参考博文1:树莓派 4 UART 多串口配置通信参考博文2:树莓派wiringPi库详解关于树莓派相关其他环境配置可参考:快速上手树莓派关于wiringPi库初始化与IO口开发可参考:树…

OpenLayer库的学习入门总结

前言: 作者跟随视频学习ol库的调用与功能实现,进行初步总结与回顾。 声明:参考新中地的文档,进行作者日后复习再次学习的简化。 1、WebGIS简介 GIS的核心概念 GIS(Geographic Information System)是一…

第 374 场 LeetCode 周赛题解

A 找出峰值 枚举 class Solution { public:vector<int> findPeaks(vector<int> &mountain) {int n mountain.size();vector<int> res;for (int i 1; i < n - 1; i)if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i 1…

中断方式的数据接收2

Echo实验 回忆之前的实验因为数据处理的过程可以瞬间完成所以可以把数据处理的操作放在中断服务函数中执行 但是数据处理要是时间过长就将数据缓存处理 当使用中断方式接收数据的时候 一般有两种方式 数据处理的时间较短可放在中断服务函数内处理&#xff08;就地处理&#…

【Linux--进程】

目录 一、基本概念1.1描述进程-PCB1.2task_struct中内容分类 二、了解进程2.1查看进程2.2通过系统调用获取进程标识符 三、fork创建进程3.1fork()函数3.2写时拷贝 四、进程的状态4.1操作系统学科里的进程状态&#xff08;运行、阻塞、挂起&#xff09;4.具体的Linux状态是如何维…

LinuxBasicsForHackers笔记 --常用Linux命令

在终端中修改用户密码命令&#xff1a;passwd Linux的文件系统是逻辑文件系统。 Linux基本命令 pwd – print working directory. 返回你当前所在目录结构中的位置。 whoami – 查看您当前登录的用户身份。 cd – change directory. 从终端更改目录。 cd / – 移动到根目录…

大数据实战项目_电商推荐系统

一、 项目介绍 HadoopSpark (Python)Scala SparkSQLSparkStreaming MongoDB Redis Kafka Flume ( SpringMVC vue) 1 项目介绍 1.1 项目系统架构 项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托&#xff0c;以某电商网站真实业务数据架构为基…