新鲜出炉的ICCV Oral,由于我的工作内容是姿态估计相关,因此也在第一时间拜读了一下,以下是一些笔记和过往经验的总结。由于我自身能力有限,文章中存在错误请见谅,欢迎指正。
论文地址:https://jeffli.site/res-loglikelihood-regression/resources/ICCV21-RLE.pdf
开源地址:https://github.com/Jeff-sjtu/res-loglikelihood-regression
这两天抓紧时间看了下作者放出来的代码,发现有些地方值得注意:
-
本文走的是用(joint_num*3)维的FC层直接回归出坐标点的路子,可以说是非常暴力了,这和我一开始想的soft-argmax的路线还不太一样,这显得RLE更强了;
-
根据我过去工作的经验,用soft-argmax积分热图来回归的方法应该能取得比纯FC更好的效果,在对比实验中也没有把RLE用到Integral Pose上的实验,直觉上应该能再涨点才对。我正在自己的数据上跑实验,出了结果会在这里更新。后续:我跟作者取得了联系,根据作者的说法积分热图确实能带来轻微的提升,但增加了计算量。
Hi Tau. Actually, we did conduct experiments on the soft-argmax based method. We use ResNet-50 and usingsigmoidto predict the normalized heatmap. The original model obtains 65.7 mAP on the COCO validation set, and the model trained with RLE obtain 70.7 mAP. This is slightly better than the direct regression method (70.5 mAP without pretrained). Although using soft-argmax is better, but we think the improvement is marginal and it brings more computation.
调了几天,终于在我自己的项目上跑起来了,记录一些遇到的坑:
-
RLE这个loss数值是可正可负的,因为L=-log p,当p>1的时候就会为负数,基本上训到后面都会是负的,这是正常现象;
-
这个loss对数据噪声比较敏感,很容易导致模型训崩,我之前的训练数据清洗得不够干净(自己没发现),但在L1 loss上训练没有遇到问题,在RLE上模型直接训崩了,debug了很久才发现是数据噪声问题(比如坐标值超出了图片范围);
-
作者的训练代码里,坐标值是经过了归一化的,在RegressionFlow模型中使用的bar_mu = (pred_jts - gt_uvd) / sigma 时,sigma也进行了sigmoid限制在0~1之间。
作者放出的源代码直接使用的话,很多人会遇到训练途中loss突然暴增然后又掉下来的现象,这个主要是训练数据中的异常值导致的,可以增大sigma上加的eps,默认用的1e-9,可以改为1e-5,这样能有效缓解以上异常,在我的实验中这样的修改不会对模型性能造成明显影响。
前言
一般来说,我们可以把姿态估计任务分成两个流派:Heatmap-based和Regression-based。
其