DistilPose: Tokenized Pose Regression with Heatmap Distillation

news2024/11/24 13:34:16

论文名字:DistilPose:使用热图蒸馏的令牌化姿势回归

论文地址:2303.02455.pdf (arxiv.org)icon-default.png?t=N4HBhttps://arxiv.org/pdf/2303.02455.pdf项目地址:yshMars/DistilPose: Implementation for: DistilPose: Tokenized Pose Regression with Heatmap Distillation (CVPR2023) (github.com)icon-default.png?t=N4HBhttps://github.com/yshMars/DistilPose

摘要

       在人体姿态估计领域,基于回归的方法在速度方面占主导地位,而基于热图的方法在性能方面遥遥领先。如何利用这两种方案仍然是一个具有挑战性的问题。在本文中,我们提出了一种新的人体姿态估计框架,称为DistilPose,它弥合了基于热图和基于回归的方法之间的差距。具体来说,DistilPose通过令牌提取编码器(TDE)和模拟热图,最大限度地将知识从教师模型(基于热图)转移到学生模型(基于回归)。TDE通过引入标记化来对齐基于热图和基于回归的模型的特征空间,而模拟热图将教师热图的明确指导(分布和置信度)转移到学生模型中。大量的实验表明,提出的DistilPose可以显着提高基于回归模型的性能,同时保持效率.具体而言,在MSCOCO验证数据集上,DistilPose-S获得了71.6%的mAP,参数为5.36M,GFLOPs为2.38,FPS为40.2,节省了12.95倍,7.16倍的计算成本,比其教师模型快4.9倍,性能仅下降0.9点。此外,DistilPose-L在MSCOCO验证数据集上获得了74.4%的mAP,在主要的基于回归的模型中实现了新的最新技术水平。

1、介绍

        2D人体姿势估计(HPE)旨在检测给定图像中人体的解剖关节以估计姿势。HPE通常用作参与许多下游任务的预处理模块,例如活动识别、人体运动分析、运动捕获等。以往对2D HPE的研究主要分为两大主流:基于热图和基于回归的方法。基于回归的方法在速度上具有显著优势,并且非常适合于移动的设备。然而,回归模型精度不足会影响下游任务的性能。相比之下,基于热图的方法可以通过估计可能性热图来明确学习空间信息,从而实现HPE任务的高准确性。但似然热图的估计需要非常高的计算成本,这导致缓慢的预处理操作。因此,如何利用基于热图和基于回归的方法两者的优点仍然是一个具有挑战性的问题。

        解决上述问题的一种可能方法是将知识从基于热图的模型转移到基于回归的模型。然而,由于回归模型和热图模型的输出空间不同(前者是向量,后者是热图),在热图和向量之间传递知识面临以下两个问题:(1)回归头通常将主干输出的特征图矢量化。同时,通过全局平均池化(GAP)或平坦化操作会丢失大量的空间信息。因此,以前的工作未能将热图知识完全转移到回归模型。(2)与坐标回归相比,热图自然包含形状、位置和梯度信息。由于缺乏对这些信息的明确指导,基于回归的方法比基于热图的方法更难以学习特征和关键点之间的隐式关系。

        在本文中,我们提出了一种新的人体姿态估计框架,DistilPose,它学习从教师模型到基于回归的学生模型的热图为基础的知识。DistilPose主要包括以下两部分:

        (1)知识传递模块称为令牌蒸馏编码器(TDE)的设计是通过引入令牌化来对齐的热图模型和回归模型的特征空间,其中包括一系列的变换编码器。TDE可以捕获关键点和特征图/其他关键点之间的关系。

        (2)我们建议模拟热图,以获得基于回归的学生显式的热图信息。得到的模拟热图提供了两个明确的指导方针,包括每个关键点的2D分布和置信度。注意,所提出的模拟热图可以插入任何基于热图的方法和基于回归的方法之间,以将热图知识转移到回归模型。

        DistilPose以更少的计算成本实现了与基于热图的模型相当的性能,并超越了最先进的(SOTA)回归方法。具体而言,在MSCOCO验证数据集上,DistilPose-S实现了71.6%的mAP,参数为5.36M,GFLOP和40.3FPS。DistilPose-L在21.27M参数和10.33 GFLOPs的情况下实现了74.4%的mAP,在性能、参数和计算成本方面都优于其基于热图的教师模型。总之,DistilPose在实现有竞争力的精度的同时显著减少了计算量,带来了基于热图和基于回归的方案的优势。如图1所示,DistilPose的性能优于以前的基于SOTA回归的方法,例如RLE 和PRTR ,参数和GFLOP更少。

