背景:
最近刚刚在HiEve数据集上做了实验,主要针对多人的姿态估计。因为dataloader一套主要参考COCO去做的,所以记录一下对测试结果格式的保存。将coco的测试结果转换为HiEve的格式,并保存成json。
修改方式
COCO结果保存的代码位于${project_root_dir}/lib/dataset/coco.py
,主要代码是_coco_keypoint_results_one_category_kernel(self, data_pack)
函数(大概位于359行左右)。将该函数进行了重写,如下所示:
def _coco_keypoint_results_one_category_kernel(self, data_pack):
annolist = []
keypoints = data_pack['keypoints']
for img_kpts in keypoints:
frame_instance = {}
frame_instance['ignore_regions'] = []
annorect = []
image = '%06d.jpg'%img_kpts[0]['image']
frame_instance['image'] = [{'name': image}]
for person in img_kpts:
bbox_score = person['score']
x1, y1, x2, y2 = person['bbox'][0], person['bbox'][1], person['bbox'][2], person['bbox'][3]
annopoints = []
point = []
for i in range(person['keypoints'].shape[0]):
joint = {
'y': [person['keypoints'][i, 1]],
'score': [1],
'id': [i],
'x': [person['keypoints'][i, 0]]
}
point.append(joint)
pose = {'point': point}
annopoints.append(pose)
instance = {
'score': [bbox_score],
'y1': [y1],
'y2': [y2],
'x2': [x2],
'x1': [x1],
'annopoints': annopoints,
}
annorect.append(instance)
frame_instance['annorect'] = annorect
annolist.append(frame_instance)
hieve_res = {'annolist': annolist}
return hieve_res