目前的差分架构(Baseline):
- 用FAMI-Pose中的局部对齐和聚合获得Appearance特征;
- 用多阶段特征差分融合作为运动Motion特征;
- 两种特征融合,然后用一个Heatmap Head得到最终的热图。
根据最近做的差分实验,有一些初步实验结果:
| Method | Accuracy |
|---|---|
| Alignment & Aggregation,W/O Motion(Base) | 82.8(83.0) |
| Alignment & Aggregation, Motion | 83.1 |
| Alignment & Aggregation, Motion(Multi-Stage) | 83.2 |
基础的差分特征能起到一定作用,但是作用不大,所以引出本工作的主体:
TemporalDifference常用于运动建模,且兼具计算量低&性能可观的优点,已经被广泛应用视频超分、动作识别等任务,但是经过分析,Temporal Difference得到的运动特征是比较Noisy的,即这种Noisy Motion Feature包含两部分:
- Temporally dynamic features (e.g., motion patterns) that change over time(由相机和人物运动引起的) ,能真正反映人物运动的特征
- Temporally static features (e.g., 光照),例如光照、遮挡等引起的人物appearance变化并不是运动信息,对于运动估计会产生噪声
因此,需要对Temporal Difference得到的Feature进行分解,解纠缠地去学习这两部分特征,然后用useful且鲁棒的Temporally dynamic features进行姿态估计。
基于以上分析,下一步工作首先需要进行特征分解 ,对于这块目前有两种思路:
- 首先进行特征对齐,然后做减法,按理说得到的就是运动信息之外的特征(但是感觉对齐缺乏硬约束,有点问题)
- 用 Attention Mask 的形式,也就是从Noisy的运动特征中进行挖掘,解纠缠学习,得到有效的时间动态特征(实现简单,看起来也合理,相当于做运动蒸馏)
特征分解和约束应该要同步进行,所以需要推导一下运动特征的监督
已经推导出三项主要互信息损失函数,同时加入,效果不错
经过一段时间调参,在做两组实验:
- 互信息加一项最大化的
- 只修改原始的解纠缠学习方式
| Method | Accuracy |
|---|---|
| Alignment & Aggregation,W/O Motion(Base) | 82.8(83.0) |
| Alignment & Aggregation, Motion, MI(3项) | 83.7 (85.7) |
目前最高精度 83.94 - 85.8,比FAMi-Pose高了1个点
主打:Temporal Difference Representation Learning:
- 多阶段渐进式融合,学习出鲁棒的特分特征
- 用解纠缠进一步学习出有用的任务相关的运动特征
- 在与外观融合,得到最终的
后续 测试
- 多模态互信息
- 正则化互信息
- 训练更多轮
- 不同辅助帧数
最近需要重构一下model,在抽象出两个函数:
- 差分特征这里,改成函数
- attention也改成函数式
关于模型的结构调整,暂时还没有什么思路,能看进去的话就再看看论文,尝试一下新的
然后就准备写论文
关于MI的消融发现
- 差分互信息项很有效
- 多模态融合的只是0.1,影响不大
- 正则化项正在消融
发现一个问题,就是反转测试的使用
HRNet: 83.3 → 84.0
Ours: 85.3 → 85.75
我看了一下,输出的heatmap太暗了,反转测试提升不明显 应该是这个问题
测试了一些方案暂时还没解决
差分设计的消融实验证明所提的拆分+互信息方案特别有效
差分特征和光流特征的对比完成,差分更有效
重新开始CVPR实验,整理一下最近要做的事
硬性实验:
- 把ConvNext在PoseTrack2017测试集,PoseTrack2018 验证/测试集的Box结果跑出来
- 可以思考一下互信息的正负问题,提一个完整的互信息损失函数,类似Pytorch的余弦相似度函数,尽量解决一下实验结果问题
- 多看论文
- 继续看论文,准备写
本文的重心目前在于运动建模,利用时间差分的方式,如何获取任务导向的运动特征
将代码迁移到新服务器后,对于代码的复现出现了一些问题,复盘一下:
- 首先是对训练好的模型,在验证集进行验证,在2080TI上训练好的模型在RTX显卡上可以复现,这说明大体上环境是不影响的。
- 之前是V15版本精度最高,我尝试在RTX和2080TI都训练这个模型,在RTX复现时,Batch_Size设置的60, 第 5 个epoch精度崩塌了(80.3→75.9),最终训练精度在80.1附近,验证精度83.2; 在2080ti的复现之前给中断了,今天(9-11)继续跑一下看,看看能不能复现,从现在的结果来看是暂时正常
- 由于RTX模型崩塌问题,我挑选了类似的模型V16进行训练,两个服务器配置完全相同,2080TI上训练基本精度和实验记录类似(83.89,以前最高83.92,差了0.04%),该问题可以忽略不计,说明确实是复现出v16的结果了,然后在RTX上也复现到了类似的结果(83.82),这说明两个服务器影响确实不大,但是RTX服务器同样配置训练的精度就是会低一些,误差/计算精度
- V16可以认为是复现成功,v16和v15唯一的差别在于互信息项的使用,我改了互信息项之后v16_15,在2080ti训练精度和没改类似;RTX则直接崩了(batch设置的48),精度掉到了HRNet一样,不知道是不是代码问题
- 精度变化有点诡异,只是在16模型文件的基础上改成了15,瞬间训练就崩了????? 训练会崩溃可能确实是这个模型存在的一些问题 我再次浮现一下v16,以及看看从v15_2 → v15的情况,看看能否复现出来 若可以复现则去直接训练posetrack18 以及 JHMDB
RTX服务器稳定性确实有些许问题
对于后续代码上的改进与思考
这个实验主要贡献在于差分操作下的运动建模,思考如果给运动特征再添加一个自监督约束是不是会更好,表示学习到的确实是运动特征,
感觉现在主要矛盾其实是在于写论文,复现之类的 有差不多的一个版本就够了,就可以开始在PoseTrack2018和JHMDB跑了,因为精度已经够了;然后PoseTrack21是个机会 可以说我们超过之前baseline方法十几个点!
可以准备开始写论文了,今天多看一些相关的论文,感觉写的重点可以不包括特征融合,重点就在于基于差分算子的运动特征的建模上。
- 提出渐进式差分特征密集融合,选择性的融合不同的阶段(内部融合+阶段间融合)得到基于差分的运动表征 (informative motion)coarse
- 解纠缠的运动特征蒸馏,用解纠缠的学习方式,从差分表征中进一步显式分离出useful feature 和 noisy feature (effective motion)fine
- 直接用运动特征,但是它有很多杂乱无章或者无关信息,提供的性能特别有限
- 直接用attention进行蒸馏,但是这种缺乏约束,依然
- 我们的解纠缠机制通过显示分离出两类特征,并用互信息约束最小化其信息量可以学到有判别性的且对任务直接相关的有效的运动特征
关于HiEve数据集的实验:
最后一次更新
CVPR 中了
2023-03-22 笔记迁移到 Obsidian