图1.SOTA方法和建议的DistilPose在MSCOCO瓦尔数据集之间的比较。左上角的红色圆圈表示蒸馏姿势。DistilPose在精度(AP)、参数和计算成本(GFLOPs)方面优于SOTA模型。

         我们的贡献概述如下:

  • 我们提出了一种新的人体姿态估计框架,DistilPose,这是第一个在基于热图和基于回归的模型之间无损地传递知识的工作。
  • 我们引入了一种新的令牌提取编码器(TDE),以利用基于热图和基于回归的模型。利用所提出的TDE,可以以标记化的方式促进热图的输出空间与坐标向量之间差距。
  • 我们提出模拟热图来对显式热图信息进行建模,包括2D关键点分布和关键点置信度。借助模拟热图,我们可以将基于回归的HPE任务转换为更直接的学习任务,充分利用本地信息。模拟热图可以应用于任何基于热图和基于回归的模型,以将热图知识转移到回归模型。

2、相关工作

2.1、 基于热图和基于回归的HPE

        基于热图的姿态估计在性能方面主导了人类姿态估计的领域。一些研究构建了新的网络来提取更好的特征。而其他人建立在试图减轻量化误差的优化视角上。综上所述,基于热图的方法充分利用了特征图的空间信息,获得了较好的性能。然而,效率仍然是基于热图的方法的某些缺点。对于基于回归的方法,Deeppose 首次被提出来直接回归关节坐标。CenterNet 和DirectPose被提出来在单阶段对象检测框架中完成多人人体姿态估计,该框架直接回归关节坐标而不是边界框。SPM引入了根关节来指示不同的人实例,并引入了分层的根人体关节表示,以更好地预测一些关节的长程位移。最近,RLE引入了流模型来捕获底层输出分布,并获得了令人满意的性能。虽然这些方法在寻找关键点的隐式关系方面做了很大的努力,但由于缺乏热图的显式指导,其性能改进仍然不够。

2.2、HPE中的变压器

        Transformer在中提出,并在自然语言处理(NLP)中取得了巨大成功。最近的视觉任务研究使用Transformer作为CNN的替代主干,因为它能够捕获全局依赖关系。在2D人体姿态估计的领域中,已经进行了许多努力以并入变压器。TFPose首先以基于回归的方式将Transformer引入姿态估计框架。PRTR 提出了一种使用级联变压器的两阶段和端到端回归框架,并在基于回归的方法中实现了SOTA性能。TransPose和TokenPose引入了Transformer,用于基于热图的人体姿势估计,实现了相当的性能,同时更轻便。在我们的工作中,我们引入了变压器模块,以帮助寻找关键点之间的潜在关系。

2.3、HPE中的蒸馏

        知识蒸馏(KD)其目的是将教师学到的知识转移到学生模型中。在2D人体姿势估计中,FPD 首先基于沙漏网络经典地使用知识蒸馏。OKDHP介绍了一种在线姿态蒸馏方法,该方法以一个阶段的方式蒸馏姿态结构知识。ViTPose还实现了从大到小的模型知识蒸馏,以证明其知识可转移性。然而,所有以前的蒸馏工作对人体姿态估计忽略了基于热图和基于回归的方法之间的知识转移。在这项工作中,我们第一次提出了一个热图回归蒸馏框架,以从这两个方案中获益。

3、方法

        在本节中,我们提出了一种基于蒸馏的人体姿态估计框架DistilPose,其总体框架如图2所示。在我们提出的DistilPose中,教师是基于热图的模型,而学生是基于回归的模型。我们在训练期间将教师模型的热图知识转移到学生模型,并且在推理阶段仅使用更快的学生模型。DistilPose主要由两个模块组成:令牌提取编码器TDE和模拟热图SH。

图2.国际货币基金组织DistilPose的整体架构。在培训过程中,训练有素的固定热图教师提供其知识,以帮助培训基于回归的学生与TDE和模拟热图。

