论文阅读-《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的高效性,使其成为实际应用中更好的选择。

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

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

相关文章

(三)Ribbon负载均衡

1.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 1.2.源码跟踪 为什么我们只输入了service名称就可以访问了呢?之前还要获取ip和端口。 显然有人帮我们根据service名称,获取到了服务实例的ip和…

GitLab更新失败(Ubuntu)

在Ubuntu下使用apt更新gitlab报错如下: An error occurred during the signature verification.The repository is not updated and the previous index files will be used.GPG error: ... Failed to fetch https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu/d…

Leetcode 3.26

Leetcode Hot 100 一级目录1.每日温度 堆1.数组中的第K个最大元素知识点:排序复杂度知识点:堆的实现 2.前 K 个高频元素知识点:优先队列 一级目录 1.每日温度 每日温度 思路是维护一个递减栈,存储的是当前元素的位置。 遍历整个…

web学习笔记(四十五)Node.js

目录 1. Node.js 1.1 什么是Node.js 1.2 为什么要学node.js 1.3 node.js的使用场景 1.4 Node.js 环境的安装 1.5 如何查看自己安装的node.js的版本 1.6 常用终端命令 2. fs 文件系统模块 2.1引入fs核心模块 2.2 读取指定文件的内容 2.3 向文件写入指定内容 2.4 创…

app自动化-Appium学习笔记

使用Appium,优点: 1、支持语言比较多,例如:Java、Python、Javascript、PHP、C#等语言 2、支持跨应用(windows、mac、linux) 3、适用平台Android、iOS 4、支持Native App(原生app)、Web App、Hybird App…

canvas画图写文字,有0.5像素左右的位置偏差,无解决办法,希望有知道问题的大神告知一下

提示&#xff1a;canvas画图写文字 文章目录 前言一、写文字总结 前言 一、写文字 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

Fragment 与 ViewPager的联合应用(2)

5.创建底部布局bottom_layout <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width"match_parent"android:layout_height"55dp"android:background&qu…

【算法】求最大公约数和最小公倍数

题目 输入两个数&#xff08;空格隔开&#xff09;分2行输出他们的最大公因数和最小公倍数 原理 辗转相除法计算最大公约数 将两个数中较大的数除以较小的数&#xff0c;并将较小的数作为除数&#xff0c;较大的数作为被除数。计算余数。若余数为零&#xff0c;则较小的数即…

深入探索MySQL高阶查询语句的艺术与实践

目录 引言 一、条件查询 &#xff08;一&#xff09;比较运算符查询 1.使用匹配符号查询 2.范围查找 &#xff08;二&#xff09;逻辑运算符 二、关键字排序 三、分组与聚合函数 四、限制查询 五、别名 &#xff08;一&#xff09;设置列别名 &#xff08;二&#x…

Dockerfile和Docker-compose

一、概述 Dockerfile和Docker Compose是用于构建和管理 Docker 容器的两个工具&#xff0c;但它们的作用和使用方式不同。 Dockerfile Dockerfile 是一个文本文件&#xff0c;用于定义 Docker 镜像的构建规则。它包含一系列指令&#xff0c;如 FROM&#xff08;指定基础镜像…

python(django)之单一接口管理功能后台开发

1、创建数据模型 在apitest/models.py下加入以下代码 class Apis(models.Model):Product models.ForeignKey(product.Product, on_deletemodels.CASCADE, nullTrue)# 关联产品IDapiname models.CharField(接口名称, max_length100)apiurl models.CharField(接口地址, max_…

uniapp微信小程序_computed_计算BMI

一、computed的用法还有它是什么&#xff1f; 首先它叫计算属性&#xff0c;顾名思义他是用来计算属性&#xff0c;计算你在data模板上定义的属性&#xff08;其实在插值表达式也能直接计算但是首先太长了在{{}}里面写那么多不好看&#xff0c;还有其他特点我在下面一起说&…

jupyter notebook导出含中文的pdf(LaTex安装和Pandoc、MiKTex安装)

用jupyter notebook导出pdf时&#xff0c;因为报错信息&#xff0c;需要用到Tex nbconvert failed: xelatex not found on PATH, if you have not installed xelatex you may need to do so. Find further instructions at https://nbconvert.readthedocs.io/en/latest/install…

nacos集群搭建实战

集群结构图 初始化数据库 Nacos默认数据存储在内嵌数据库Derby中&#xff0c;不属于生产可用的数据库。官方推荐的使用mysql数据库&#xff0c;推荐使用数据库集群或者高可用数据库。 首先新建一个数据库&#xff0c;命名为nacos&#xff0c;而后导入下面的SQL&#xff08;直…

苹果Find My产品需求增长迅速,伦茨科技ST17H6x芯片供货充足

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、Ai…

Qt 图形视图 /图形视图框架坐标系统的设计理念和使用方法

文章目录 概述Qt 坐标系统图形视图的渲染过程Item图形项坐标系Scene场景坐标系View视图坐标系map坐标映射场景坐标转项坐标视图坐标转图形项坐标图形项之间的坐标转换 其他 概述 The Graphics View Coordinate System 图形视图坐标系统是Qt图形视图框架的重要组成部分&#xf…

vue指令相关

vue中有很多的指令像v-on、v-model、v-bind等是我们开发中常用的 常用指令 v-bind 单向绑定解析表达式 v-model 双向数据绑定 v-for 遍历数组/对象/字符串 v-on 绑定事件监听,可简写为@ v-show 条件渲染(动态控制节点是否存展示) v-if 条件渲染(动态控制节点是否存存在) v…

R 生存分析3:Cox等比例风险回归及等比例风险检验

虽然Kaplan-Meier分析方法目前应用很广&#xff0c;但是该方法存在一下局限: 对于一些连续型变量&#xff0c;必须分类下可以进行生存率对比 是一种单变量分析&#xff0c;无法同时对多组变量进行分析 是一种非参数分析方法&#xff0c;必须有患者个体数据才能进行分析 英国…

鸿蒙开发-UI-交互事件-焦点事件

鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 鸿蒙开发-UI-图形-组件内转场动画 鸿蒙开发-UI-图形-弹簧曲线动画 鸿蒙开发-UI-交互事件-通用事件 鸿蒙开发-UI-交互事件-键鼠事件 文章目录 前言 一、基本概念 二、走焦规则 三、…

android_uiautomator元素定位

通过UIAUTOMATOR的text属性定位到元素&#xff0c;并打印文本from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # For W3C actions from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriv…