未验证 提交 c4f21a12 编写于 作者: C Chang Xu 提交者: GitHub

[cherry-pick]Improve the usability of keypoint metric (#6223)

上级 4e3b20b7
...@@ -21,6 +21,7 @@ from pycocotools.cocoeval import COCOeval ...@@ -21,6 +21,7 @@ from pycocotools.cocoeval import COCOeval
from ..modeling.keypoint_utils import oks_nms from ..modeling.keypoint_utils import oks_nms
from scipy.io import loadmat, savemat from scipy.io import loadmat, savemat
from ppdet.utils.logger import setup_logger from ppdet.utils.logger import setup_logger
import paddle
logger = setup_logger(__name__) logger = setup_logger(__name__)
__all__ = ['KeyPointTopDownCOCOEval', 'KeyPointTopDownMPIIEval'] __all__ = ['KeyPointTopDownCOCOEval', 'KeyPointTopDownMPIIEval']
...@@ -70,15 +71,23 @@ class KeyPointTopDownCOCOEval(object): ...@@ -70,15 +71,23 @@ class KeyPointTopDownCOCOEval(object):
self.results['all_preds'][self.idx:self.idx + num_images, :, 0: self.results['all_preds'][self.idx:self.idx + num_images, :, 0:
3] = kpts[:, :, 0:3] 3] = kpts[:, :, 0:3]
self.results['all_boxes'][self.idx:self.idx + num_images, 0:2] = inputs[ self.results['all_boxes'][self.idx:self.idx + num_images, 0:2] = inputs[
'center'].numpy()[:, 0:2] 'center'].numpy()[:, 0:2] if isinstance(
inputs['center'], paddle.Tensor) else inputs['center']
self.results['all_boxes'][self.idx:self.idx + num_images, 2:4] = inputs[ self.results['all_boxes'][self.idx:self.idx + num_images, 2:4] = inputs[
'scale'].numpy()[:, 0:2] 'scale'].numpy()[:, 0:2] if isinstance(
inputs['scale'], paddle.Tensor) else inputs['scale']
self.results['all_boxes'][self.idx:self.idx + num_images, 4] = np.prod( self.results['all_boxes'][self.idx:self.idx + num_images, 4] = np.prod(
inputs['scale'].numpy() * 200, 1) inputs['scale'].numpy() * 200,
self.results['all_boxes'][self.idx:self.idx + num_images, 1) if isinstance(inputs['scale'], paddle.Tensor) else np.prod(
5] = np.squeeze(inputs['score'].numpy()) inputs['scale'] * 200, 1)
self.results['image_path'].extend(inputs['im_id'].numpy()) self.results['all_boxes'][
self.idx:self.idx + num_images,
5] = np.squeeze(inputs['score'].numpy()) if isinstance(
inputs['score'], paddle.Tensor) else np.squeeze(inputs['score'])
if isinstance(inputs['im_id'], paddle.Tensor):
self.results['image_path'].extend(inputs['im_id'].numpy())
else:
self.results['image_path'].extend(inputs['im_id'])
self.idx += num_images self.idx += num_images
def _write_coco_keypoint_results(self, keypoints): def _write_coco_keypoint_results(self, keypoints):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册