Convolutional Pose Machines论文总结

这篇文章在pose machines基础上应用了卷积网络,还用中继监督的方法避免了级数很多的情况下梯度消失的状况。用于预测图像中的关节位置,pose estimate.

几个特点:

  1. 应用卷积。
  2. 将图像特征(经过卷积网络提取出来的)和上一级输出的belief map作为本级的输入,belief map表示每个关节落在每个坐标点的置信值(分数),这样学习既考虑了图像的特征,也考虑了各部分之间的关联。整个结构都使用卷积,所以都可微分,能够用backropagation进行点对点的训练。
  3. 通过逐渐增大receptive field(感受野)来考虑空间背景信息。级数越大,每个像素点代表的空间特征信息越多,这样就可充分考虑各部分之间的空间联系,提高准确度。
  4. 中继监督。在结构的每一级都计算loss,避免梯度消失。
  5. center map.起到一个定位的作用,即这个人在哪里。

原理与结构

Pose Machines

Z–图像中的所有位置(坐标)
Y p Y_{p} Yp–第p个关节在图像上的位置,我们的目标就是得到 Y = ( Y 1 , . . . Y P ) Y=(Y_{1},...Y_{P}) Y=(Y1,...YP),即所有关节的坐标
g t ( ⋅ ) g_{t}(\cdot ) gt()–预测器, t ∈ 1... T t\in {1...T} t1...T,为结构的级数, g t ( ⋅ ) g_{t}(\cdot ) gt()的输出为belief map,从belief map中提取出 Y p Y_{p} Yp
x z x_{z} xz–提取出的特征x在位置z上的值

第一级:
g 1 ( x z ) → b 1 p ( Y p = z ) p ∈ 0... P g_{1}(x_{z})\rightarrow {b_{1}^{p}(Y_{p}=z)}_{p\in {0...P}} g1(xz)b1p(Yp=z)p0...P
表示:z位置的特征图输入第一级预测器,输出是第一级所有关节点落在z位置的置信值。z代表图像上的所有位置。所以belief map的维度为 w × h × ( P + 1 ) w\times h\times (P+1) w×h×(P+1), w × h w\times h w×h为图像的大小,P加一是包含了背景。belief map表示每个关节落在每个坐标的置信值。

第二级及以后:
g t ( x z ′ , ψ t ( z , b t − 1 ) ) → b 1 p ( Y p = z ) p ∈ 0... P + 1 g_{t}(x_{z}^{'},\psi _{t}(z,b_{t-1}))\rightarrow {b_{1}^{p}(Y_{p}=z)}_{p\in {0...P+1}} gt(xz,ψt(z,bt1))b1p(Yp=z)p0...P+1
x z ′ x_{z}^{'} xz表示提取出的特征x在位置z上的值,可以与 x z x_{z} xz不同
ψ t ( ⋅ ) \psi _{t}(\cdot) ψt()将前一级的belief map映射成背景特征,然后与图像特征一起输出预测器。

Convolutional Pose Machines

  1. 应用卷积:特征提取与预测器都用卷积网络。

  2. 省略 ψ t ( ⋅ ) \psi _{t}(\cdot) ψt(),因为卷积已经起到了提取特征的作用。

  3. 通过卷积不断扩大receptive field,使每个像素代表的特征信息越来越丰富,从而考虑到足够充足的背景信息。

  4. center map:(作用是用Gaussian map定位人的位置,经过处理已经在中心了。)与feature map和上级的belief map进行concatenate然后输入本级的,用公式来表示就是: g t ( c o n c a t e n a t e ( x z ′ , z , b t − 1 ) ) g_{t}(concatenate(x_{z}^{'},z,b_{t-1})) gt(concatenate(xz,z,bt1))

  5. Loss Function.每一级的loss function为:
    f t = ∑ p = 1 P + 1 ∑ z ∈ Z ∥ b t p ( z ) − b ∗ p ( z ) ∥ 2 2 f_{t}=\sum_{p=1}^{P+1}\sum_{z\in Z}^{ }\left \| b_{t}^{p}(z)-b_{*}^{p}(z) \right \|_{2}^{2} ft=p=1P+1zZbtp(z)bp(z)22,即每一个关节点,每一个坐标点,预测出的置信值与ground truth置信值的L2差距。
    总的loss function为: F = ∑ t = 1 T f t F=\sum_{t=1}^{T}f_{t} F=t=1Tft,即每一级的loss的和。

  6. 测试的准确度的计算用PCK方法。即若预测位置与正确位置的距离在 α ∗ m a x ( w , h ) \alpha *max(w,h) αmax(w,h)的范围内,就算时正确。w,h为bounding box的尺寸。

CPM模型:
(没在这个电脑上,下次记得上传)

数据增强

训练时将数据用随机缩放(scaling with factors in [0.7 1.3]),旋转( [ − 4 0 ∘ 4 0 ∘ ] [-40^{\circ} 40^{\circ}] [4040]),水平镜像的方式增强。
测试时随机缩放的尺度应在训练时缩放尺度的范围内。
在多尺度下(multi-scales)下,计算最后的预测位置的方法时将所有尺度下的belief map进行累加或平均,如最大值大于阈值,则确定该位置为预测位置。

关于center map

Gaussian map的作用是定位某个人的位置,然后方便找到这个人的各个关节。从代码中可以看出,若是多人图像,则先通过一个CPM结构预测到每个人的位置(center),在每个位置放一个Gaussian map。预测关节位置时,以各个center为中心分别进行裁剪,裁剪成固定大小( 368 × 368 368\times 368 368×368),然后送入CPM结构。所以若单人图像中人不在中心,或是多人图像,实际上就要通过两个CPM结构,一个定位人的center,一个定位关节。
另外生成 368 × 368 368\times 368 368×368大小的Gaussian map送入每一级,与feature map和上一级的belief map进行concatenate(简单堆叠),送入预测器。
既然训练输入的图像放置了Gaussian map,那么ground truth的正确位置也要放置Gaussian map,如此计算loss function时才统一。

其他自己的体会

  1. 看完论文,不懂的地方再看看代码就好了,代码主要看模型和testing里面的demo,下完caffemodel可以导出为图片更方便看,testing里面的demo有python版和matlab版,不难懂。

  2. CPM处理多人image还可以,准确度很高。但因为用了两个CPM结构的原因,处理多人video就很慢很慢了,我跑出来基本1秒1帧,离线下来也不大准确。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值