关键点检测网络HR-Net数据集制作过程的理解

项目中需要对关键点定位,CPM网络和HR-Net对于这个目标表现都不错,现在着重说一下HR-Net在替换成自己数据集的过程中出现的一点疑惑,通过GitHub issue和计算解决的过程。

首先给出使用的GitHub链接。

网络结构如图所示:

关键点检测网络HR-Net数据集制作过程的理解_第1张图片

可以发现,网络在进行一系列卷积并行后最后合并成相同尺寸的特征图,也就是会形成最终的Heatmap。在制作数据集时,使用的时face300w的csv文件格式,截取部分大概长这个样:

关键点检测网络HR-Net数据集制作过程的理解_第2张图片

可以发现,前面有三个系数,分别是scale, center_w,centrer_h, 理解后面两个比较简单,就是可以定位到人脸的中间部分,然后猜测第一个scale的参数应该就是找到中心点了,然后通过一个缩放系数就能crop到脸部的区域用于训练。GitHub中解释了这个问题,我也验证了一下,

比如对于路径下的afw/397921011_2.jpg文件,缩放比例,中心宽高分别为 1.595 506.5 662.5 第一个关键点的坐标为1280 960,然后将所有关键点的x,y坐标的最大值最小值找出来为x1, x2, y1, y2,通过公式:

scale = max(w, h) / 200
center_w = (x1 + x2) / 2
center_h = (y1 + y2) / 2

即可求的。

相应的,这里系数为什么是200呢,其实就是一个系数,根据人脸大小和数据集设定的,也可以改成自己的数据集大小的。在transform.py中也可以找到这个参数。   

sf = scale * 200.0 / output_size[0]

你可能感兴趣的:(关键点定位)