SAGANPose | 隐式结构化对抗人体姿态估计网络
Adversarial PoseNet: A Structure-aware Convolutional Network for Human Pose Estimation
Official Code: pytorch
1.背景分析
关键点遮挡和人体重叠会导致人体姿态估计的难度增大,在这种情况下,可能会产生生物学上难以置信的姿势预测。相反,人类视觉能够通过利用联合互连的人体关节间的几何约束来预测姿势。 为了通过结合关于人体结构的先验来解决该问题,本文尝试使用生成对抗网络的形式,以在训练时隐式考虑这些先验信息,因为显式学习此类约束通常具有挑战性。基于此,本文设计了一个多任务生成器用以生成精准的人体关键点,设计了姿态辨别器P使得生成器获取的人体关键点视觉友好,设计了置信度鉴别器C使得生成器获取的人体关键点置信度高。
2.隐式结构化生成对抗网络
如下图所示,我们的对抗姿态估计网络分为三部分,1用于生成姿态的生成器网络,2用于鉴别姿态的鉴别器网络,3用于鉴别置信度的鉴别器网络。其中生成器输出32个heatmap图,其中16个是关键点heatmap,另外16个是与其对应的关键点遮挡heatmap。下图中的(1)分支,展示了没有对抗操作情况下,常规人体姿态估计网络的损失计算和参数更新方法。下图中的(2)分支,展示了利用置信度鉴别器C来辅助训练生成器G,将会产生更加可信的置信值结果。下图中的(3)分支,展示了利用姿态鉴别器P和置信值鉴别器C来辅助训练生成器G,将会将先验的人体连接结构隐式的利用到网络中,并提高预测效果。
3.多任务生成器
了解是否明显遮挡了身体部位为推断人体姿势的几何信息提供了重要信息。在此,为了有效地结合姿势估计和遮挡预测,我们建议使用多任务生成网络来解决该问题。该多任务网络既用来对关键点位置进行估计,又用来对关键点是否遮挡进行判断。
多任务生成器网络的loss如下公式所示,主要对各个阶段的关键点热图(y)和遮挡判断(z)进行回归。
4.置信度鉴别器C
首先明确,置信度鉴别器C的目的是为了使得最终生成器G获得的人体姿态的置信度能够更高。
文章利用一个卷积模块作为姿态鉴别器,具体结构如下图所示。
若生成器G生成了低置信度热度图,则置信度鉴别器C将结果归类为fake。生成器会基于这个结果误差做自我优化,产生更高的置信度,直到能够使得鉴别器C认为生成器的结果为True。因此即使存在遮挡,此过程也将帮助生成器G生成高置信度热度图。
鉴别器C的损失函数如下:
由于置信度鉴别器需要进行计算两个loss,因此需要有两个标签。
当置信度鉴别器的输入为GT热度图时,对应的标签为Creal,作者将标签编码为一个16维的向量。其中有对应关键点值的特征图所对应的向量为1,没有关键点的所对应的向量为0。
当置信度鉴别器的输入为生成器生成的虚假热度图时,对应的标签未Cfake,同理Cfake也是一个16维的向量。Cfake对应的取值如下公式所示,当生成的关键点热度图和GT热度图比较接近(距离小于阈值)时,对应的向量为1,反之对应的向量为0。
5.姿态鉴别器P
首先明确,姿态鉴别器P的目的是为了使得最终生成器G获得的人体姿态能够更加准确,且符合人体关节所固有的约束(不会生成一个不像人的关节图)。
文章利用一个卷积模块作为姿态鉴别器,具体结构如下图所示。
姿态鉴别器P的输入有三个,分别为:生成器产生的人体姿态热度图,遮挡热度图,以及对应的原始RGB图像。之所以要把RGB图像也作为输入,是因为有的情况下即使人体姿态和遮挡都符合正常的人体结构,但并不符合原始的RGB图,就是说生成了其他姿态的人体关键点,所以加入这个输入就是为了提升最终网络的性能。
鉴别器P的损失函数如下:
由于姿态鉴别器需要进行计算两个loss,因此需要有两个标签。在传统的使用GAN进行图像转换的工作中,鉴别网络,将真实样本标记为1,伪样本标记为0。对于人体姿态估计问题,我们发现仅通过将0或1作为标签,很难收敛网络。
当姿态鉴别器的输入为GT热度图和GT遮挡热图时,对应的标签为Preal,文章将标签编码为一个16维的向量。其中有对应关键点值的特征图所对应的向量为1,没有关键点的所对应的向量为0。
当姿态鉴别器的输入为生成器生成的虚假热度图和虚假遮挡热度图时,对应的标签未Pfake,同理Pfake也是一个16维的向量。Pfake对应的取值如下公式所示,其中di是第i个身体部位的预测位置与GT真实位置之间的归一化距离。对于假样本,如果预测的身体部位远离GT真实位置,则此图像中的姿势显然对身体构造不可信。因此若距离比较接近则对应的向量为1,反之对应的向量为0。
6.SAGANPose网络训练流程
最终整体的优化函数如下所示,通过最大化P,C两个鉴别器,以及最小化生成器达到对抗训练的目的。需要注意的是,在实验中,为了使最终目标函数的不同分量具有相同的比例,将超参数α和β分别设置为1/220和1/180。
如下图所示,算法的训练每一个迭代过程如下:
1.将原始图片x,输入到生成器,计算双向生成器的前向结果。G(x)=(y,z),通过最小化公式1优化生成器参数。
2.将原始图片x,双向生成器生成的两个虚假热度图G(x)=(y,z),输入到姿态鉴别器,得到虚假姿态鉴别结果Pfake^,通过最大化公式2中的第二部分优化姿态鉴别器。
3.将原始图片x,两个GT热度图(y,z),输入到姿态鉴别器,得到GT姿态鉴别结果Preal^,通过最大化公式2中的第一部分优化姿态鉴别器。
4.将原始图片x,双向生成器生成的两个虚假热度图G(x)=(y,z),输入到置信度鉴别器,得到虚假置信度鉴别结果Cfake^,通过最大化公式3中的第二部分优化置信度鉴别器。
5.将原始图片x,两个GT热度图(y,z),输入到置信度鉴别器,得到GT置信度鉴别结果Creal^,通过最大化公式3中的第一部分优化置信度鉴别器。
6.利用公式4更新所有的结果。
7.结果展示
作者在LSP和MPII两个人体关键点数据集上对上述隐式结构化对抗网络进行了结果分析,从下表可以看出,利用该方法能够有效提升模型效果,且不会增加太多推理时间。
从下表的结果可以进一步看出本文提出的隐式结构化对抗网络,通过生成对抗的方式隐含了人体四肢的结构化信息,能够有效处理人体关键点遮挡情况下的姿态估计。
SAGANPose | 隐式结构化对抗人体姿态估计网络相关推荐
- PoseFormer:首个纯基于Transformer的 3D 人体姿态估计网络,性能达到 SOTA
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文分享一篇 52CV 粉丝的论文『3D Human Pose Estimation with Spa ...
- CPU上跑到 33 FPS 的简单轻量级人体姿态估计网络
点击我爱计算机视觉标星,更快获取CVML新技术 在姿态估计算法中,微软开发的 SimpleBaseline 是精度高而又轻量级的典范,昨天一篇论文Simple and Lightweight Huma ...
- OpenPose 升级,CMU提出首个单网络全人体姿态估计网络,速度大幅提高
点击我爱计算机视觉标星,更快获取CVML新技术 昨天,曾经开源OpenPose的卡内基梅隆大学(CMU)公布了ICCV 2019 论文 Single-Network Whole-Body Pose E ...
- 刷新记录,算法开源!字节跳动获人体姿态估计竞赛双冠 | CVPR 2019
整理 | Jane 出品 | AI科技大本营(id:rgznai100) [导读]6 月 16--20 日,计算机视觉与模式识别领域顶会 CVPR 2019 在美国长滩举行.每年的 CVPR 盛会除了 ...
- ICCV 2019 | 基于无标签单目视频序列的单帧三维人体姿态估计算法
作者丨王璇 学校丨西安交通大学 研究方向丨人体姿态估计 我们都知道,要训练一个准确的三维人体姿态估计深度神经网络,需要大量有三维标签的数据,越多越好.而在现实生活中,我们很难得到很多有标签数据,而无标 ...
- 特效大片背后的多视角 3D 人体姿态估计技术
目录 0 背景 1 主要算法 1.1 基于匹配和三角化重建的算法 1.2 基于空间体素化的算法 1.3 基于图卷积网络的算法 1.4 基于 Transformer 的算法 2 常用数据集 2.1 Ca ...
- 3D人体姿态估计(介绍及论文归纳)
推荐镜子大佬的知乎 2D 多人姿态估计论文汇总.分类与简介 2D多人姿态估计指南:热图回归与坐标回归流程指南 openmmlab微信公众号里的3DHPE综述 opemmlab框架下的MMPose库,有 ...
- 空间金字塔池化_CVPR 2018 | 旷视科技人体姿态估计冠军论文——级联金字塔网络CPN...
全球计算机视觉顶会 CVPR 2018 (Conference on Computer Vision and Pattern Recognition,即IEEE国际计算机视觉与模式识别会议)将于6月1 ...
- 【C 语言】结构体 ( 结构体类型变量初始化 | 定义变量时进行初始化 | 定义隐式结构体时声明变量并初始化 | 定义普通结构体时声明变量并初始化 )
文章目录 一.结构体类型变量初始化 1.定义变量时进行初始化 2.定义普通结构体时声明变量并初始化 3.定义隐式结构体时声明变量并初始化 二.完整代码示例 一.结构体类型变量初始化 1.定义变量时进行 ...
最新文章
- 小程序button引导用户授权
- leetcode--207. 课程表
- PWA(Progressive Web App)入门系列:Cache Storage Cache
- 二十八、PHP框架Laravel学习笔记——模型的关联查询
- Chapter4-2_Speech_Synthesis(More than Tacotron)
- php通配符是什么,通配符*和?有什么区别
- Python 如何拆分数据集
- ASP.NET中的TextBox下划线
- 设计模式系列 — 模板方法模式
- Jsoup爬虫以及防反爬
- 小白量化彩票实战(1)彩票分析及爬虫双色球彩票开奖数据
- python for line in file 只能读取一遍
- 设备日常检查(巡检)
- 事务四大特征:(原子性、一致性、隔离性、持久性)
- 二维码怎么做之批量制作二维码
- 条码打印软件如何设置双排标签纸尺寸 1
- 为什么我不看好人人网在美国上市
- FireFox 必备插件(四)
- Navicat连接腾讯服务器时常见错误
- python 储蓄计划_储蓄--投资恒式为什么不意味着计划的储蓄恒等于计划的投资?...