论文链接:https://arxiv.org/pdf/1603.06937.pdf

概述

这篇文章发表于2016ECCV,作者提出了一种新的人体姿态估计结构Stacked Hourglass Networks。它将多个hourglass堆叠在一起,看上去像沙漏一样,所以称作堆叠的沙漏网络。

这种堆叠在一起的Hourglass模块结构是对称的,bottom-up过程将图片从高分辨率降到低分辨率,top-down过程将图片从低分辨率升到高分辨率,这种网络结构包含了许多pooling和upsampling的步骤,pooling可以将图片降到一个很低的分辨率,upsampling可以结合多个分辨率的特征。

网络结构

Hourglass Module整体结构

Hourglass模块设计的初衷就是为了捕捉每个尺度下的信息,因为捕捉像脸,手这些部分的时候需要局部的特征,而最后对人体姿态进行预测的时候又需要整体的信息。为了捕获图片在多个尺度下的特征,通常的做法是使用多个pipeline分别单独处理不同尺度下的信息,然后再网络的后面部分再组合这些特征,而作者使用的方法就是用带有skip layers的单个pipeline来保存每个尺度下的空间信息。

在Hourglass模块中,卷积和max pooling被用来将特征降到一个很低的分辨率,在每一个max pooling步骤中,网络产生分支并在原来提前池化的分辨率下使用更多的卷积,当到达最低的分辨率的时候,网络开始upsample并结合不同尺度下的特征。这里upsample(上采样)采用的方法是最邻近插值,之后再将两个特征集按元素位置相加。

当到达输出分辨率的时候,再接两个1×1的卷积层来进行最后的预测,网络的输出是一组heatmap,对于给定的heatmap,网络预测在每个像素处存在某一关节点的概率。

Residual Module

上面提到的是Hourglass模块的整体架构,接下来是对架构中的每一块进行细致的讲解,即Fig.3中的每一个方块都是由一个Residual Module(残差块)组成:

Residual Module

结合源码中的细节,事实上Residual Module的结构是这样的:

为什么要用到残差块呢?首先,从残差模块的架构图中,并没有使用超过3x3的卷积核,这也是论文作者所强调的。不适用超过3x3的卷积核主要是有两个原因。一是GPU的算力限制,因此作者使用1x1的卷积核来控制整体模型的参数数量。二是最近的研究发现,用连续的小尺寸的卷积核会比同等参数量的单一大尺寸的卷积核能获取更多的空间特征,比如可以用两个连续的3x3卷积核来取代一个5x5的卷积核。

残差模块Pytorch代码

其次,前面提到:Hourglass模块则是采用单一的带有skip layer的管道来为每个分辨率保存空间信息。Residual Module中虚线部分就是skip layer。我们可以结合残差模块的pytorch代码可以看出:如果输入和输出的channel数是一致的,则直接将输入的feature map与最后一层卷积输出的feature map直接进行相加。而如果channel数不一致,则先使用1x1的卷积核,在不改变输入feature map的size大小的同时,使channel数和输出的channel一致。

Hourglass Module

在详细介绍了Hourglass Module 的整体结构及其组成单元残差模块后,再回过头来仔细分析一下Hourglass模块的结构。事实上,Hourglass模块是一个递归结构。在论文中,作者是使用了四阶递归结构。首先从一阶递归的Hourglass模块来介绍,如下图所示。

一阶Hourglass模块结构

绿色框Max Pool是下采样,蓝色框是残差块,红色框是上采样。多阶的Hourglass Module就是将上图虚线框中的块递归地替换为一阶Hourglass Module,由于作者在实验中使用的是4阶的Hourglass Moudle,所以这里画出了4阶的Hourglass Module的示意图:

四阶Hourglass模块结构

整体结构

网络输入的图片分辨率为256×256,在hourglass模块中的最大分辨率为64×64,整个网络最开始要经过一个7×7的步长为2的卷积层,之后再经过一个残差块和Max pooling层使得分辨率从256降到64。由于原文中作者是堆叠了8个Hourglass Module,这里放出8阶的结构图:

