开始学关键点检测的时候,到处找找不到heatmap的解释。现在大概有些懂了,干脆自己写一个。部分转载。
关键点定位任务两种做法:heatmap和fully connected回归(Heapmap-based和Regression-Based)
heatmap得到一张类似热力图的东西,回归直接得到关键点坐标。
从定位的原理上看
Heatmap和Regression两种方法差异是很大的:
- Heatmap方法实际上是在空间维度上做特征匹配,是卷积核在特征图平面上“滑动”,更多地关注和利用的是局部信息,而定位实际上是特征匹配的“副产品”,是我们通过求响应最大点索引(Argmax)的方式获得的,相对来说,每一个关键点的计算是独立的。(可理解为拿一个卷积核去挨个算,看每一个局部是否符合关键点的特征,计算出的响应越大,越有可能是关键点)
- Regression方法则不同,所有的关键点计算是同时完成的,共享了同一份特征信息。(可理解为把所有特征信息输入一个全连接层,直接计算出坐标。)
heatmap(热图),如下图,可以理解成热感图。越是符合标准的位置,颜色越亮。
这里给出一种热图上像素点的计算方法:
假设真实坐标点 / 标注是 μ = ( μ x , μ y ) \mu = (\mu_x ,\mu_y) μ=(μx