AI Challenge Human Pose 评测代码分析

评测方法和标准

  • 根据最终提交的submit.json文件和ground.json文件计算mAP得分;

  • 评测代码最终会输出mAP结果,错误信息和警告信息;

主函数分析

主函数代码1

  • 读入检测结果的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是多少——总而言之,对我输出预测结果的复杂度要求还是很低的;

  • 得分计算使用技巧:欧氏距离,尺度归一,高斯分布,加权,去平均;

最后预祝大家取得好成绩

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值