Reading SmoothNet: A Plug-and-Play Network for Refining Human Poses in Videos

论文地址:https://arxiv.org/abs/2112.13715

作者:Ailing Zeng, Lei Yang, Xuan Ju, Jiefeng Li, Jianyi Wang, Qiang Xu

发表: ECCV 2022

链接: https://github.com/cure-lab/SmoothNet


如果你去做这个任务,会怎么做?作者做的方法和你想的有什么差异?

Why:

  1. 从视频估计人体姿势时,抖动是个问题
  2. 除了轻微抖动以外,有一些long- term抖动,还有因为重叠、姿势少见等原因造成的估测困难

What:

image-20220909143919787
image-20220909143919787
  1. 一个仅基于时序的精炼网络,以其他网络的姿势估计结果作为输入。
  2. 有监督的
  3. 采用滑动窗口,基于TCN
  4. 并不是常见的那种基于学习的方法,即采用时间-空间模型来同时优化逐帧的准确率和时序的平滑性。这个方法通过学习每一个关节在长时间范围的运动特征(而不是关节之间的关系),来自然地建模身体运动中的平滑特征。
  5. 由于它仅仅需要时序信息,所以可以泛化到很多种任务上,包括2D和3D的姿势估计、body recovery等

How:

  1. 根据持续时长,将抖动归类为sudden jitter和long- term jitter两种。为了解决long- term的抖动问题,现有那些方法都不大行。

    根据程度,又可以将抖动分为小抖动和大抖动。小抖动一般由于不可避免的误差,或者标注上的误差;大抖动则是由于图像质量差、姿势少、重叠严重等。

    image-20220909143902334
    image-20220909143902334
  2. 将误差归类为相邻帧之间的抖动造成的误差(jitter error)和模型估计结果与真实结果之间的偏差(bias error)这两种。现有那些方法并没有将这两类误差解耦

  3. 提出了basic smoothnet和正经smoothnet。

    1. image-20220909154626864
      image-20220909154626864

      Basic smoothnet,FCN是backbone。通过长度为T的滑窗,每次传入T帧图像,包含C个channels。

      image-20220909155504588
      image-20220909155504588

      权重\(w_t^l\)和偏差\(b^l\)是第\(t_{th}\)帧的,并且在不同的channel之间是共享的。

    2. image-20220909155701901
      image-20220909155701901

      完整的motion- aware smoothnet就是加上了速度和加速度两个模块。

      因为jitter的一个衡量方式就是加速度,所以把加速度直观地显示在模型中是一个很显然的方式。给定预测出的姿势\(\hat Y\),速度就是两帧之间相减,得到 \[ \hat V_{i,t} = \hat Y_{i,t} − \hat Y_{i,t−1} \] 加速度就是速度之间的差: \[ \hat A_{i,t} = \hat V_{i,t} − \hat V_{i,t−1} \]

  4. loss就是两个:

    1. ground truth pose和估计pose之间的误差: \[ L_{pose} = \frac{1}{T\times C} \sum_{t=0}^T \sum_{i=0}^C |\hat G_{i,t} − Y_{i,t}|, \]

    2. ground truth 加速度和估计加速度之间的误差: \[ L_{acc} = \frac{1}{(T-2)\times C} \sum_{t=0}^T \sum_{i=0}^C |\hat G''_{i,t} − A_{i,t}|, \]