【人体姿态】Stacked Hourglass算法详解

本文深入解析Stacked Hourglass网络在人体姿态估计中的应用,该网络采用全卷积结构,通过Residual模块和Hourglass子网络提取多层次特征。在MPII竞赛中表现出色,网络设计简洁高效,训练时间较短。文章详细介绍了网络结构、模块化设计以及训练策略。
摘要由CSDN通过智能技术生成

Newell, Alejandro, Kaiyu Yang, and Jia Deng. “Stacked hourglass networks for human pose estimation.” arXiv preprint arXiv:1603.06937 (2016).

概述

本文使用全卷积网络解决人体姿态分析问题,截至2016年5月,在MPII姿态分析竞赛中暂列榜首,PCKh(误差小于一半头高的样本比例)达到89.4%。与排名第二的CPM(Convolutiona Pose Machine)1方法相比,思路更明晰,网络更简洁
作者给出了基于Torch的代码和模型。单显卡,测试时间约130ms,使用cudnn4的训练时间约3天,比CPM方法有显著优势。

本篇博客结合源码,从无到有介绍Stacked Hourglass的搭建思路,之后介绍代价函数与训练过程,最后总结值得学习的思想。

模块化

本篇论文的源码体现了模块->子网络->完整网络的设计思想。

Residual模块

先来复习一下卷积层和pooling层的属性:
核尺寸(kernel)决定了特征的尺度;步长(stride)决定了降采样的比例;算子的通道数(channel)决定了输出数据的层数/深度

本文使用的初级模块称为Residual Module,得名于其中的旁路相加结构(在这篇论文中2称为residual learning)
这里写图片描述
第一行为卷积路,由三个核尺度不同的卷积层(白色)串联而成,间插有Batch Normalization(浅蓝)和ReLU(浅紫);
第二行为跳级路,只包含一个核尺度为1的卷积层;如果跳级路的输入输出通道数相同,则这一路为单位映射。
所有卷积层的步长为1,pading为1,不改变数据尺寸,只对数据深度(channel)进行变更。
Residual Module由两个参数控制:输入深度M和输出深度N。可以对任意尺寸图像操作。

设计思想:channel大的卷积,kernel要小;kernel大的卷积,channel要小。
其实许多网络已经隐含了模块化的思想,例如AlexNet中重复出现的conv+relu+pool模式。

作用:Residual模块提取了较高层次的特征(卷积路),同时保留了原有层次的信息(跳级路)。不改变数据尺寸,只改变数据深度。可以把它看做一个保尺寸的高级“卷积”层。

Hourglass子网络

Hourglass是本文的核心部件,由Residual模块组成。根据阶数不同,有不同的复杂程度。

<
  • 59
    点赞
  • 223
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值