概述
在关键点检测模型中,首先要将高分辨图像缩放到低分辨以产生特征热图(encoder),随后推理中要将低分辨特征热图中的响应位置放大到输入图像以产生最终的关键点结果(decoder)。文章认为,在这个缩放过程中,坐标值的转换存在误差,影响了关键点定位精度。
方法
坐标编码
经典的编码方法,是在给定特征图响应极大值位置和次极大值位置之后,按照如下公式,在特征图上计算出次像素级的坐标精度:
这意味着直接将最大响应位置向次最大响应位置移动 0.25 个距离以在特征图上获取次像素级定位精度。
随后将 p 缩放 λ 倍获得输入图像上的对应坐标:
只考虑最大响应位置和次最大响应位置的编码方式,有可能造成定位不准确。
作者提出假设预测特征热图也应当符合高斯分布,因此特征热图可以用下式表示:
其中 x 是预测特征热图中像素位置,μ 是真实值位置,也就是需要估计的值。
对上式取对数:
由于真实值和预测值相隔很近,根据泰勒展开:
由于 μ 是真实极大值位置,因此在 x=μ 时的一阶导应该为 0,即:
可以求出:
这其中的一阶导和二阶导都可以从特征图中直接求取。
坐标解码
在关键点坐标由高分辨输入图像转换到低分辨特征图时,给定一个降采样因子,坐标转换公式就是:
为了在特征图上产生 2D 高斯 GT 分布,通常将浮点坐标 g’ 进行量化:
随后以 g’’ 为中心产生一个高斯 GT 分布:
上述的量化过程也会产生误差,因此在产生 GT 高斯分布时,不再进行量化,而是直接用 g’ 产生高斯热图。
实验结果
使用 COCO 数据集合 HRNet 网络的实验结果表明,这两种方法对于提升关键点定位精度,都有积极作用。实际中也观察到了相似的结论。尤其是这种方法,不需修改当前模型,不会增大模型推理的计算量,因此比较有实际意义。