3.1、Token-distilling Encoder【令牌提取编码器】

        以前的工作已经尝试在基于回归的方法中引入热图模型的优点,例如热图预训练,辅助热图损失等。然而,由于输出空间的未对准,预测头不能被对准。这就是为什么这些工作只能在主干上进行知识转移,这给模型带来了有限的性能改进。如图3(a)所示,热图辅助模型过于关注人体以外的区域。因此,我们提出了一个令牌提取编码器(TDE)对齐教师和学生的输出空间,通过引入令牌化。通过引入对齐的标记化特征,将热图知识无损地转移到学生模型。因此,学生模型学习更专注于人体本身的信息,如图3(a)所示。具体来说,对于输入图像I,我们根据pw\times ph的大小将其划分为若干块以形成视觉令牌。接下来,我们添加K个空节点作为keypointstoken,其与视觉令牌连接并发送到TDE的几个变压器编码器层。受LVViT 的启发,我们将学生和教师模型之间的视觉标记和关键点标记对齐,以获得教师模型的精细注意力矩阵。如图3(B)所示,TDE中的注意力矩阵可以学习关键点标记与对应位置的视觉标记之间的关系。至于性能改进,TDE使我们的学生模型能够实现比热图辅助训练更高的性能(图中的7.8% ↑)。

图3.骨干特征图和注意力矩阵的可视化。(a)第一行分别表示直接训练、热图辅助训练和我们提出的蒸馏训练(仅蒸馏TDE和蒸馏TDE和模拟热图两者)的主干特征图。而第二行表示具有不同骨架的基于热图的方法TokenPose的骨架特征图。在这里可以看出,与仅提取TDE的模型相比,DistilPose的完整结构更关注人体(前者的特征图背景更暗)。(b)这些是“右脚踝”(红点)的关键点标记和视觉标记之间的注意力矩阵。

 待续......

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

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

相关文章

科幻风的卡片视频播放

上一篇博文展示了卡片中的VR展示&#xff0c;那篇主要是卡片的3D转动来展示未显示的部分图片。这篇&#xff0c;我们来点科幻的。 我们在卡片中播放视频的同时来拖动卡片或转动它。像下面那样&#xff1a; 这个主要依赖了两个库&#xff0c;具体代码如下&#xff1a; <!D…

智能问答支持自定义问答

# -*- coding: utf-8 -*- # Time : 2023-5-12 14:15 # Author : shenzh # FileName: chat_bot_v1.py # Software: PyCharm """Description:一期智能机器人设计完成&#xff0c;支持自定义问题和答案随时增加功能""" import json import jie…

NOV Diagram for .NET Crack

NOV Diagram for .NET Crack 增加了对Microsoft.NET 7.0的支持-NOV现在完全支持.NET Core 7.0&#xff0c;此外还支持Microsoft.NET Framework 4.7.2、.NET Core 5.0和.NET Core 6.0的内部版本。 添加了对读取Microsoft Visio 2003-2010绘图(VSD文件)的支持。 改进了SVG导出。 …

哈希表应用——位图

应用场景&#xff1a;海量数据处理&#xff08;这里的海量是指一般数据量非常大如以亿为单位的数据量&#xff09; 目录 面试题 位图概念 位图的实现 位图的应用 应用一 应用二 位图应用变形 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&…

Java之多线程进阶

目录 一.上节内容复习 1.线程池的实现 2.自定义一个线程池,构造方法的参数及含义 3.线程池的工作原理 4.拒绝策略 5.为什么不推荐系统提供的线程池 二.常见的锁策略 1.乐观锁和悲观锁 2.轻量级锁和重量级锁 3.读写锁和普通互斥锁 4.自旋锁和挂起等待锁 5.可重入锁和…

精彩回顾 | Fortinet Accelerate 2023·中国区巡展厦门站

Fortinet Accelerate 2023中国区 5月16日&#xff0c;Fortinet Accelerate 2023中国区巡展来到魅力“鹭岛”——厦门&#xff0c;技术、产品和业务专家&#xff0c;携手亚马逊云科技、唯一网络等云、网、安合作伙伴&#xff0c;与交通、物流、金融等各行业典型代表客户&#x…

GPT大语言模型Vicuna本地化部署实践(效果秒杀Alpaca) | 京东云技术团队

​ 背景 上一篇文章《[GPT大语言模型Alpaca-lora本地化部署实践]》介绍了斯坦福大学的Alpaca-lora模型的本地化部署&#xff0c;并验证了实际的推理效果。 总体感觉其实并不是特别理想&#xff0c;原始Alpaca-lora模型对中文支持并不好&#xff0c;用52k的中文指令集对模型进…

信息安全工程实验——口令攻击和钓鱼攻击(自用)

目录 实验目的 实验原理 实验内容 练习1windows口令破解 1、基本操作 2、思考与总结 练习2&#xff1a;QQ 邮箱的钓鱼攻击 1、构造钓鱼页面 2、接收钓鱼所得的账号和密码&#xff08;分档&#xff09; 3、实验验证 4、思考与总结 实验目的 &#xff08;1&#xff09…

网络安全实验——信息收集与主机发现