图中的4阶Hourglass Module就是前面讲的4阶Hourglass Module,可以看到整个网络还是挺庞大的,图中的渐变红色块就是加入了中间监督的地方,即在此处使用loss函数。

Intermediate Supervision(中间监督)

为什么中间监督那么关键?这是因为当通过每个Hourglass模块时,网络都将有机会在局部和全局上下文中处理特征,然后生成预测。 随后的Hourglass模块允许这些高级特征再次被处理,以进一步评估和重新评估更高阶空间关系。 这与其他采用多个迭代阶段和中间监督下表现出色的姿态估计方法相似。

中间监督的位置放在哪里合适呢?首先我们知道,大多数高阶特征只会在比较低的分辨率时才会出现,除非是在上采样发生时的最后。如果把监督放在网络上采样后,那就没有办法在更大的全局上下文中相对重新评估这些特征。如果希望网络能够做出最好的预测,那这些特征就不能在一个局部上下文中进行预测。局部和全局线索被整合在每个Hourglass模块中,而让网络进行早期预测需要它对图像有一个高层次的理解的形象,即使这只是整体网络的一部分。自底向上、自顶向下处理的后续阶段允许更深层次的处理。

这种在尺度之间来回切换的方法尤其重要,因为保留特征的空间位置对完成最后的定位步骤至关重要。关节点的精确位置是其它决定不可缺少的线索。对于像姿势检测这样的结构化问题,输出是许多不同特性的相互作用,这些特性应该结合在一起,形成对场景的连贯理解。

最终,作者将中间监督设计在如下图所示位置:

通过一个额外的1x1卷积将中间预测映射到更多的通道,从而将它们重新集成到特征空间中。这些来自前一个Hourglass模块的特征输出被添加回来自当前Hourglass模块的中间特征。结果输出直接作为下一个Hourglass模块的输入,生成另一组预测。 在最终的网络设计中,使用了8个Hourglass模块。 值得注意的是,这8个Hourglass模块的权重不是共享的,损失适用于所有Hourglass模块的预测并使用相同的ground truth。

训练细节

作者在FLIC和MPII Human Pose数据集上进行了训练与评估。这篇论文只能用于单人姿态检测,但是在一张图片中经常有多个人,解决办法就是只对图片正中心的人物进行训练。将目标人物裁剪到正中心后再将输入图片resize到256×256。为了进行数据增量,作者将图片进行了旋转(+/-30度)、scaling(0.75-1.25)。

网络使用RMSprop进行优化,学习率为2.5e-4. 测试的时候使用原图及其翻转的版本进行预测,结果取平均值。网络对于关节点的预测是heatmap的最大激活值。损失函数使用均方误差(Mean Squared Error,MSE)来比较预测的heatmap与ground truth的heatmap(在节点中心周围使用2D高斯分布,标准差为1)

为了提高高精度阈值的性能,在转换回图像的原始坐标空间之前,预测在其下一个最高邻居的方向上偏移四分之一像素。

实验结果

评测指标采用的是标准的PCK指标(Percentage of Correct Keypoints),这个指标指出了检测结果关键点落在ground truth的标准化距离之内的比例。对于FLIC数据集来说,距离按躯干大小标准化,对于MPII数据集来说,距离按头的大小标准化。

参考博客:

https://zhuanlan.zhihu.com/p/45002720

https://zhuanlan.zhihu.com/p/412363029

