前言
损失函数是一项工作里很重要的部分,它意在每个训练阶段告诉模型有多”犯傻”、离”正确答案”还有多远,然后基于损失反向传播回去使得各模型参数获得相应的梯度,于是模型就知道该如何纠正错误(当然,还要结合优化算法,由于不在本文内容之中,这里就不给它出场的机会了)。正是这样经历一系列迭代训练后,模型最终才能学习成长为”三好学生”。
上一期CW已向大家介绍了DEKR的标签分配方法,那么本期就接着来看看损失函数的设计吧!
目录
i, 分类损失
ii. 回归损失
分类损失
分类指的是区分每个位置是否是关键点(COCO中有17类)和虚拟中心点(代表人的中心点,具体意义可以回顾上期内容),对于COCO数据集来说,这里就会设置18个类别(17类+虚拟中心点1类)。类别对应到通道这个维度,于是,网络的输出是17张关键点热度图+1张虚拟中心点热度图,标签也是一样的形式,loss 使用的是加权的 L2 损失函数:
其中,H,C 分别代表预测的关键点和虚拟中心点热度图,带
的是对应的标签,它们相减是 element-wise 的形式。 代表掩膜(mask),用于为正负样本分配不同的权重:正样本1,负样本0.1(注意不是0)。 的 shape 和 一致,比如: 则有17个通道,每个通道对应一类关键点,而 当然就只有1个通道了。 于是, 就是 element-wise product,每个元素一对一相乘。回归损失
网络回归的是虚拟中心点到关键点位置的 offset maps,对于COCO数据集来说,这个输出通道则为17×2=34,对应17类关键点的 x,y 坐标,标签也是同样的形式,虚拟中心点邻域的位置是正样本,loss 使用归一化的 Smooth-L1 损失:
其中, C 代表正样本位置集合,
代表网络预测的offset map,带 表示对应的标签, 代表人物面积,实际是根据人物中关键点在 x, y 方向的最远距离 来计算的: , 的 shape 和 是一致的,这里的所有操作也是 element-wise 的。最终的 loss 计算如下:
这部分内容没有太多可言,loss 也很常规,对于正样本不熟悉的可以再回顾下前一期的内容。
可以思考下的是, 为何 heatmap (分类)部分要使用 L2 Loss? Cross Entropy,Focal Loss 会怎样呢?
Original: https://blog.csdn.net/soaring_casia/article/details/120086296
Author: 深蓝学院
Title: DEKR 解构式人体关键点回归(三):损失函数
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/635324/
转载文章受原作者版权保护。转载请注明原作者出处!