Contactless Pulse Estimation Leveraging Pseudo Labels and Self-Supervision
【rPPG】【ICCV2023】【paper】【code not available】
abstract
本文提出了一种使用伪标签监督辅助对比学习的无监督范式,使用 2SR 生成伪标签并通过课程式学习逐步平衡伪标签监督和对比学习。关于伪标签监督是多网络学习在 rPPG 的一种成功迁移。需要指出本文将视频 $x$ 转化为了 STMap,但在之后多次用到 $\phi(x)$,难免造成模型直接处理视频的误会。
overview
contribution
- 在普通自监督的基础上使用伪标签进行额外监督
- 使用双模型联合训练的方式对伪标签进行优化
formulation
输入视频被转化为 STMap $x$;双模型 $\phi_1:x\to y_1$ 和 $\phi_2:x\to y_2$ 均为 Dual-GAN 的 backbone(不共享参数) ;2SR 作为传统方法直接从视频中估计伪标签 $y_p$;通过对 $y$ 计算 PSD $\mathcal{F}(y)$ 获取其对应心率 $h$。
framework
- 自监督学习范式
这部分基本与之前的相关工作没有区别,本文使用时间移位来构建 pos.,即对于 anchor,将其在视频内的位置平移 $\pm f$ 帧得到正样本:$\mathcal{L}_p=d(\mathcal{F}(\phi(x)),\mathcal{F}(\phi(x_{\pm f})))$,也就是期望模型在 anchor 和 pos. 上获取一致的 PSD。
本文使用频率的上采样 $u_{\uparrow}$ 和下采样 $d_{\downarrow}$ 获取 neg.:$\mathcal{L}_n=-d(\mathcal{F}(\phi(x)),\mathcal{F}(\phi(x_{d_\downarrow})))-d(\mathcal{F}(\phi(x)),\mathcal{F}(\phi(x_{u_\uparrow})))$,也就是期望模型对于上下采样之后的 anchor 和 neg. 获取不同的 PSD,上下采样的范围是 [0.6,1.3]。
由于构造 neg. 时使用了上采样和下采样,因此视频对应的心率也应该呈现对应的变化,即 $h_{u\uparrow}<h<h_{d\downarrow}$,针对这种理应的变化设计损失函数为:$\mathcal{L}_{rank}=\max(h_{u\uparrow}-h,0)+\max(h-h_{d\downarrow},0)$。
综合自监督部分,损失函数为:
- 伪标签学习范式
本文实质上是 multi-network learning 在 rPPG 上的成功应用,在两个模型上的协同优化循环优化 $\phi_1$ 和 $\phi_2$,优化 $\phi_1$ 可以表述为:
i ) 计算 batch 内的 $\epsilon_1= \mathrm{abs}(h_p^b-h_1^b)\mathrm{\ for\ b\in[1,bs]}$,其表示模型输出和伪标签直接的差值
ii) 在 $\epsilon_2$ 中选择误差最大的 $\lambda$ 个下标 $\{b_i\}_1^\lambda$,此时认为这些下标对应的伪标签是置信度低的,从而使用 $h_2^{b_i}$ 替换掉 $h_p^{b_i}$ 作为对 $\phi_1$ 的监督,此时并不更新 $\phi_2$
对于伪标签学习,损失函数 $\mathcal{L}_{pseudo}$ 为简单的 MSE。但考虑到前期同一个 batch 内会出现多个由于网络没有充分训练的“偏差值”,因此 $\lambda$ 应当随着训练缓慢增大。具体来说,$\lambda=\frac{e_t}{e_{max}}\lambda_{max}$,其中 $e_t$ 表示第 $t$ 个 epoch,$\lambda_{max}=8$。
综合伪标签学习和对比学习时,应该考虑到前期的对比学习相对于伪标签学习这种“伪监督学习”具备更低的置信度,因此 trade-off 应该先考虑伪标签学习,再考虑对比学习。
experiment
是第一个在 VIPL 上测试的模型,分成 10s 的 clip 做 video-level 测试,intra- 和 cross- 都 OK
消融实验很有说服力