数据和注释
使用Mask R-CNN [1] 生成人的分割掩码 (SM),一个 1×46×82的张量,其中 46 和 82 分别是高度和宽度
使用OpenPose[2]的最新 Body-25 模型来输出身体关节热图 (JHM) 和部分亲和场 (PAF)。对于每一帧,JHMs 是一个 26×46×82 张量,其中 26 对应于 25 个关节和 1 个背景。 PAF 是一个 52×46×82 张量,其中 52 代表 26 个肢体的 x 和 y 坐标
神经网络
从 CSI 映射到身体分割掩码 (SM)、联合热图 (JHM) 和部分亲和场 (PAF)。
损失函数
L = λ 1 L S M + λ 2 L J H M + λ 3 L P A F \mathcal{L}=\lambda_{1} L_{\mathrm{SM}}+\lambda_{2} L_{\mathrm{JHM}}+\lambda_{3} L_{\mathrm{PAF}} L=λ1LSM+λ2LJHM+λ3LPAF
- L S M L_{\mathrm{SM}} LSM使用交叉熵损失函数
- 对于 L J H M L_{\mathrm{JHM}} LJHM和 L P A F L_{\mathrm{PAF}} LPAF,使用 L 2 L_{\mathrm{2}} L2无法生成很好的效果 ,因为身体关节在图像中只占用很少的像素,而 L 2 L_{\mathrm{2}} L2损失倾向于对所有像素的回归误差进行平均。这个问题可以通过多个级联回归阶段(如 OpenPose[2] 或 Stacked Hourglass Networks [3])部分缓解,但这两种解决方案都使网络变得更重。以 L J H M L_{\mathrm{JHM}} LJHM为例,本文使用 Matthew Weight (MW) 来实现注意力机制使网络比背景更关注身体关节:
L J H M ( i , j , c ) = w ( i , j , c ) ⋅ ∥ y ^ ( i , j , c ) − y ( i , j , c ) ∥ 2 2 L_{\mathrm{JHM}}^{(i, j, c)}=w_{(i, j, c)} \cdot\left\|\hat{y}_{(i, j, c)}-y_{(i, j, c)}\right\|_{2}^{2} LJHM(i,j,c)=w(i,j,c)⋅∥∥y^(i,j,c)−y(i,j,c)∥∥22 w ( i , j , c ) = k ⋅ y ( i , j , c ) + b ⋅ I ( y ( i , j , c ) ) w_{(i, j, c)}=k \cdot y_{(i, j, c)}+b \cdot \mathbb{I}\left(y_{(i, j, c)}\right) w(i,j,c)=k⋅y(i,j,c)+b⋅I(y(i,j,c))
具体细节见论文
搞笑:使用 OpenPose Python API 在给定 JHM 和 PAF 的情况下进行多人联合关联。
为什么不直接用OpenPose作为监督???
实验部分介绍了
①与基于相机的方法的差距
②在未经训练的环境中部署
根据需要看原文
[1] Mask r-cnn
[2] Realtime multi-person 2d pose estimation using part affinity fields
[3] Stacked hourglass networks for human pose estimation