论文:《Deep High-Resolution Representation Learning for Human Pose Estimation
》
论文链接:https://arxiv.org/abs/1902.09212
代码链接:https://github.com/leoxiaobin/deep-high-resolution-net.pytorch
摘要
在本文中,我们对人体姿势估计问题感兴趣,重点是学习可靠的高分辨率表示。 大多数现有方法从由高到低分辨率网络产生的低分辨率表示中恢复高分辨率表示。 相反,我们提出的网络在整个过程中都保持高分辨率表示。
我们从高分辨率子网络开始作为第一个stage,逐步将高到低分辨率子网逐个添加以形成更多的stage,然后将多分辨率子网并行连接。 我们进行了反复的多尺度融合,以使每一个从高到低的分辨率表示一次又一次地从其他并行表示中接收信息,从而获得丰富的高分辨率表示。 结果,预测的关键点热图可能更准确,空间上更精确。 我们通过优于两个基准数据集(COCO关键点检测数据集和MPII Human Pose数据集)的优越姿态估计结果,通过实验证明了我们网络的有效性。 此外,我们在PoseTrack数据集上显示了我们的网络在姿势跟踪中的优越性。 该代码和模型已在https://github.com/leoxiaobin/
deep-high-resolution-net.pytorch.公开发布。
引言
二维人体姿势估计一直是计算机视觉中的一个基本但具有挑战性的问题。 目标是定位人体解剖学关键点(例如肘部,腕部等)或部位。 它具有许多应用,包括人类动作识别,人机交互,动画等。本文关注单人姿势估计,这是其他相关问题的基础,例如多人姿势估计[6,27,33 ,39、47、57、41、46、17、71],视频姿态估计和跟踪[49、72]等。
最近的发展表明,深度卷积神经网络已经实现了最先进的性能。 现有的大多数方法都通过网络(通常由串联的高到低分辨率子网组成)传递输入,然后提高分辨率。 例如,Hourglass[40]通过从低到高的对称过程恢复了高分辨率。 SimpleBaseline [72]采用一些转置的卷积层来生成高分辨率表示。 另外,空洞卷积还用于放大高分辨率网络的后面层(例如VGGNet或ResNet)[27,77]。
我们提出了一种新颖的体系结构,即高分辨率网络(HRNet),它能够在整个过程中保持高分辨率表示。 我们从高分辨率子网络开始为第一阶段,逐步将高到低分辨率子网逐个添加以形成更多stage,并并行连接多分辨率子网。 我们通过在整个过程中一遍又一遍地在并行多分辨率子网中交换信息来进行重复的多尺度融合。 我们估算网络输出的高分辨率表示的关键点。 生成的网络如图1所示。
图1.说明了提出的HRNet的体系结构。 它由并行的高到低分辨率子网组成,并在多分辨率子网之间进行重复的信息交换(多尺度融合)。 水平和垂直方向分别对应于网络的深度和特征图的比例。
与现有的姿势估计网络(40、27、77、72)相比,我们的网络有两个好处。 (i)我们的方法以并行方式而不是大多数现有解决方案中的串行方式连接高分辨率分辨率子网。 因此,我们的方法能够保持高分辨率,而不是通过从低到高的过程来恢复分辨率,因此,预测的heatmap可能在空间上更加精确。 (ii)大多数现有的融合方案汇总了低级和高级表示形式。 取而代之的是,我们执行重复的多尺度融合,以借助相同深度和相似水平的低分辨率表示来增强高分辨率表示,反之亦然,从而导致高分辨率表示也丰富了姿势估计。 因此,我们预测的热图可能更准确。
我们凭实验证明了优于两个基准数据集的出色的关键点检测性能:COCO关键点检测数据集[36]和MPII Human Pose数据集[2]。 此外,我们在PoseTrack数据集[1]上展示了我们网络在视频姿态跟踪中的优越性。
相关工作
单人姿势估计的大多数传统解决方案都采用概率图形模型或图形结构模型[79,50],最近通过利用深度学习对一元和成对能量进行更好的建模而得到了改进[9,65,45] 或模仿迭代推理过程[13]。 如今,深度卷积神经网络提供了主导解决方案[20、35、62、42、43、48、58、16]。 有两种主流方法:直接回归关键点的位置[66,7];估计关键点热图[13,14,78],然后选择热量值最高的位置作为关键点。
大多数用于关键点热图估计的卷积神经网络由类似于分类网络的茎子网络组成,该子网络降低了分辨率,主体产生的分辨率与输入的分辨率相同,然后由回归值估计关键点位置所在的热图。 估计,然后转换为完整分辨率。 主体主要采用从高到低和从低到高的框架,并可能通过多尺度融合和中间(深度)监控来增强。
高到低和低到高: 从高到低的过程旨在生成低分辨率的高级表示,而从低到高的过程旨在生成高分辨率的表示[4,11,23,72,40,62]。 可能会重复执行这两个过程几次,以提高性能[77、40、14]。
代表性的网络设计模式包括:(i)从高到低和从低到高的对称过程。 Hourglass及其后续[40、14、77、31]设计了从低到高的过程,作为从高到低的过程的镜像。 (ii)重高到低,轻低到高。 从高到低的过程基于ImageNet分类网络,例如[11,72]中采用的ResNet,从低到高的过程只是一些双线性上采样[11]或转置卷积[72] 层。 (iii)与空洞卷积相结合。 在[27,51,35]中,在ResNet或VGGNet的最后两个阶段采用了扩展卷积以消除空间分辨率损失,随后进行了从轻到高的轻度过程以进一步提高分辨率,从而避免了昂贵的计算成本 只使用膨胀卷积[11,27,51]。 图2描绘了四个代表性的姿态估计网络。
图2.依赖于从高到低和从低到高框架的代表性姿态估计网络的图示。 (a)Hourglass[40]。 (b)级联金字塔网络[11]。 (c)SimpleBaseline [72]:从低到高处理的转置卷积。 (d)与空洞卷积的组合[27]。 右下图例:reg. =规则卷积,dilated=扩张卷积,trans. =转置卷积,stride=大跨步卷积,concat. =串联。 在(a)中,从高到低和从低到高的过程是对称的。 在(b),(c)和(d)中,从高到低的过程(属于分类网络(ResNet或VGGNet)的一部分)很重,而从低到高的过程则很轻。 在(a)和(b)中,高到低和低到高过程的相同分辨率层之间的skip-connect(虚线)主要旨在融合低级和高级功能。 在(b)中,正确的部分finenet结合了通过卷积处理的低级和高级功能。
多尺度融合:最直接的方法是将多分辨率图像分别送入多个网络并聚合输出响应图[64]。 Hourglass[40]及其扩展[77、31]通过skip-connection逐步将高到低过程中的低级特征组合为低到高过程中相同分辨率的高级特征。 在级联金字塔网络[11]中,全局网将高到低过程中的低到高级特征逐步组合到低到高过程中,然后精炼网将处理后的低到高级特征结合起来 通过卷积。 我们的方法重复了多尺度融合,这部分受深度融合及其扩展的启发[67,73,59,80,82]。
中间监督:早期开发的用于图像分类的中间监督或深度监督[34,61]也被用于帮助深度网络训练和提高heamap估计质量,例如[69,40,64,3,11]。 hourglass方法[40]和卷积姿势机方法[69]将中间热图作为剩余子网的输入或输入的一部分进行处理。
我们的方法:我们的网络并行连接从高到低的子网。 它在整个过程中保持高分辨率表示,以进行空间精确的heatmap估计。 它通过重复融合从高到低子网产生的表示来生成可靠的高分辨率表示。 我们的方法与大多数现有作品不同,后者需要一个单独的从低到高的上采样过程,并汇总低级和高级表示形式。 我们的方法,无需使用中间的热图监督,在关键点检测精度方面是卓越的,并且在计算复杂性和参数方面是高效的。
有用于分类和分割的相关多尺度网络[5、8、74、81、30、76、55、56、24、83、55、52、18]。 我们的工作部分地受到其中一些的启发[56,24,83,55],并且存在明显的差异,使它们不适用于我们的问题。 卷积神经结构[56]和互连的CNN [83]未能产生高质量的分割结果,原因是每个子网络上缺乏适当的设计(深度,批归一化)和多尺度融合。 网格网络[18]是许多权重均分的U-Net的组合,由跨越多分辨率表示的两个单独的融合过程组成:在第一阶段,信息仅从高分辨率发送到低分辨率; 在第二阶段,信息仅从低分辨率发送到高分辨率,因此竞争力降低。 多尺度密集网[24]并不针对且无法生成可靠的高分辨率表示。
方法
人体姿势估计(也称为关键点检测)旨在从大小为W×H×3的图像 I 中检测出K个关键点或部位(例如,肘部,腕部等)的位置。最新技术将这一问题转化为 估计大小为W‘ ×H‘ 的K个heatmap; {H1, H2, ..., Hk},其中每个heatmap Hk 表示第k个关键点的位置置信度。
我们遵循广泛采用的pipeline[40、72、11]来使用卷积网络预测人类关键点,该卷积网络由两个降低分辨率的stride卷积主干组成,主体输出的特征图与 输入特征图分辨率相同,以及一个回归器,用于估算heatmap,在热图中选择关键点位置并将其转换为完整分辨率。 我们将重点放在主体的设计上,并介绍如图1所示的高分辨率网络(HRNet)。
连续多分辨率子网络:现有的姿态估计网络是通过将高分到低分辨率子网串联起来而建立的,每个子网组成一个stage,由一系列卷积组成,并且相邻子网之间存在一个下采样层,以将分辨率减半。
令为第s stage的子网,r 为分辨率索引(其分辨率为第一个子网的分辨率的
)。 从高到低的S 个stage(例如4)网络可以表示为:
并行多分辨率子网络:我们从高分辨率子网开始作为第一个stage,将高到低分辨率子网逐个添加,形成新的stage,然后将多分辨率子网并行连接。 结果,下一个stage并行子网的分辨率包括前一个stage的分辨率和一个较低的分辨率。
包含4个并行子网的示例网络结构如下所示:
重复的多尺度融合:我们引入了跨并行子网的交换单元,以便每个子网反复从其他并行子网接收信息。 这是一个信息交换方案的示例。 我们将第三stage划分为几个(例如3个)交换block,每个block由3个并行卷积单元组成,跨并行单元的交换单元如下所示:
其中代表在第s阶段第b个block的第r个分辨率中的卷积单元,而
是对应的交换单位。
我们在图3中说明了交换单元,并在下面介绍了该公式。 为了方便讨论,我们将下标s和上标b删除。 输入是s个响应图:{X1, X2, ..., Xs}。 输出是s个响应图:{Y1, Y2, ..., Ys},其分辨率和宽度与输入相同。 每个输出是输入映射的集合,。 跨stage的交换单元有一个额外的输出映射
。
函数包括从分辨率 i 到分辨率 k 的 Xi 上采样或下采样。 我们采用strided 3×3卷积进行下采样。 例如,对于stride为2的下采样,一个步幅为2的3×3卷积进行2倍下采样,两个连续的步幅为2的3×3卷积进行4倍下采样。 对于上采样,我们采用简单最近邻采样后面接一个1x1的卷积来对齐通道数。 如果i = k,则a(., .)只是一个identify连接:a(Xi; k)= Xi。
Heatmap 估计:我们仅根据最后一个交换单元输出的高分辨率表示来回归heatmap,凭经验可以很好地进行工作。 损失函数采用均方误差函数用于比较预测的heatmap和ground truth heatmap。 通过在每个关键点的grouptruth位置上以1个像素为中心的标准差的2D高斯来生成ground truth heatmpas。
网络实例化:我们通过遵循ResNet的设计规则实例化网络以进行关键点heatmap估计,以将深度分布到每个stage,并将通道数分布到每个分辨率。
主体(即我们的HRNet)包含四个带有四个并行子网络的stage,其分辨率逐渐降低一半,因此宽度(通道数)增加两倍。 第一个stage包含4个残差单元,其中每个单元都与ResNet-50相同,由宽度为64的bottleneck形成,然后是一个3×3卷积,将特征图的宽度减小为C。第二, 第三,第四个stage分别包含1、4、3个交换block。 一个交换block包含4个残差单元,其中每个单元在每个分辨率中包含两个3×3卷积,并且在各个分辨率中包含一个交换单元。 综上所述,总共有8个交换单元,即进行8个多尺度融合。
在我们的实验中,我们研究了一个小网络和一个大网络:HRNet-W32和HRNet-W48,其中32和48分别代表最后三个stage的高分辨率子网的宽度(C)。 其他三个并行子网的宽度为64,128,256对于 HRNet-W32。96,192,384对于HRNet-W48。
实验
COCO关键点检测
数据集。COCO数据集[36]包含200000多张图像和250000个 标记有17个关键点的人实例。 我们在COCO train2017数据集上训练了我们的模型,其中包括57K张图像和150K个人实例。 我们在val2017集和test-dev2017数据集上评估我们的方法,分别包含5000张图像和20K张图像。
评估指标:标准评估指标基于对象关键点相似性。这里
是检测到的关键点与相应ground truth之间的欧几里得距离,
是ground truth的可见性标记,s 是目标尺度,
是控制衰减的每个关键点常数。 我们报告标准的average precision和recall得分:AP50(AP在OKS = 0.50)AP75,AP(AP在10个位置的平均得分,OKS = 0.50, 0.55, ..., 0.90; 0.95; APM用于中等尺度目标,APL用于大尺度目标,AR的OKS = 0.50, 0.55, ..., 0.90, 0.955。
训练:我们将人体检测框的高度或宽度扩展到固定的宽高比:height:width = 4:3,然后从图像中裁剪该框,将其调整为固定大小256×192或384×288。 数据扩充包括随机旋转([-45°, 45°]),随机缩放([0.65, 1.35])和flip。 继[68]之后,还涉及了半身数据的增强。
我们使用Adam优化器[32]。学习计划遵循设定[72]。基本学习率设定为1e−3,并分别在第170和200个epochs时降至1e−4和1e−5。训练过程在210个epochs内终止。
测试:使用类似于[47、11、72]的两阶段自上而下的范例:使用人体检测器检测人体实例,然后预测检测关键点。
对于验证集和test-dev集,我们使用SimpleBaseline2 [72]提供的同一个人体检测器。 按照常规做法[72、40、11],我们通过平均原始图像和翻转图像的heatmap来计算heatmap。 通过调整最高热值位置来预测每个关键点位置,该位置在从最高响应到第二最高响应的方向上偏移了四分之一。
验证集上的结果。我们在表1中报告了我们的方法和其他最新方法的结果。我们的小型网络HRNet-W32经过从头开始训练,输入大小为256×192,达到了73.4的AP得分,优于其他 输入大小相同的方法。 (i)与Hourglass [40]相比,我们的小型网络将AP提高了6.5点,而我们网络的GFLOP则低得多,还不到一半,而参数的数量却相似,而我们的参数却略大。 (ii)与CPN [11] w / o和w / OHKM相比,我们的网络具有更大的模型尺寸和更高的复杂度,分别实现了4.8和4.0点的增益。 (iii)与以前表现最佳的SimpleBaseline [72]相比,我们的小型HRNet-W32取得了显着改善:小模型尺寸和GFLOP相似的backbone ResNet-50获得了3.0点的增益,backbone ResNet-152获得了1.4倍的增益 其模型大小(#Params)和GLOP是我们的两倍。
我们的网络可以收益来自(i)ImageNet分类问题的预训练模型:HRNet-W32的收益为1.0个点; (ii)通过增加宽度(通道数)来增加容量:我们的大型HRNet-W48在输入尺寸256×192和384×288上分别得到0.7和0.5的改善。
考虑到输入尺寸384×288,我们的HRNet-W32和HRNet-W48得到了75.8和76.3的AP,与输入尺寸256×192相比有1.4和1.2的改进。与以ResNet-152为backbone的SimpleBaseline[72]相比,我们的HRNet-W32和HRNetW48分别以45%和92.4%的计算成本获得了1.5和2.0的AP点增益。
test-dev集上的结果。表2报告了我们的方法和现有技术水平方法的姿态估计性能。 我们的方法比自下而上的方法要好得多。 另一方面,我们的小型网络HRNet W32的AP达到74.9。 它优于所有其他自上而下的方法,并且在模型大小(#Params)和计算复杂度(GFLOPs)方面更加高效。 我们的大型模型HRNet-W48达到了最高的75.5 AP。 与具有相同输入大小的SimpleBaseline [72]相比,我们的小型和大型网络分别获得了1.2和1.8的改进。 借助来自AI Challenger [70]的其他数据进行训练,我们的单个大型网络可以获得77.0的AP。
MPII 人体姿态估计
数据集:MPII 人体姿态数据集[2]包含从各种现实活动中获取的带有全身姿势注释的图像。 大约有25K 张图片和40K个subjects,其中有12K subjects用于测试,其余subjects用于训练集。 数据扩充和训练策略与MS COCO相同,不同之处在于输入大小被裁剪为256×256,以便与其他方法进行合理比较。
测试:测试过程与COCO中的测试过程几乎相同,除了采用标准测试策略来使用提供的人体boxes而不是检测到的人体boxes。 在[14,77,62]之后,执行了六级金字塔测试程序。
评估指标:使用标准度量[2],即PCKh(正确关键点的头部标准化概率,head-normalized probability of correct keypoint)得分。 如果关节落在ground truth位置的αl个像素内,则关节点是正确的,其中α是常数,l是相对于ground truth头部边界框的对角线长度的60%的头部尺寸。 报告PCKh @ 0.5(α= 0.5)分数。
测试集上的结果:表3和表4列出了PCKh @ 0.5的结果,模型大小和性能最高的方法的GFLOP。 我们使用ResNet-152作为backbone,输入大小为256×256,重新实现了SimpleBaseline [72]。我们的HRNet-W32获得了92.3的 PKCh @ 0.5的得分,并且胜过了堆叠式沙漏方法[40]及其扩展方法 [58、14、77、31、62]。 我们的结果与先前在2018年11月16日的排行榜上发布的最佳结果中的最佳结果[62]相同。我们要指出,方法[62]是我们方法的补充,它利用构成模型来学习 人体结构并采用多层次的中间监督,我们的方法也可以从中受益。 我们还测试了大型网络HRNetW48,并获得了92.3的相同结果。 原因可能是此数据集中的性能趋于饱和。
应用到姿态追踪
数据集:PoseTrack [28]是用于人体姿势估计和视频中的关节跟踪的大型benchmark。 该数据集基于流行的MPII Human Pose数据集提供的原始视频,包含550个视频序列和66 374帧。 视频序列被分为292、50、208个视频,分别用于训练,验证和测试。 训练视频的长度在41-151帧之间,并且从视频中间开始对30帧进行密集注释。 验证/测试视频中的帧数范围帧为65-298帧。 对MPII Pose数据集中的关键帧周围的30个帧进行密集注释,然后每4帧进行注释。 总共大约有23000个带标签的框架和153 615个姿势注释。
评估指标:我们从两个方面评估结果:逐帧多人姿势估计和多人姿势跟踪。 姿势估计通过[51,28]中的mean average precision(mAP)进行评估。 多人姿势跟踪通过多目标跟踪精度(MOTA)进行评估[38,28]。 细节在[28]中给出。
训练:我们在PoseTrack2017训练集上训练了HRNet-W48以进行单人姿势估计,其中,网络是通过在COCO数据集上预先训练的模型初始化的。 通过将所有关键点(对于一个人)的边界框扩展15%的长度,从训练框架中带注释的关键点中提取出人的bounding box,作为我们网络的输入。 训练设置(包括数据扩充)与COCO几乎相同,除了学习机制不同(现在是用于fine-tuning):学习率从1e-4开始,在第10个epochs到1e-5下降到1e-5,写死第15个时epochs达到1e-6; 迭代在20个epochs内结束。
测试:我们遵循[72]来跟踪跨框架的姿势。 它包括三个步骤:人体框检测和传播,人体姿势估计以及跨附近帧的姿势关联。 我们使用与SimpleBaseline [72]中使用的人体box检测器相同的方法,并根据FlowNet 2.0 [26] 4计算出的光流,通过传播预测的关键点,将检测到的盒子传播到附近的帧中,然后对盒子进行非最大抑制 删除。 姿势关联方案基于一帧中的关键点与根据光流从附近帧传播的关键点之间的对象关键点相似度。 贪婪匹配算法然后用于计算附近帧中关键点之间的对应关系。 在[72]中给出了更多细节。
PoseTrack2017测试集上的结果:表5报告了结果。 我们的大型网络HRNet-W48获得了卓越的结果,mAP得分为74.9,MOTA得分为57.9。 与第二好的方法,即使用ResNet-152作为backbone的SimpleBaseline [72]中的FlowTrack相比,我们的方法在mAP和MOTA方面分别获得了0.3和0.1的点增益。 与FlowTrack [72]相比,其优越性与COCO关键点检测和MPII人体姿态估计数据集的优越性是一致的。 这进一步暗示了我们的姿势估计网络的有效性。
消融研究
我们研究了每种方法对COCO关键点检测数据集的影响。 除研究输入大小的影响外,所有结果都是在256×192的输入大小上获得的。
重复多尺度融合:我们根据经验分析重复多尺度融合的效果。 我们研究了网络的三种变体。(a)无中间交换单元(1个融合):除最后一个交换单元外,多分辨率子网之间没有交换。 (b)仅W /跨阶段交换单元(3个融合):每个阶段内的并行子网之间没有交换。 (c)跨阶段和跨阶段交换单元(共8个融合):这是我们提出的方法。 从头开始训练所有网络。 表6中给出的COCO验证集的结果表明,多尺度融合是有帮助的,更多融合会带来更好的性能。
超分辨率维护:我们研究了HRNet变体的性能:一开始就添加了所有四个从高到低分辨率的子网,并且深度相同。 融合方案与我们的相同。 我们的HRNet-W32及其变体(具有类似的#Param和GFLOP)都经过从头训练,并在COCO验证集中进行了测试。 该变体的AP为72.5,低于我们的小型网络HRNet-W32的73.4 AP。 我们认为,原因是从低分辨率子网的早期阶段提取的低级功能没有太大帮助。 另外,具有类似参数和计算复杂度的简单高分辨率网络,而没有低分辨率并行子网络,则显示出低得多的性能。
表示分辨率:我们从两个方面研究表示分辨率如何影响姿态估计性能:从每个分辨率的特征图(从高到低)检查热图的质量,并研究输入大小如何影响质量。
我们训练由ImageNet分类预先训练的模型初始化的小型和大型网络。 我们的网络从高到低的解决方案输出四个响应图。 最低分辨率响应图上的热图预测质量太低,AP分数低于10个点。 图5报告了其他三张图上的AP分数。比较表明,分辨率确实会影响关键点预测质量。
图6显示了与SimpleBaseline(ResNet-50)[72]相比,输入图像大小如何影响性能。 我们可以发现,较小的输入大小的改进比较大的输入大小更有意义,例如,对于256×192,改进为4.0个点,对于128×96,改进为6.3个点。原因是我们保持 整个过程中的高分辨率。 这意味着我们的方法在实际应用中更具优势,在实际应用中,计算成本也是一个重要因素。 另一方面,我们的输入大小为256×192的方法要优于SimpleBaseline [72],后者的输入大小为384×288。