论文阅读:Structured Feature Learning for Pose Estimation
2016-07-06 22:35
507 查看
王晓刚组的论文CVPR2016
一、论文所解决的问题
本文要解决的是在CNN中如何对关节之间的依赖进行建模,主要是引入几何变换核(单单用几何变换核,是不行的,因为会受到关节之间的距离限制,所以后面提出了双向树模型),这个核是用在卷积层的。此外还提出了双向的树结构模型(还是传统的基于图模型的玩法,将关节的树模型集成进了CNN,所谓的树模型就是把人的关节看成是一个树状的模型),这样每个关节的feature channels都可以接受到其他关节的信息。
采用这个几何变换核的缺点就是:
1.几何变换核的大小决定了需要变换的关节的位置与目标关节的位置如果距离太大的话,就需要较大的核,这一点是不可接受的,计算量会非常大,然后既然太大,作者实际上才提出了双向的树结构模型来进行弥补的,只对两个关节之间的关系进行建模了。
2.关节之间的关系不稳定,这里其实也说明了作者所提出的几何变换核的思想是好的,但是仅仅用这个其实却不能很好地work.
所以作者还是转到图模型上去了,设计了双向树这么一个模型,对关节之间的关系进行建模。
二、论文的解决方案
(1)整体架构一览
整个的方案如上图所示,首先输入一幅图像,然后经过CNN(可以是任意的用于分类NN网络,比如VGG,alexnet),到1x1卷积的时候会得到若干个heatmap,heatmap的个数就是关节个数,然后这些heatmap按照图(2,a)中的方式进行从下往上进行卷积,此外还按照图(2,b)这样的方式按照从上往下的方式进行卷积,这样就得到了最终的预测结果。
本文所使用的经过修改的VGG网络的结构如下表所示,VGG-16表示原始的16层的VGG网络,ours表示本文经过修改的网络结构。横着看下面的表应该是一行的,但是没法换行,所以写成了两行。
(2)本文所创新的两个点
①几何变换核
1)如上图,图中的a-c讲的是作者所提的几何变换核,假设输入的是一个高斯分布的图像,经过几何变换核,可以改变图像中高斯的分布,包括位置和强度。
2)那么作者的idea是,我们知道关节之间的空间相对位置是比较稳定的(我觉得并不是相对稳定的,相对位置,其实这一点并不是很站得住脚)。那么如中间的d-h这几幅图所示,d图中输入一幅图片,那么得到e和f这两幅图片,e是elbow的heatmap,而f是lower arm的heatmap,发现lower arm的定位很准确,原因是膀子是光的,好定位。而elbow就不行了,发现有多个峰值的点,这怎么办,我就将lower arm的点经过作者所谓的几何空间核进行变换,移动到elbow那个地方,这样相当于就让这个几何空间核学习到了相对位置的变换(其实我觉得这完全站不住脚,但是有提升是肯定会有的)通过将lower
arm的位置进行改变得到elbow的位置,这个位置如图g所示,将图g中的位置与图e中的位置叠加,获得最大的那个峰值,就有效地去除了其他的峰值了。
3)图i到j分别为输入图像,初始的elbow的heatmap,经过本文作者的方法处理的heatmap,显然最终处理之后的效果肯定好很多。
②双向树模型(一个自底向上,一个自顶向下)
如上图所示A1-A10都是用CNN提取出来的关节的heatmap,每个代表不同类型的关节的heatmap,而右上角加上一撇的是经过处理的heatmap,具体的处理方式如上图(2,a)和图(2,b)所示。
图(2,a)中是向上传播
比如A6'=A6就说明A6没有经过任何处理,同理A5也是。
比如A4'=f(A5+A5'xWa4a5)就表示经过处理的A4即A4'是由A4加上经过卷积的A5经过一个非线性的激活函数得到的heatmap,这个非线性的激活函数f是relu激活函数。
图(2,b)中是向下传播
也是类似的,这里不详细展开
设计这两个方向的传播的方式,是为了进行相互补充
那么最终的结果就是经过这样的树状的结构的传播之后的
Ak'和Bk'这样的heatmap经过concat,然后去预测族中的第k个关节的heatmap。形式化的描述为:
Z_k是经过concat之后再经过w_{pred}^k这个卷积核(1x1卷积)卷积之后关节k的heatmap
注意:这个双向树里面的w就是几何变换核
注意:关于CNN的感受野的扩大对于pose estimation的精度提升的讨论如下:
这一点,在Convolution pose machine中也有相关的讨论。
下面是Convolution Pose Machine中关于感受野的讨论
(3)模型的训练
使用VGG的权重,然后随机初始化结构化特征层的权重,进行fine-tune,经过修改的VGG的学习率为0.001,后面的结构化特征层的学习率是0.01
损失函数定义如下:
(4)后处理(如何处理一幅图片中出现多个人)
处理多个人出现在图像中的情况,使用树结构中的信息去解决。
It cannot be solved at the feature level and needs structural
reasoning on score maps. It indicates that structural learning
at the feature level and the score level are complementary
具体做法:
关节i和关节j的位置分别为(xi,yi)和(xj,yj),那么xr=(xi+xj)/2,yr=(yi+yj)/2.
那么dx = xi-xj-xr, dy = yi-yj-yr
[dx^2, dy^2]就是所谓的距离描述子,距离描述子的权重是[0.01,0.01].
这样方法在 Y. Yang and D. Ramanan. Articulated human detection with flexible mixtures of parts.PAMI,
35(12):2878–2890, 2013和
X. Chen and A. L. Yuille. Articulated pose estimation by a graphical model with image dependent pairwise relations. In NIPS,
2014中都用过。
三、论文中的方案解决该问题,解决到了什么程度?
(1)解决了关节之间的依赖建模问题
(2)解决图片中多个人出现的问题,主要因为提出了树结构,所以可以解决这个问题
四、其他未能考虑的问题
遮挡问题,始终没有指明是否就对遮挡问题有较好的效果。
五、有什么收获
其实本文倒是提供了一种设计关节依赖关系建模的方法,根据作者的思路,我们可以设计其他方式的关节之间的依赖关系,
六、实验
(1)实验细节
三个数据集上FLIC、LSP。
指标是PCP和PDJ
1)PDJ这个指标,在Elbow和Wrist这两个类型的关节上和其他论文进行比较,实际上也就这两个关节比较困难。
2)strict PCP指标在FLIC数据集上,主要关注arms的
3)strict PCP指标在FLIC数据集上,主要关注arms的。作者自己的方法比较。
baseline是直接用CNN提取关节
SD是单向的树结构
Bi-direct是双向的树结构
Bi-direct(+)是双向的树结构,此外一个关节使用多个heatmap所得到的结果
4)strict PCP在LSP上与其他方法的比较
Yang是杨易的DPM模型,手工设计的特征,是局部的特征
Pischner那个是CVPR2014年的
Poselet conditioned pictorial structures,也是手工设计的特征,是局部特征Pictorial Structure和全局特征Poselets相结合的
Chen那个是基于图模型的X. Chen, A. Yuille. Articulated Pose Estimation by a Graphical Model with Image Dependent Pairwise Relations. NIPS'14,是基于CNN的,后端用的图模型。
5)定性分析
(2)代码
http://www.ee.cuhk.edu.hk/~xgwang/projectpage_structured_feature_pose.html
一、论文所解决的问题
本文要解决的是在CNN中如何对关节之间的依赖进行建模,主要是引入几何变换核(单单用几何变换核,是不行的,因为会受到关节之间的距离限制,所以后面提出了双向树模型),这个核是用在卷积层的。此外还提出了双向的树结构模型(还是传统的基于图模型的玩法,将关节的树模型集成进了CNN,所谓的树模型就是把人的关节看成是一个树状的模型),这样每个关节的feature channels都可以接受到其他关节的信息。
采用这个几何变换核的缺点就是:
1.几何变换核的大小决定了需要变换的关节的位置与目标关节的位置如果距离太大的话,就需要较大的核,这一点是不可接受的,计算量会非常大,然后既然太大,作者实际上才提出了双向的树结构模型来进行弥补的,只对两个关节之间的关系进行建模了。
2.关节之间的关系不稳定,这里其实也说明了作者所提出的几何变换核的思想是好的,但是仅仅用这个其实却不能很好地work.
所以作者还是转到图模型上去了,设计了双向树这么一个模型,对关节之间的关系进行建模。
二、论文的解决方案
(1)整体架构一览
整个的方案如上图所示,首先输入一幅图像,然后经过CNN(可以是任意的用于分类NN网络,比如VGG,alexnet),到1x1卷积的时候会得到若干个heatmap,heatmap的个数就是关节个数,然后这些heatmap按照图(2,a)中的方式进行从下往上进行卷积,此外还按照图(2,b)这样的方式按照从上往下的方式进行卷积,这样就得到了最终的预测结果。
本文所使用的经过修改的VGG网络的结构如下表所示,VGG-16表示原始的16层的VGG网络,ours表示本文经过修改的网络结构。横着看下面的表应该是一行的,但是没法换行,所以写成了两行。
(2)本文所创新的两个点
①几何变换核
1)如上图,图中的a-c讲的是作者所提的几何变换核,假设输入的是一个高斯分布的图像,经过几何变换核,可以改变图像中高斯的分布,包括位置和强度。
2)那么作者的idea是,我们知道关节之间的空间相对位置是比较稳定的(我觉得并不是相对稳定的,相对位置,其实这一点并不是很站得住脚)。那么如中间的d-h这几幅图所示,d图中输入一幅图片,那么得到e和f这两幅图片,e是elbow的heatmap,而f是lower arm的heatmap,发现lower arm的定位很准确,原因是膀子是光的,好定位。而elbow就不行了,发现有多个峰值的点,这怎么办,我就将lower arm的点经过作者所谓的几何空间核进行变换,移动到elbow那个地方,这样相当于就让这个几何空间核学习到了相对位置的变换(其实我觉得这完全站不住脚,但是有提升是肯定会有的)通过将lower
arm的位置进行改变得到elbow的位置,这个位置如图g所示,将图g中的位置与图e中的位置叠加,获得最大的那个峰值,就有效地去除了其他的峰值了。
3)图i到j分别为输入图像,初始的elbow的heatmap,经过本文作者的方法处理的heatmap,显然最终处理之后的效果肯定好很多。
②双向树模型(一个自底向上,一个自顶向下)
如上图所示A1-A10都是用CNN提取出来的关节的heatmap,每个代表不同类型的关节的heatmap,而右上角加上一撇的是经过处理的heatmap,具体的处理方式如上图(2,a)和图(2,b)所示。
图(2,a)中是向上传播
比如A6'=A6就说明A6没有经过任何处理,同理A5也是。
比如A4'=f(A5+A5'xWa4a5)就表示经过处理的A4即A4'是由A4加上经过卷积的A5经过一个非线性的激活函数得到的heatmap,这个非线性的激活函数f是relu激活函数。
图(2,b)中是向下传播
也是类似的,这里不详细展开
设计这两个方向的传播的方式,是为了进行相互补充
那么最终的结果就是经过这样的树状的结构的传播之后的
Ak'和Bk'这样的heatmap经过concat,然后去预测族中的第k个关节的heatmap。形式化的描述为:
Z_k是经过concat之后再经过w_{pred}^k这个卷积核(1x1卷积)卷积之后关节k的heatmap
注意:这个双向树里面的w就是几何变换核
注意:关于CNN的感受野的扩大对于pose estimation的精度提升的讨论如下:
这一点,在Convolution pose machine中也有相关的讨论。
下面是Convolution Pose Machine中关于感受野的讨论
(3)模型的训练
使用VGG的权重,然后随机初始化结构化特征层的权重,进行fine-tune,经过修改的VGG的学习率为0.001,后面的结构化特征层的学习率是0.01
损失函数定义如下:
(4)后处理(如何处理一幅图片中出现多个人)
处理多个人出现在图像中的情况,使用树结构中的信息去解决。
It cannot be solved at the feature level and needs structural
reasoning on score maps. It indicates that structural learning
at the feature level and the score level are complementary
具体做法:
关节i和关节j的位置分别为(xi,yi)和(xj,yj),那么xr=(xi+xj)/2,yr=(yi+yj)/2.
那么dx = xi-xj-xr, dy = yi-yj-yr
[dx^2, dy^2]就是所谓的距离描述子,距离描述子的权重是[0.01,0.01].
这样方法在 Y. Yang and D. Ramanan. Articulated human detection with flexible mixtures of parts.PAMI,
35(12):2878–2890, 2013和
X. Chen and A. L. Yuille. Articulated pose estimation by a graphical model with image dependent pairwise relations. In NIPS,
2014中都用过。
三、论文中的方案解决该问题,解决到了什么程度?
(1)解决了关节之间的依赖建模问题
(2)解决图片中多个人出现的问题,主要因为提出了树结构,所以可以解决这个问题
四、其他未能考虑的问题
遮挡问题,始终没有指明是否就对遮挡问题有较好的效果。
五、有什么收获
其实本文倒是提供了一种设计关节依赖关系建模的方法,根据作者的思路,我们可以设计其他方式的关节之间的依赖关系,
六、实验
(1)实验细节
三个数据集上FLIC、LSP。
指标是PCP和PDJ
1)PDJ这个指标,在Elbow和Wrist这两个类型的关节上和其他论文进行比较,实际上也就这两个关节比较困难。
2)strict PCP指标在FLIC数据集上,主要关注arms的
3)strict PCP指标在FLIC数据集上,主要关注arms的。作者自己的方法比较。
baseline是直接用CNN提取关节
SD是单向的树结构
Bi-direct是双向的树结构
Bi-direct(+)是双向的树结构,此外一个关节使用多个heatmap所得到的结果
4)strict PCP在LSP上与其他方法的比较
Yang是杨易的DPM模型,手工设计的特征,是局部的特征
Pischner那个是CVPR2014年的
Poselet conditioned pictorial structures,也是手工设计的特征,是局部特征Pictorial Structure和全局特征Poselets相结合的
Chen那个是基于图模型的X. Chen, A. Yuille. Articulated Pose Estimation by a Graphical Model with Image Dependent Pairwise Relations. NIPS'14,是基于CNN的,后端用的图模型。
5)定性分析
(2)代码
http://www.ee.cuhk.edu.hk/~xgwang/projectpage_structured_feature_pose.html
相关文章推荐
- CUDA搭建
- 深入理解CNN的细节
- TensorFlow人工智能引擎入门教程所有目录
- convolutional neural network
- UFLDL Exercise: Convolutional Neural Network
- 使用深度卷积网络和支撑向量机实现的商标检测与分类的例子
- 对Pedestrian Detection aided by Deep Learning Semantic Tasks的小结
- CNN学习(一)
- CNN学习(一)
- 阅读 理解 思考 - Learning to Segment Object Candidates
- 卷积神经网络学习
- CNN: single-label to multi-label总结
- 总结:Large Scale Distributed Deep Networks
- 总结:One weird trick for parallelizing convolutional neural networks
- Extract CNN features using Caffe
- Deep Learning Face Attributes in the Wild
- 卷积神经网络CNN
- Tiled convolutional neural networks(TCNN)
- 卷积神经网络
- 卷积神经网络参数说明