目录 实验目的 实验原理 实验内容 1.信息搜集 1.ping探测 2. Nmap扫描 3. 探测总结 2.主机发现程序开发 3.主机发现 实验总结 实验目的 1.了解信息搜集的一般步骤。 2.学会熟练使用ping命令。 3.学会利用Nmap等工具进行信息搜集。 4.了解IP助手函数。 5.掌握Sen…

Python学习29:存款买房(B)

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 你刚刚大学毕业&#xff0c;…

李莫愁给张无忌朋友圈点赞?详解SpringBoot事件机制

Spring Boot的事件机制是基于Spring框架的事件机制实现的。Spring Boot中的事件机制可以让我们在应用程序中监听和响应特定的事件&#xff0c;例如应用程序启动、关闭、上下文刷新等。 接下来&#xff0c;我们通过一个案例&#xff0c;来讲解具体怎么使用。 这个案例就是李莫…

一文看懂增值税发票识别OCR:从技术原理到 API Java 示例代码接入

引言 增值税发票识别OCR API是一项重要的技术创新&#xff0c;它在如今信息化的商业环境中发挥着重要作用。通过利用该API&#xff0c;企业和机构能够实现增值税发票的自动化识别和信息提取&#xff0c;从而在财务管理、票据核对、报销流程等方面带来许多好处。 本文将详细介…

Istio virtual service 超时和重试

在使用xshell去远程连接服务器的时候没有反应&#xff0c;这样可能等了几分钟&#xff0c;这样按下crtlc终止就行了。 有些时候微服务是多个服务组成的&#xff0c;a服务会去调用b服务&#xff0c;可能因为网络问题或者连接问题&#xff0c;没有连接成功&#xff0c;那么会尝试…

怎么把音频的声音调大?

怎么把音频的声音调大&#xff1f;我们平时会经常使用到音频文件&#xff0c;但声音大小不一&#xff0c;可能会让我们感到不适应。如果太大&#xff0c;甚至会使人吓一跳&#xff1b;如果太小&#xff0c;则难以听清楚。为了轻松聆听音频&#xff0c;我们需要将声音调整到合适…

ConvNeXt网络详解,最新ConvNeXt结合YOLO,催生YOLOv5目标检测巨变

目录 引言一、ConvNeXt的介绍1、目标检测的重要性2、YOLOv5的介绍3、ConvNeXt原理和特点4、ConvNeXt结构 二、相关研究综述1、目标检测的基础原理和流程2、YOLOv5的特点与局限性3、ConvNeXt技术在目标检测中的应用现状 三、ConvNeXt在YOLOv5中的应用与改进1、安装PyTorch和torc…

什么是栈,为什么函数式编程语言都离不开栈?

文章目录 一、什么是栈&#xff0c;什么是FILO二、栈的作用是什么&#xff0c;为什么编程语言函数调用都选择用栈&#xff1f;三、使用C模拟实现解析栈1.结构体的定义2.栈的创建及销毁3.实现入栈操作4.获取栈顶元素及出栈操作5.获取栈中有效元素个数 源代码分享 一、什么是栈&a…

临时被拉去已经在进行中的项目组「救火」,该怎么开展管理?

当你被临时拉去参与正在进行中的项目组&#xff0c;需要进行所谓的「救火」工作时&#xff0c;你需要注意的是如何开展管理&#xff0c;以确保项目能够成功完成。 首先&#xff0c;你需要了解项目的当前状态。了解项目的进展情况、目标和计划&#xff0c;以及团队成员的角色和…

Vmware Linux磁盘空间扩容

Linux磁盘空间扩容 VMware虚拟机中配置&#xff08;1&#xff09;进入虚拟机设置界面&#xff0c;选择扩展磁盘容量。&#xff08;2&#xff09; 本次是在原来30G的基础上扩展为50G。 Linux中设置&#xff08;1&#xff09; 可以看出sda3是根分区&#xff0c;下面按照博客提示&…

栈的实现(附含经典例题)

&#x1f349;博客主页&#xff1a;阿博历练记 &#x1f4d6;文章专栏&#xff1a;数据结构与算法 &#x1f68d;代码仓库&#xff1a;阿博编程日记 &#x1f365;欢迎关注&#xff1a;欢迎友友们点赞收藏关注哦&#x1f339; 文章目录 &#x1f340;前言&#x1f3c4;‍♂️数…

Redis系列--哨兵模式

一、什么是哨兵 Redis Sentinel&#xff08;哨兵&#xff09;是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程, 这些进程使用 gossip协议(基于流行病传播方式的节点或者进程之间信息交换的协议&#xff0c;在分布式系统中被广泛使用) 来接收关于Master是否下线…