我前面有一篇论文复现笔记提到,有篇文章的可视化和误差分析做的很好,这里来实操如果做误差分析!怎么把我写的笔记拿来!我看看!
值得参考的可视化与误差分析|HRNet团队的另一款Bottom-up人体姿态估计方法
0 前情提要
工欲善其事必先利其器。
coco-analyze
- github: coco-analyze
- paper: Benchmarking and Error Diagnosis in Multi-Instance Pose Estimation
- dataset: keypoints-eval
这里记录一下用 coco-analyze 工具分别对 HigherHRNet 和 UDP 进行分析的过程。接下来我只说 higherhrnet 的过程,udp 类似。
1 coco-analyze 简单介绍
在 coco 官网的 keypoints 挑战里提供了一个分析代码 4. Analysis Code ,这个工具对多人姿态估计上的误差做了详尽的分析。官网提供的示例如下:
这个图展示了各种类型的错误对多人姿态估计算法的影响。
图由一系列准确率-召回率曲线(PR,Precision Recall)。其中,这些曲线一条高过一条,因为检测被逐步矫正。
项目主页 有完整说明。
(图标从下往上看)
- Original Dts.: 在 OKS=.9 (严格 OKS 下的 AP ),也就是原始检测结果。
- Miss: 在 OKS=.9 下,所有的 遗漏 误差都被纠正后的结果。这个误差表示:检测到的关键点不在正确身体部件附近。是个大大误差!
- Swap: 在 OKS=.9 下,所有的 交换 误差都被纠正后的结果。这个误差表示:不同人的相同身体部分(比如,右手肘)被混淆。
- Inversion: 在 OKS=.9 下,所有的 逆 误差都被纠正后的结果。这个误差表示:同一个人的身体部分(比如,左右手肘)被混淆。
- Jitter: 在 OKS=.9 下,所有的 抖动 误差都被纠正后的结果。这个误差表示:检测到的关键点在正确的身体部分附近。算个小误差。
- Opt. Score: 在 OKS=.9 下,所有的算法都用 oracle 函数重新计算。检测和真实值之间匹配数量的最大计分。
- FP: 所有背景误报 fps 都被移除后。
- FN: 所有剩余误差都被移除后 (AP=1)。
那么看这个图,面积大的说明纠正这些误差会得到很大的增益。比如说,图例里的面积说明 CMU 的错误主要是 Jitter 抖动 和 Miss 遗漏 误差。
2 安装和运行
环境:
- Ubuntu 16.04
- python=3.7
- git
2.1 安装
在我们的环境里,克隆包,然后安装。
git clone git@github.com:matteorr/coco-analyze.git
cd coco-analyze
make all
2.2 准备文件
这个工具制作的时候是根据 2014val
来做的,现在大家都用 2017val
的数据比较多,那么在文件准备方面就需要做出一些改动。
2.2.1 annotations
既然这是一个验证、误差分析工具,那么肯定是在验证集上面做的,我们需要下载一份 2017 val annotations 作为我们的 Ground-Truth。
2.2.2 detections
然后