一.综述:
人体骨骼关键点检测已经非常成熟了,参考曹哲大神的论文,可以知道其论文中的采用自下而上的方式,检测人体骨骼关键点。
采用的方式与自顶向下的方式的区别比较大,自定向下的方式首先是检测人体,在人体区域内回归出人体的骨骼关键点坐标。
而自下而上的方式采用的关键点热图和关键点矢量图的方式。如,一共有19个关键点,就会生成19个通道的热图,每一个通道为某个关节的热图分布(也就是概率图)。同时会生成19*2个通道的矢量图,为什么是19*2呢?因为矢量图分为两个方向,一个是X方向、一个是Y方向。(具体的操作可以参考论文,这里只是简单的介绍一下)
二. 如何生成关键点热图(概率图)
如下图所示如果右侧图中红色十字为一个关键点,假设生成的热图大小与原图像大小一致,生成的热图会在相应的坐标处生成一个成高斯分布的概率区域,区域的中心值最大,最接近1,越向四周,概率越小。
如图中间区域的概率最大,基本上接近于1,边缘逐渐减小
代码:(参考openpose)
def get_heatmap(annos, height, width):
"""
Parameters
- annos: 关键点列表 [
[[12,10],[10,30],....19个],#某一个人的
[[xx,xx],[aa,aa],....19个],#另外一个人的
]
- heigth:图像的高
- width: 图像的宽
Returns
- heatmap: 热图
"""
# 19 for