论文阅读-《Lite Pose: Efficient Architecture Design for 2D Human Pose Estimation》

摘要

这篇论文主要研究了2D人体姿态估计的高效架构设计。姿态估计在以人为中心的视觉应用中发挥着关键作用,但由于基于HRNet的先进姿态估计模型计算成本高昂(每帧超过150 GMACs),难以在资源受限的边缘设备上部署。因此,该论文提出了一个核心问题:在轻量模型上,高分辨率+多分支结构是否真正必要。为了解决这一问题,论文作者设计了一个渐进收缩实验,发现高分辨率分支对于低计算区域的模型是多余的。基于这一发现,他们提出了LitePose,这是一种用于自底向上姿态估计的高效架构。LitePose采用了单分支设计,并引入了两种技术来增强其容量,包括fusion deconv head和 large kernel conv。这种设计不仅降低了计算量,而且在实际应用中取得了良好的效果——在移动平台上,与之前的最先进的高效姿势估计模型相比,LitePose将延迟降低了多达5.0倍,而不会牺牲性能,推动了边缘实时多人姿势估计的前沿。


目录

摘要

一、介绍

二、相关工作

三、重新思考设计高效模型

1. Scale-Aware Multi-branch Architectures(尺度感知多分支架构)

(1)尺度感知

(2)原理

2. Redundancy in High-Resolution Branches(高分辨率分支的冗余)

3. Fusion Deconv Head: Remove the Redundancy(冗余消除)

4. Mobile Backbone with Large Kernel Convs

5. Single Branch, High Efficiency(单分支节点,更高的效率)


一、介绍

        人体姿势估计旨在从图像中预测每个人的关键点位置。典型的人体姿势估计模型可以分为自顶向下和自底向上。自顶向下范式首先通过额外的人员检测器检测人员,然后对每个检测到的人员执行单人姿势估计。相比之下,自底向上范式首先预测无身份的关键点,然后将它们分组成人员。由于自底向上范式不涉及额外的人员检测器,并且不需要针对图像中的每个人重复运行姿势估计模型,因此它更适合于边缘实时多人姿势估计。

        然而,现有的自底向上姿势估计模型主要集中在高计算区域。例如,HigherHRNet在CrowdPose数据集上取得了最佳性能,但其需要超过150GMACs的计算量,不适合于资源受限的边缘设备,设计低计算成本的模型同时保持良好性能至关重要。之前的研究表明,在高计算区域中,保持高分辨率表示对于获得良好的自底向上姿势估计性能至关重要。然而,目前尚不清楚这一结论是否适用于低计算区域的模型。为了回答这个问题,我们通过逐渐缩小高分辨率分支的深度,构建了一个“桥梁”来连接代表性的多分支架构HigherHRNet和单分支架构(见图2)。而后发现对于低计算区域中的模型,随着高分辨率分支深度的缩小,性能会提高(见图3)。受到这一启发,作者设计了一种用于高效自底向上姿势估计的单分支架构LitePose。在LitePose中,我们使用修改后的MobileNetV2[43]骨干网络,并进行了两项重要改进以有效处理单分支设计中的尺度变化问题:fusion deconv head和 large kernel conv。融合反卷积头去除了高分辨率分支中多余的细化操作,因此允许以单分支方式进行尺度感知多分辨率融合。与图像分类不同的是,作者发现large kernel conv在自底向上姿势估计中提供了明显更显著的改进。最后,作者应用神经架构搜索(NAS)来优化模型架构并选择适当的输入分辨率。

        经过在 CrowdPose 和 COCO 数据集上的大量实验,LitePose 的有效性得到了充分验证。在CrowdPose 数据集上,LitePose 实现了2.8倍的MACs(乘加操作次数)减少和高达5.0倍的延迟减少,同时性能表现也很好。在COCO数据集上,与 EfficientHRNet 相比,LitePose 实现了2.9倍的延迟减少,并且提供了更好的性能表现。这些结果证明了LitePose在保持高性能的同时,显著降低了计算成本,使其在边缘设备上实现实时多人姿态估计成为可能。

        本论文做出的贡献可以总结为以下几点:

        1. 本研究通过设计渐进收缩实验,证明了高分辨率分支在低计算区域的模型中的非必要性

        2. 本文提出了LitePose,这是一种高效的自下而上姿态估计架构。同时还引入了两种技术来增强LitePose的性能,包括fusion deconv head和 large kernel conv。

        3. 在Microsoft COCO[28]和CrowdPose[26]这两个基准数据集上进行了大量实验,证明了该方法的有效性:与最先进的基于HRNet的模型相比,LitePose实现了高达2.8倍的MACs(乘加操作次数)减少,延迟减少高达5.0倍。

二、相关工作