Stacked Hourglass学习笔记相关推荐

  1. 学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇

    学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN 3.1 卷积神经网络的概念 3.1.1 什么是CNN? 3.1.2 为什么要用CNN? 3.1.3 人类的视觉 ...

  2. 【论文学习笔记-16】立体匹配:360SD-net

    [论文学习笔记-16]立体匹配:360SD-net Contribution RelatedWork Method Experiment 本文利用两张360°摄像机获得的球形图片进行立体匹配,与双目立 ...

  3. 深度学习(二十六)Network In Network学习笔记-ICLR 2014

    Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...

  4. 深度学习(三十二)半监督阶梯网络学习笔记

    半监督阶梯网络学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50877704 作者:hjimce 一.相关理论 这几年深度学习声名鹊起,一 ...

  5. 深度学习(二十六)Network In Network学习笔记

    Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...

  6. jquery UI 跟随学习笔记——拖拽(Draggable)

    jquery UI 跟随学习笔记--拖拽(Draggable) 引言 这周暂时没有任务下达,所以老大给我的任务就是熟悉jquery相关插件,我就先选择了jquery UI 插件,以及jquery库学习 ...

  7. 3D目标检测学习笔记

    博主初学3D目标检测,此前没有相关学习背景,小白一枚-现阶段的学习重点是点云相关的3D检测. 本文是阅读文章:3D Object Detection for Autonomous Driving: A ...

  8. B站台湾大学郭彦甫|MATLAB 学习笔记|06 高阶绘图 Advanced Plot

    MATLAB学习笔记(06 高阶绘图 Advanced Plot) 如果想获得更好浏览体验的朋友可以转到下面链接 06 1. 对数图 (Logarithm Plots) x = logspace(-1 ...

  9. HFS学习笔记——基本概念

    HFSS软件学习笔记 一.HFSS中的边界条件(Boundaries) 边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性,是求解麦克斯韦方程的基础. 只有在假定场矢量是单值.有界.并且沿空间 ...

  10. amazeui学习笔记--css(常用组件6)--图标Icon

    amazeui学习笔记--css(常用组件6)--图标Icon 一.总结 1.关注用法即可:在 HTML 上添加添加 am-icon-{图标名称} class. <span class=&quo ...

最新文章

  1. Python selenium巧用Javascript脚本注入解决按钮点选问题
  2. AVPlayer播放视频
  3. 校园网站服务器配置参数,校园网服务器性能 配置及分布
  4. C#写的windows应用程序打包
  5. React开发(107):回显数据直接getFieldDecorator定义
  6. OpenGL 人物走动源码
  7. idea修改回默认字体,设置 IntelliJ Idea 的中英文字体
  8. Array, Vec 与 Slice
  9. VirtualBox Failed to open/create the internal network 错误处理
  10. OSX下解决PIL的IOError: decoder jpeg not available 问题
  11. 南开大学计算机专业考研经验贴,南开大学计算机考研初试经验
  12. Fiddler大解析!抱歉,抓包抓得好真的可以为所欲为
  13. 诡异的 com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column “dat
  14. Mybatis Plus 3.1.1 lambda 表达式查询时异常 cannot find the corresponding database column name!
  15. 顶尖作者介绍 | 心理学领域研究“情绪”的大牛们有哪些?
  16. 混合光电探测器(HPD)行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  17. 网络学习-6.VLAN
  18. python如何裁剪图像
  19. Kubernetes学习笔记——k8s基本概念初探
  20. NICO dataset

热门文章

  1. java模拟手机号码发短信_java实现发送手机短信
  2. RedHat 自定义Jenkins Slaver Service,并开机自启动
  3. python标准差不用numpy_Python:Numpy标准差
  4. Unity ML-Agents 之 环境的搭建,以及的 demo 测试
  5. 三星Galaxy之父×××网秦,网秦安全能否脱胎换骨?
  6. 对权力说真话:CEO萨蒂亚•纳德拉与微软的三两事
  7. [面试题]100层楼丢玻璃球,一旦超过某层就会破,你只有两个球。
  8. shimo的学习之MySQL 学习
  9. 计算机音乐我还是曾经那个少年,我还是曾经的那个少年什么歌曲
  10. qcon_从QCon伦敦2010中学到的重点知识和教训