Deep globally constrained MRFs for Human Pose Estimation

针对人体姿态估计问题,本文提出了一种改进方案,通过引入MRF网络细化预测过程,解决了传统方法中节点间关系表达不足的问题。该方案分为coarse、MRF和refine三个阶段,其中MRF阶段通过多尺度卷积核更准确地捕捉关节间的复杂关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

1)文章设计了一个由粗糙到精细的这样的一个预测的过程,客服之前tompson他们的refine网络不能很好的修正coarse网络的缺陷

2)作者在coarse网络和refine网络之间加入全新的MRF网络,MRF用一个低维流型进行因子化限制

3)不同关节点对的权重是不一样的,对于胳膊肘而言,肩膀和手腕对他的影响是不同的

2、

之前tompson的方法的缺陷

1)用单独的一个滤波器e_a|c来刻画关节点间的关系似乎是简单了点,对于刻画复杂的节点关系明显是不够的,因为tompon的条件概率仅仅刻画并不复杂的数据集,一旦一个数据集变得复杂的话,两个关节点之间的关系也就复杂了,仅仅用一个大小为63x63的卷积核来刻画两个关节点的条件概率显然是不够的哈,所以作者在本文将会提出对于每一种关系的话,将由K个大卷积核来代替的,而不是一个,对于这K个结果做一个加权上面的处理哈。

本文的网络结构分为三部分,coarse, MRF, refine三部分

2)滤波器刻画了不同关节点间的位置关系

3)在本文中,每一个滤波器都是由K个滤波器线性组合完成的。那么k个线性组合的参数是怎么来的呢?他是通过将feature map映射到低维的空间里面获得的,低维的流型空间是K维的,因为这k个参数是由单独的网络提取出来的,所以再运行的时候是变化的而不是静态的,这k个weight是通过一个自动编码器获得的如图所示


4)不同的pairwise之间的权重是不一样的,假设有20对,那么会是20个不同的数字,而不是相同的

5)MRF的message passing是参考了itertive feedback来的,具体参考论文里的参考文献


3 网络结构实现


网络框架如上,没什么困难理解的地方

1)coarse网络部分采用三个水平的金字塔模型

2)MRF部分网络的unary和pairwise是通过卷积学习出来的,由粗糙网络出来的feature的大小是32x32,为了能够覆盖整个feature map,所以用于后续概率图的卷积核大小是63x63,因为概念都是从tompson来的,所以直接把公式那过来吧


来看下面的一段话,因为f_a|c刻画的条件概率的话太过单一,并不能表示出很强的信息,所以作者将几个f_a|c^k结合在一起来使用,也就是前面提到的低维流型来进行因子化,其实就是简单的相乘啦!


同样的,在刻画不同的pair对的时候比例也应该不一样,此处用beta表示

最后的公式如下


为了学习MRF的参数,最后用误差反馈的方法来进行调整!!!!!!!!!!!!


MRF部分的网络如下,


解释一下上面的这幅图

  • 首先第一步将(KxJx63x63)[蓝圈]个卷积去和JX32X32的heatmap做卷积,J是关节点的数量,K是两个关节点之间关系需要几个卷积核来表示
  • 然后卷积完之后就获得了每个关节点在对应关系下的结果依然是(KxJx63x63)[红圈],蓝圈中大括号的“K convolutional priors per joint”代表的是一种关系下用几个卷积核来代替,而红圈下的大括号“J pair-wise potentials per joint for each manifold dimension"代表的是每个关节点对应了J中关系,感觉是全连接的图了
  • 然后用$\beta$区队每一种关系做加权获得绿圈
  • 然后粉红圈的结果和绿圈的结果做了进一步的加权获得最终的结果

两点疑问:

  1. 蓝圈的地方是不是应该是J组,而图中只画了一组?
  2. 红圈到绿圈的63->32怎么来的

3)refine部分的网络的输入是任意大小,因为之前tompson他们都是选取同样大小的patch送入到网络里面,很明显这对于不同的部位是不合理的,所以作者在这里不同部位对应的patch输入不同的大小,记住作者是从卷基层的第一第二层取特征,然后用卷积核卷积,预测最终的偏差,加在MRF预测出来的map图上面,获得最终的结果。具体网络如图


最后的损失是三部分你损失之和

4 训练和测试

这部分很简单了,就是refine网络部分输入大小取决于crop的大小,先用大的学习率,再用小的学习率学习之类的,具体参考论文吧,作者的实验也是做了一系列的对比试验,最重要的就是MRF的位置问题,很明显,加在coarse和fine网络的中间是最合理的

### YOLOv5 Pose Model Pruning Techniques #### Introduction to Model Pruning Model pruning aims at removing redundant parameters from neural networks without significantly affecting their performance. For YOLOv5 pose models, this technique can effectively reduce the model's size and enhance inference speed while maintaining accuracy. #### Types of Pruning Methods Applied on YOLOv5 Pose Models Two main types of pruning methods exist: structured and unstructured pruning. Structured pruning focuses on eliminating entire filters or channels within convolutional layers, leading to more efficient memory usage and faster computation times. Unstructured pruning targets individual weights across all layers but may not lead directly to computational savings unless followed by retraining[^1]. #### Implementation Steps for Pruning YOLOv5 Pose Models To apply these techniques specifically to YOLOv5 pose detection: - **Filter-Level (Structured) Pruning**: Identify less important feature maps based on criteria such as magnitude of activations or gradients. Remove those with minimal impact. - **Channel-Wise Quantization & Pruning Combination**: Combine quantization—reducing precision—and channel-wise pruning to achieve both smaller sizes and higher speeds simultaneously[^4]. - **Iterative Fine-Tuning After Each Prune Cycle**: Gradually remove insignificant components through multiple rounds of evaluation and fine-tuning until desired trade-offs between efficiency gains versus slight losses in prediction quality are reached. ```python import torch.nn.utils.prune as prune def apply_pruning(model): # Define percentage of connections to prune globally amount = 0.2 # Apply L1 norm-based global pruning parameters_to_prune = ( (model.backbone.conv1, 'weight'), (model.head.fc, 'weight') ) prune.global_unstructured( parameters_to_prune, pruning_method=prune.L1Unstructured, amount=amount, ) apply_pruning(your_yolov5_pose_model) ``` This code snippet demonstrates how one might implement an initial round of unstructured pruning using PyTorch’s built-in utilities. Adjustments would be necessary depending upon specific architecture details unique to each version of YOLOv5 pose estimation implementations. --related questions-- 1. What metrics should be considered when evaluating pruned versions of deep learning models like YOLOv5? 2. How does iterative pruning affect the overall structure of a neural network compared to single-pass approaches? 3. Can you explain what challenges arise during deployment after applying aggressive levels of compression via pruning? 4. In terms of hardware compatibility, do certain devices benefit more than others from optimized models resulting from successful application of pruning strategies?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值