2D Human Pose Estimation

        二维人体姿态估计旨在确定人体的关键点和部位,主要有自上而下和自下而上两种框架。虽然基于HRNet的多分支架构在自下而上姿态估计中取得了先进的结果,但由于其计算量大,难以在边缘设备上部署。因此,本工作致力于提高自下而上框架的效率,故遵循最先进的基于HRNet的方法,并借鉴了关联嵌入技术进行关键点分组。

Model Acceleration.(模型加速)

        除了直接设计高效的模型外,另一种模型加速的方法是压缩现有的大型模型。一些方法旨在去除连接和卷积滤波器中的冗余,同时,还有一些方法专注于网络的量化。此外,还提出了几种AutoML方法,实现自动化模型压缩和加速过程。最近,Yu等人设计了LiteHRNet用于自上而下姿态估计,而本文则专注于自下而上的范式研究。Neff等人提出了EfficientHRNet用于高效的自下而上姿态估计。他们将EfficientNet中的复合缩放思想应用于HigherHRNet,实现了1.5倍的MACs减少,然而,当严格约束计算时,该方法仍会面临性能急剧下降的问题。而本文将MACs减少率提高到5.1倍,并在移动平台上实现了比EfficientHRNet高达5.0倍的延迟减少。

Neural Architecture Search.(神经网络架构搜索)

NAS在图像分类任务中取得了成功,通过共享权重的一次性NAS方法可以提高搜索效率。后又尝试采用了一次性搜索所有(once-for-all)的方法,自动修剪通道内的冗余并选择适当的输入大小。总之,在本研究中,我们利用NAS方法进一步提升了LitePose的性能,实现了更高的MACs减少率和延迟减少,并显著提升了模型精度(搜索的模型实现了高达+3.6AP的显著改进。)。

三、重新思考设计高效模型

        多分支网络在自底向上姿势估计任务中取得了巨大成功。它们的代表作HigherHRNet使用多分支架构来帮助融合多分辨率特征,从而显著缓解了尺度变化问题。由于这一特性,多分支架构优于单分支架构,并取得了最先进的结果。但是,大多数这些方法在高计算量条件下才能达到最佳性能,比如使用超过150GMACs。针对实际的边缘应用,研究低计算量下高效的人体姿势估计方法是非常重要的。在本节中,首先介绍了基于HRNet的多分支架构以及它们如何处理尺度变化问题。然后指出了在计算受限情况下高分辨率分支中的冗余问题,并通过逐步缩小来加以说明。

        针对这一现象,首先提出了 fusion deconv head(融合反卷积头),它消除了高分辨率分支中的多余细化操作,从而以高效的方式处理尺度变化问题。另外,与图像分类任务相比,large kernel conv(大卷积核)对姿势估计任务的改进要明显得多。

1. Scale-Aware Multi-branch Architectures(尺度感知多分支架构)

(1)尺度感知

        多分支设计旨在缓解自底向上姿势估计中的尺度变化问题。由于我们需要预测图像中所有人的关节坐标,单分支架构通常很难识别小人并区分最终低分辨率特征中的接近关节,如图5(b)所示。然而,多分支架构引入的高分辨率特征可以保留更详细的信息,因此有助于神经网络更好地捕捉小人并区分接近的关节。

(2)原理

        如图2所示,基于HRNet的多分支架构主要由4个阶段组成。在第n阶段(这里我们将干扰阶段视为第1阶段),分别处理具有不同分辨率的n个不同输入特征图的n个分支。在处理输入特征时,每个分支首先分别对其自己的输入特征进行细化,然后在分支之间交换信息以获取多尺度信息。

2. Redundancy in High-Resolution Branches(高分辨率分支的冗余)

        本节介绍了一种称为逐渐缩小(gradual shrinking)的方法,用于揭示多分支架构中高分辨率分支的冗余性。如图2和图3所示,通过逐渐缩小高分辨率分支的深度,多分支网络的行为越来越类似于单分支网络。然而,性能不会下降,甚至可能会提高。

