高分辨率网络(HRNet)是用于人体姿势估计的先进神经网络-一种图像处理任务,可在图像中找到对象的关节和身体部位的配置。网络中的新颖之处在于保持输入数据的高分辨率表示,并将其与高分辨率到低分辨率子网并行组合,同时保持有效的计算复杂性和参数计数。
https://arxiv.org/pdf/1902.09212.pdf
在这篇文章中,将介绍:
为什么选择HRNet?
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch
https://jingdongwang2017.github.io/Projects/HRNet/PoseEstimation.html
https://paperswithcode.com/paper/deep-high-resolution-representation-learning
在COCO上排名第一
在COCO上排名第一
在PoseTrack2017上排名第二
在MPII上排名第六
HRNet解释
在处理人的姿势估计时,我们需要能够检测图像中的人并估计其连接(或关键点)的配置。因此,存在两种可能的姿势估计方法:
自上而下和自下而上的姿势估计
自下而上的方法首先找到关键点,然后将其映射到图像中的其他人,而自上而下的方法首先使用一种机制来检测图像中的人,在每个人实例周围放置一个边界框区域,然后估计关键点边界框内的配置。
自上而下的方法依赖于单独的人员检测网络,并且需要为每个人员分别估计关键点,因此,由于它们不是真正的端到端系统,因此通常计算量很大。相比之下,自下而上的方法首先是通过预测不同解剖学关键点的热图来定位输入图像中所有人员的无身份关键点,然后将它们分组为人实例,这实际上使它们更快。
自上而下的方法更普遍,并且目前可以实现更好的预测准确性,因为它将两个任务分开使用为每个人训练的特定神经网络,并且由于自下而上的方法由于不同人群的规模变化而遇到预测关键点的问题在图像中(即,直到HigherHRNet出现- 下方)。自上而下的方法不存在这种比例变化,因为所有人员实例都被标准化为相同的比例。尽管自下而上的方法被认为更快,因为HRNet使用自上而下的方法,该网络用于根据人员边界框来估计关键点,该人员边界框是在推理/测试过程中由另一个网络(FasterRCNN)检测到的。在训练期间,HRNet使用给定数据集的带注释的边界框。
两个数据集用于训练和评估网络
Architecture
以下是基于git项目中的代码的神经网络图,其后是研究论文中描述的网络图。
HRNet网络架构基于已发布的开源
本文介绍的HRNet网络架构
需要注意的重要结构是,网络与较低分辨率的子网(分支2-4)并行计算高分辨率的子网(分支1)。子网通过熔断器层融合在一起,以使每个高到低分辨率表示都一遍又一遍地从其他并行表示中接收信息,从而得到丰富的高分辨率表示。
输入图像为256 x 192或384 x 288,相应的热图输出尺寸为64 x 48或96 x72。前两个卷积根据预期的热图尺寸减小输入尺寸。网络输出热图大小和17个通道-每个关键点(17个关键点)在热图中每个像素的值。
所示的开源体系结构用于32通道配置。对于48个通道,更改从第一过渡层到48的每一层,其乘数乘以2。
本文中的交换块是开源中的模块,交换单元是开源中的保险丝层。在纸本图中,过渡层看起来像是子网的独立融合,而在代码中,当创建较低分辨率(较高通道)的子网时,过渡层是基于导致前一个具有另一个卷积层的最低分辨率子网。同样,在开放源代码中,仅针对高分辨率分支(分支1)计算最后一层的融合,而不是为所有分支(如纸质图中所示)计算。
下采样是在融合部分(或交换单元)从高分辨率分支转移到较低分辨率分支的stride = 2卷积,对于两次和三次下采样仅在最后一次下采样中才增加了通道数。这要么是代码中的错误,要么是本文未明确解释。很有可能是代码错误,因为对于第一个下采样,信息不是从较深的通道中的较高分辨率解析而来的-git中的Open issue。
如有疑问,请使用基于开源的图表-这是在运行经过训练的网络时使用的图表。
网络训练
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/3
HigherHRNet:用于自下而上的人体姿势估计的规模感知表示学习
https://arxiv.org/abs/1908.10357
这是同一研究团队使用HRNet作为骨干用于自下而上的姿势跟踪的新网络。作者解决了自底向上姿势估计中比例尺变化的问题(如上所述),并指出他们能够通过输出多分辨率热图并使用HRNet提供的高分辨率表示来解决该问题。
HigherHRNet优于COCO数据集上的所有其他自下而上的方法,对于中型人员而言尤其如此。HigherHRNet还可以在CrowdPose数据集上获得最新的结果。作者指出,这表明自下而上的方法比起自上而下的方法对拥挤的场景更健壮,但在同一数据集上没有与常规自上而下的HRNet结果进行比较。
该网络的骨干是常规的HRNet,但最后增加了一部分,用于输出更高分辨率的热图:
说明拟议的High-HRNet的体系结构
架构的右侧部分输出两个热图-一个用于低分辨率,一个用于高分辨率-分辨率为128 x 128和256 x256。在推论期间,两个热图均被汇总为更高的分辨率,并且为关键点选择了最高值的点。检测。梯形是一个反卷积层,其输出分辨率高2倍,其后跟随4个残差块。而且,对于每个关键点,计算输出标量标签,接近标签值形成属于特定人物的一组关键点,而遥远标签值指示属于不同人物的关键点组。标记根据在所述的“缔合嵌入”方法计算本文。标签值仅针对最低分辨率的热图进行训练和预测,因为作者发现,经验上更高分辨率的热图的标签值无法学会预测,甚至无法收敛。
在训练过程中,损失函数是热图预测损失和标签值损失的加权平均值(根据关联嵌入方法,同一组标签之间的距离越小,损失就越小,不同组标签之间的距离就越远) 。每个热图分辨率损失均根据基本情况独立计算,并进行总和运算。
在检查HigherHRNet的开源代码之后,尚无可用的推理代码来基于受过训练的网络创建演示姿态估计视频。
https://github.com/HRNet/HigherHRNet-Human-Pose-Estimation
演示版
该演示视频基于HRNet中的推理脚本(这是一个经过修改的脚本,在连接之间绘制了图符,并且在运行时不打开弹出图像- 脚本链接)。
视频特征
运行时信息
演示中的问题
在评估图像处理算法的结果时,重要的是要注意该算法在哪些地方表现不佳,这为它的固有问题提供了线索:
代码常见问题解答
1.姿势跟踪在RGB中完成,而人员检测基线训练的网络在BGR
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/41
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/15
2.使用coco数据集API pycocotools与python 3不兼容。HRNet通常可以工作,但是一旦您开始使用pycocotools,可能会有例外。
https://github.com/cocodataset/cocoapi/issues/49
3.必须使用numpy 1.17:
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/177
4.如何使用自己的数据集训练网络:
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/68
5.在推论中,请考虑使用model.no_grad来提高性能并降低内存使用量(我尚未测试过)
6.第三个关节参数似乎始终为零,对于joints_3d_vis对象,前两个参数始终具有相同的生存能力标志,而第三个参数也为零,来自coco.py-> _ load_coco_keypoint_annotation_kernal()。在JoinsDataset-> getitem()-> affine_transform中,关节的大小为3,以进行仿射变换,但是从不使用第三个参数(可能是旧参数,或者已将其放置在以后供HigherHRNet使用)。MPII数据集似乎也发生了同样的事情。
7.在验证\测试期间,不使用带注释的关节(即使它们已保存在数据加载器管道中)–因此,在测试运行期间打印的精度结果不正确。在测试运行期间,精度计算的整个流程都是多余的。在运行结束时,他们使用coco api计算正确的精度度量
8.推理配置为384X288(但自述文件说使用256X192)
图像和关节变形
https://github.com/microsoft/human-pose-estimation.pytorch/issues/26
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/23
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/9
https://github.com/microsoft/human-pose-estimation.pytorch/issues/94
“ 我认为它只是一个超级参数,代表边界框的默认w / h。别管它。“
https://docs.opencv.org/master/dd/d52/tutorial_js_geometric_transformations.html
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/issues/51
推荐阅读
CVPR2020 Oral | 动态多尺度图表达3D人体骨架运动,实现精准预测效果超SOTA