AI Challenge Human Pose 评测代码分析
来源:互联网 发布:linux网络流量监控 编辑:程序博客网 时间:2024/09/21 06:34
评测方法和标准
根据最终提交的submit.json文件和ground.json文件计算mAP得分;
评测代码最终会输出mAP结果,错误信息和警告信息;
主函数分析
- 读入检测结果的json文件和ground truth的json文件名称,分别赋值给args.submit和args.ref;
- 初始化返回字典,包含一个error信息,一个score信息,多个warning信息;
- 加载标注文件信息,load_annotations分析见下;
- 加载检测结果文件信息,load_predictions分析见下(这里很重要,关系到我们生成预测结果文件的格式);
- 根据解压后的标注和预测信息,计算得分,keypoint_eval分析见下;
load_annotations函数分析
- 初始化输出字典,其中包括image_ids字段用来存储图片ID,annos字段用来存储人体框标注和关键点标注,delta字段用来存储14个关键点的得分权重信息;
- 加载标注json文件,如果在加载标注文件时发生读取错误,输出错误信息并退出程序;
将标注文件中的信息逐一加载到输出字典中;
最终输出字典格式如下:annotations[‘image_ids’]=[‘image1_id’,’image2_id’,’image3_id’…],annotations[‘annos’]=[‘image1_id’][‘human_annos’]+[‘image1_id’][‘keypoint_annos’]+[‘image2_id’][‘human_annos’]+[‘image2_id’][‘keypoint_annos’]+[‘image3_id’][‘human_annos’]+[‘image3_id’][‘keypoint_annos’];
load_predictions函数分析
- 初始化输出字典,其中包括’image_ids’和’annos’字段,分别为列表和字典,最后的id_set与输出无关,仅仅用来判断是否在结果文件中多次包含一个图片id和结果;
- 加载结果json文件,如果在加载结果文件时发生读取错误,输出错误信息并退出程序;
- 对结果文件中的每一项,判断是否有’image_id’和’keypoint_annotations’关键字,没有则发出警告;
- 获取去掉.jpg的image_id,加入到id_set中,用以后续判断是否有重复ID;
- 将结果文件信息添加到输出信息predictions中,最终predictions格式为:predictions[‘image_ids’]=[‘image1_id’,’image2_id’,’image3_id’…],predictions[‘annos’]=[image_id1][‘keypoint_annos’]+[image_id2][‘keypoint_annos’]+[image_id3][‘keypoint_annos’];
keypoint_eval函数分析
- oks_all:得分统计结果,oks_num:max(预测人数,标注人数);
- 如果预测文件中包含了标注文件中的图片ID,使用compute_oks返回得分矩阵,compute_oks函数解析见下;
收集与每一个标注信息间得分最大的标注信息,统计入结果oks_all中;
oks_num用以对过多的结果预测进行惩罚;
- 如果没有对标注图片进行预测,会在oks_num中增加标注人数,进行最后的得分惩罚;
- 以多个阈值计算mAP,并取平均;
compute_oks函数分析
- anno_count:本图片中标注了多少个人的关键点,predict_count:本图片中预测了多少个人的关键点,oks建立得分矩阵,大小为anno_count*predict_count,对应每一个标注和每一个预测;
对于标注文件中预测的每一个人,获取其标注信息(其中包括标注点及该点是否可见)和其人的面积信息;
用预测的每一个信息与标注信息计算得分,计算过程中只关心标注信息中可见点的得分,也就是说我在输出信息的时候要输出14*3个信息,对于第3个信息并不关心输出值是多少,对于不可见点并不关心输出的x和y是多少——总而言之,对我输出预测结果的复杂度要求还是很低的;
得分计算使用技巧:欧氏距离,尺度归一,高斯分布,加权,去平均;
最后预祝大家取得好成绩
阅读全文
0 0
- AI Challenge Human Pose 评测代码分析
- AI Challenger-人体骨骼关键点检测&& Human Pose Estimation
- human pose/joints annotation
- 人体姿态估计(human pose estimate)
- annotation code for human pose estimation
- Stacked Hourglass Networks for human pose estimation
- 论文阅读:Personalizing Human Video Pose Estimation
- 身体姿势估计 - Human Pose Estimation
- Stacked Hourglass Networks for Human Pose Estimation
- Google AI Challenge
- [深度学习论文笔记][Human Pose Estimation] DeepPose: Human Pose Estimation via Deep Neural Networks
- DeepPose: Human Pose Estimation via Deep Neural Networks(精读)
- Multi-source Deep Learning for Human Pose Estimation(泛读)
- DeepPose: Human Pose Estimation via Deep Neural Networks 阅读笔记
- Flowing ConvNets for Human Pose Estimation in Videos
- 论文阅读:Poselet-Based Contextual Rescoring for Human Pose Estimation
- 阅读小结:Stacked Hourglass Networks for Human Pose Estimation
- [姿态预测] Flowing ConvNets for Human Pose Estimation in Videos
- redis4.0.0 集群安装详细步骤
- U盘安装redhat 7.4的最终解决方案
- es6 中类与对象的一些心得
- 5分钟搞定android混淆
- 不用第三方写一个简单的推流软件
- AI Challenge Human Pose 评测代码分析
- 图片滚动事件
- java版云笔记(五)
- JavaScript前端按钮复选框
- Prime Distance POJ
- 【Leetcode】算法题50 Pow(x,n)
- Java中的Cloneable接口
- bzoj1492
- 在Ubuntu下配置舒服的Python开发环境