Gradual Shrinking.

        见图2。首先,定义An = [a1, ..., an]来表示在融合前每个分支用于细化特征的块数(ai表示分支i中的块数)。分支i处理的特征图分辨率高于分支i+1。整个多分支架构的配置可以定义为A = {A1, A2, A3, A4}。

        如果一个配置A'i = [a'1, ..., a'i]是从另一个配置Ai = [a1, ..., ai]缩小得到的,那么对于所有j ∈ {1, ..., i},都应有a'j ≤ aj。为了方便起见,我们将其表示为A'i ≤ Ai。如果一个配置A'是从A缩小得到的(即A' ≤ A),那么对于所有i ∈ {1, 2, 3, 4},都应有A'i ≤ Ai。逐步缩小意味着构建一个配置序列[C1, ..., Cm],使得对于所有i ∈ {1, ..., m-1都有},Ci+1 ≤ Ci。如图2和图3所示,我们逐渐缩小高分辨率分支的深度,并惊讶地发现这种缩小操作甚至有助于提高性能。

        为了使 Gradual Shrinking 的过程更清晰,本文详细列出了我们使用的四种配置:

3. Fusion Deconv Head: Remove the Redundancy(冗余消除)

        在上文中已经揭示了多分支架构的冗余性,但是多分支架构在处理尺度变化问题方面的强大能力依然不容忽视。为了实现将这一特性融入设计中,同时保留单分支架构的优点(例如高效率)的目标,作者提出融合反卷积层作为最终的预测层。如图4和图6所示,作者直接(即没有任何细化)利用先前阶段生成的低级高分辨率特征进行反卷积和最终预测层。一方面,LitePose使用单分支架构作为网络模型骨干,从而受益于低延迟特性。另一方面,直接使用低分辨率特征避免多分支HR fusion模块中的冗余细化。因此,LitePose以高效的方式继承了单分支设计和多分支设计的优势。在图6(a)和图5中展示了fusion deconv head的性能——在几乎不增加计算成本的情况下,实现了+7.6AP的性能提升

4. Mobile Backbone with Large Kernel Convs

        本文在LitePose中使用经过修改的MobileNetV2作为骨干,并通过移除最后的下采样阶段和引入大卷积核来优化网络结构,以更好地处理姿态估计任务中的尺度变化问题。实验结果表明,适当增大卷积核尺寸可以显著提高姿态估计性能,但并非越大越好,过大的卷积核会导致性能下降。因此,在架构中将卷积核大小固定为7x7。

        之前的一些论文已经研究了在图像分类任务的严格计算约束下的高效架构。如图4所示,本文在LitePose中使用了修改后的MobileNetV2架构作为骨干网络。并对原始的MobileNetV2骨干进行了微小修改——去除了最后的下采样阶段(因为过多的下采样层会导致基本信息的丢失,这不利于姿势估计任务的高分辨率输出)。

        并且为了进一步缓解尺度变化问题,在架构设计中引入了 large kernels。图7展示了核的大小分别为3、5、7(对于姿势估计任务还有9)的模型在图像分类和姿势估计任务中的性能比较。在计算成本同样增加(约+25%)的情况下,姿势估计任务上的性能提升(+13.0AP)远远显著于图像分类任务上的性能提升(+1.5%的准确率)。图5中的可视化结果也验证了这一说法。然而,过大的核将引入许多无用的参数和不可忽略的噪声,这不利于训练,并导致性能下降,如图7中k = 9的情况所示。此外还发现将核的大小纳入搜索空间会严重降低第4节中提到的NAS的性能,这可能是由于核的大小变化的影响很大,因此本文决定在架构中将核大小固定为7×7。

5. Single Branch, High Efficiency(单分支节点,更高的效率)

        LitePose作为单分支架构,不仅展现出卓越的性能提升(+11.6AP),而且在实际应用中具有硬件友好的特性。相比多分支设计,单分支架构能减少网络碎片化,提高硬件并行度。与HigherHRNet-W16[8]相比,LitePose-L不仅取得了更好的性能(+11.6AP),而且在Qualcomm Snapdragon 855硬件上,LitePose-L的延迟与HigherHRNet-W16相近,即使其MACs(乘积累加操作)更多。这些结果充分证明了LitePose的高效性,使其成为实际应用中更好的选择。

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

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

相关文章

大数据入门(一)

大数据主要要解决:海量数据的采集,存储,分析计算问题。 大数据的特点:大量(数据量大),高速(数据量的累积越来越快),多样(结构化数据和非结构化数…

Intellij IDEA构建Android开发环境

Intellij IDEA创建项目时没有Android的选项 进设置(Intellij IDEA - Settings - Plugins ) 再次创建项目可以看到Android的选项 解决Android导入项目时Gradle下载速度慢/超时/失败

HCIP —— 多生成树 (MSTP)

MSTP --- Multiple Spanning Tree Protocol --- 802.1s 在 MSTP 中 ,提出了实例的概念,相当于可用让多个VLAN同时属于一个实例,然后只需要一个实例生成一棵树。 --- 一种 VLAN 分流的思想 实例ID :instance ID 由 12位 二进制…

windows安装tomcat

安装之前需要安装jdk1.8可以参考windows安装jdk1.8-CSDN博客 一、下载tomcat Apache Tomcat - Apache Tomcat 8 Software Downloads 解压到D盘的D:\Program Files\tomcat目录下 二、配置环境变量 电脑右键属性-高级系统设置-高级-环境变量 1、在系统变量配置CATALINA_HOME环…

掌握ES6的箭头函数:深入了解其实用性与规则

引言 ES6(ECMAScript 2015)引入了箭头函数,这是一种新的函数声明方式,它改变了我们编写JavaScript代码的方式。箭头函数提供了更简洁、更直观的语法,并且具有一些独特的特性和行为。本文将深入探讨箭头函数的规则、用…

【分布式】——降级熔断限流

降级&熔断&限流 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记仓库👉https://github.com/A-BigTree/tree-learning-notes 个人主页👉https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点…

mysqldump 备份与恢复

1. mysqldump 简介 mysqldump 是 MySQL 提供的一个命令行工具,用于备份 MySQL 数据库的结构和数据。它能够生成一个包含 SQL 语句的文本文件,以便在需要时恢复数据库。 2. mysqldump 备份数据库 要备份一个或多个数据库,可以使用 mysqldum…

uniApp中使用小程序XR-Frame创建3D场景(2)加载模型

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用,只完成了简单的环境搭建,这篇文章讲解如何加载3D模型。 1 加入模型加载标签 在XR-Frame框架中,加载资源都是在wxml文件的标签中实现的。下面是wxml中完整的代码 index.wxml &l…

PC电脑技巧[笔记本通过网线访问设备CMW500]

笔记本局域网访问设备 现在我有一台CMW500,我要用笔记本去访问它,但是我发现没有路由器就是不能够访问,通过网线连接设备就是ping不通: 这里设置TCP/IPv4的IP地址如下,这时候就可以pin通了:

论文篇05-论文范文-论数据访问层设计技术及其应用(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

试题:论数据访问层设计技术及其应用 在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分…

nRF52832——定时器 TIME

nRF52832——定时器 TIME 原理分析定时器定时功能寄存器方式定时器库函数版本使用 定时器计数功能计数器寄存器方式计数器库函数方式 原理分析 和其他 MCU 处理器一样,在 nRF52832 中定时器的功能是十分强大的。其内部包含了 5 个定 时器 TIMER 模块:TIMER0、TIMER…

windows下的vscode + opencv4.8.0(C++) 配置

1.添加环境变量 D:\mingw64\bin 2.安装vscode 3.下载opencv 4.8.0 4.程序引用第三方库(opencv为例) 打开CMakeLists.txt,引入头文件,使用include_directories 加入头文件所在目录。静态链接库link_directories # 头文件 include_directories(D:/ope…

搭建 Apple Mac M1 stm32 开发环境

近期想学习 stm32 开发,看了些书和视频,买了开发板。开发板到了后就迫不及待的的进行尝试。由于我目前使用的电脑是 Apple M1 Pro,目前用的比较多的是 windows + keil。我先是在 mac 使用虚拟机,安装 win 环境来使用,但是我分别使用了 VMware 和 parallels desktop ,keil…

API成网络攻击常见载体,如何确保API安全?

根据Imperva发布的《2024年API安全状况报告》,API成为网络攻击者的常见载体,这是因为大部分互联网流量(71%)都是API调用,API是访问敏感数据的直接途径。根据安全公司Fastly的一项调查显示,95%的企业在过去1…

STM32之HAL开发——串口配置(源码)

串口收发原理框图(F1系列) 注意:数据寄存器有俩个一个是收一个是发,但是在标准库或者HAL库中没有特别区分开来是俩个寄存器! USART 初始化结构体详解 HAL 库函数对每个外设都建立了一个初始化结构体,比如 …

标题:深入理解 ES6 中的变量声明:let、var 和 const

在 ES6(ECMAScript 6)语法中,新增了let和const关键字来声明变量,这为 JavaScript 变量的作用域和声明方式带来了一些重要的改进。在这篇博客中,我们将深入探讨let、var和const之间的区别,并了解它们如何影响…

I/O(输入/输出流的概述)

文章目录 前言一、流的概述二、输入/输出流 1.字节/字符输入流2.字节/字符输出流总结 前言 在变量、数组和对象中储存的数据是暂时的,程序结束后它们就会丢失。如果想要永久地储存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在程序中…

C#_事件_多线程(基础)

文章目录 事件通过事件使用委托 多线程(基础)进程:线程: 多线程线程生命周期主线程Thread 类中的属性和方法创建线程管理线程销毁线程 昨天习题答案 事件 事件(Event)本质上来讲是一种特殊的多播委托,只能从声明它的类中进行调用,基本上说是…

MyBatis-Plus分页接口实现教程:Spring Boot中如何编写分页查询

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Unity VisionOS开发流程

Unity开发环境 Unity Pro, Unity Enterprise and Unity Industry 国际版 Mac Unity Editor(Apple silicon) visionOS Build Support (experimental) 实验版 Unity 2022.3.11f1 NOTE: 国际版与国服版Pro账通用,需要激活Pro的许可证。官方模板v0.6.2,非Pro版本会打…