hourglass网络架构有效地利用了图像多个尺度的空间信息,可以很好地应用于人体关键点检测和人脸关键点检测等任务,人脸关键点检测一般要求在给定的人脸图像上检测出15个关键点的坐标,下面一起来看看hourglass网络的做法,这里参考的算法实现地址为:https://github.com/raymon-tian/hourglass-facekeypoints-detection
1.hourglass网络
2.网络原理
网络的输入是1x96x96的灰度图像和15×2的关键点坐标,在进行关键点检测时没有直接对关键点的坐标进行回归,而是对每个关键点生成一个heatmap,将此heatmap作为回归对象,参考算法的具体做法如下:
设某关键点坐标为(center_x, center_y),为其生成一个96×96的heatmap,设heatmap上点的坐标表示为(x, y),则heatmap上该点的取值为:
(exp(-frac{(x-center\_x)^2+(y-center\_y)^2}{2sigma^2}))
显然heatmap上取值最大的点表示离关键点最近,这样在做预测时,只需取相应的heatmap上取值最大的点的坐标作为预测即可。对15个关键点都生成一个heatmap,我们便得到了15x96x96的heatmap作为真实标签。
如上图所示,houglass网络架构将输入的1x96x96的灰度图像转变成了15x96x96的特征图,loss计算时直接将其与15x96x96的heatmap计算均方差损失。考虑到一些关键点标注的缺失问题,参考算法对其做了相应的掩码处理,即缺失的标注不计算损失。