当前位置: 首页 > news >正文

(论文阅读31/100)Stacked hourglass networks for human pose estimation

31.文献阅读笔记

简介

题目

Stacked hourglass networks for human pose estimation

作者

Alejandro Newell, Kaiyu Yang, and Jia Deng, ECCV, 2016.

原文链接

https://arxiv.org/pdf/1603.06937.pdf

关键词

Human Pose Estimation

研究问题

CNN运用于Human Pose Estimation,

重复自底向上、自顶向下推理。

早期的工作:使用稳健的图像特征(局部解释)和复杂的结构化预测(推断全局一致的姿态)来解决这些困难。

现在:普遍采用卷积神经网络作为其主要构建模块,很大程度上取代了手工制作的特征和图形模型。

任务:从RGB图像中对单个人的姿态进行关键点定位。

研究方法

“stacked hourglass” network:

该网络在图像的所有尺度上捕获和整合信息,基于可视化的池化和后续上采样的步骤来得到网络的最终输出。

不同于以前的设计,主要是在其更对称的拓扑结构。

连续地将多个沙漏模块端到端地放在一起,在单个沙漏上进行扩展。这允许跨尺度自下而上、自上而下的重复推断。结合中间监督的使用,重复的双向推理对网络的最终性能至关重要。

有些方法通过使用单独的管道来解决这个问题,即在多个分辨率下独立处理图像,然后在网络中合并特征。

作者选择使用skip layers的单一管道,以保留每个分辨率下的空间信息。

网络的输出是一组热图,对于给定的热图,网络会预测每个像素上出现关节的概率。

以 256x256 的全输入分辨率运行需要大量 GPU 内存,因此沙漏的最高分辨率(也就是最终输出分辨率)为 64x64。这并不影响网络生成精确联合预测的能力。整个网络从一个步长为 2 的 7x7 卷积层开始,然后是一个残差模块和一轮最大池化,将分辨率从 256 降到 64。

在图 3 所示的沙漏之前有两个残差模块。在整个沙漏过程中,所有残差模块都会输出 256 个特征。

使用 1x1 卷积来减少步骤是有价值的,使用连续的较小滤波器来捕捉更大的空间背景也是有好处的。例如,可以用两个独立的 3x3 滤波器代替 5x5 滤波器。

将一个沙漏的输出作为下一个沙漏的输入。

通过额外的 1x1 卷积将中间预测映射到更多通道,从而将中间预测重新整合到特征空间中。这些特征与前一个沙漏阶段输出的特征一起被添加回沙漏的中间特征中(如图 4 所示)。由此产生的输出可直接作为下一个沙漏模块的输入,从而生成另一组预测结果。在最终的网络设计中,使用了八个沙漏。值得注意的是,沙漏模块之间并不共享权重,而且所有沙漏的预测结果都使用相同的ground truth,因此会产生损失。

网络在确定哪个人值得注释时,无法获得足够的信息。为此,我们对网络进行了训练,使其只对位于正中心的人进行注释。

研究结论

在MPII上,所有关节的平均精度都有超过2 %的提高,对于更困难的关节,如膝盖和脚踝,平均精度提高了4 - 5 %

创新不足

当图像中有多个人物时,一致性问题就变得尤为重要。网络必须决定对谁进行注释,唯一信号就是目标人物的居中和缩放,相信输入会足够清晰,便于解析。遗憾的是,当人物距离很近甚至重叠时,这偶尔会导致模糊不清的情况,

额外知识

图像处理:

自下而上:高分辨率到低分辨率

自上而下:低分辨率到高分辨率

上:低分辨率 提供更多语义信息,具有更大的视野

下:高分辨率 有更多像素,提供更多细节信息

全卷积网络和整体嵌套架构,自下而上处理能力都很强(即提取语义信息),但是自上而下处理能力都很弱,只能对多尺度预测进行合并。

相关文章:

  • VBA技术资料MF83:将Word文档批量另存为PDF文件
  • SQL注入学习--GTFHub(布尔盲注+时间盲注+MySQL结构)
  • 微服务实战系列之Token
  • cocos3.4.2 2d射线检测 和 animation动画
  • Unity 预制体放在场景中可见,通过代码复制出来不可见的处理
  • CSS相关
  • 2D 3D 工业组态技术 meta2d JavaScript
  • Page分页records有数据,但是total=0,解决办法
  • NET8 ORM 使用AOT SqlSugar
  • 设计模式解码:软件工程架构的航标
  • 线性表的概念
  • 基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码
  • 如何把小米路由器刷入OpenWRT系统并通过内网穿透工具实现公网远程访问
  • 移动硬盘打不开?正确操作方法分享!
  • 有什么好用的后勤管理软件?学校后勤服务要怎么提升满意度?
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • dva中组件的懒加载
  • Facebook AccountKit 接入的坑点
  • JavaWeb(学习笔记二)
  • jQuery(一)
  • Koa2 之文件上传下载
  • PV统计优化设计
  • Python语法速览与机器学习开发环境搭建
  • React-生命周期杂记
  • SQLServer插入数据
  • SQLServer之创建显式事务
  • Vue 动态创建 component
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 基于Android乐音识别(2)
  • 记一次和乔布斯合作最难忘的经历
  • 将 Measurements 和 Units 应用到物理学
  • 聊聊hikari连接池的leakDetectionThreshold
  • 每天10道Java面试题,跟我走,offer有!
  • 前端性能优化——回流与重绘
  • 十年未变!安全,谁之责?(下)
  • 通过git安装npm私有模块
  • #android不同版本废弃api,新api。
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (一)RocketMQ初步认识
  • (转) Android中ViewStub组件使用
  • (转)项目管理杂谈-我所期望的新人
  • ..回顾17,展望18
  • .bashrc在哪里,alias妙用
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)