SimpleHumanPose代码及原理分析(四)-- 算法原理总结
在之前,对SimpleHumanPose算法的代码进行了解析:
SimpleHumanPose代码及原理分析(一)-- coco keypoints数据集
SimpleHumanPose代码及原理分析(二)-- data与label前处理
SimpleHumanPose代码及原理分析(三)-- loss损失函数
这篇blog对SimpleHumanPose算法进行一个总结和归纳~~
一、backbone网络结构
上图就是SimpleHumanPose的网络结构~可以看到,其实backbone很简单,就是单纯的high-to-low resolution网络从高分辨输入中获得低分辨特征图,然后再从低分辨特征图上恢复高分辨率特征图。这里,在进行high-to-low阶段中,backbone为resnet,图片从256的shape一直进行下卷积到16。在low-to-high阶段中,通过上卷积(SimpleHumanPose的核心,并没有沿用其他传统模型的上采样)恢复feature map的shape为64。
二、heatmap生成
针对于label的处理,采用的是高斯热力图的方法。
举个栗子~
比如说,label中有一个点的坐标为(32,32),而SimpleHumanPose生成的heatmap的shape为64 * 64的,所以说这个点可以看作是中心点。
大致的图片基于上图所示。
三、loss函数
进行loss计算的两条线分别为:
第一条线:(256,256)的data经过网络输出得到(64,64)
第二条线:label生成的(64,64)热力图
采用loss就是针对这64*64=4096个点分别进行L2损失函数(即均方差函数)