Spaces:
Running
on
Zero
Running
on
Zero
| # Copyright (c) OpenMMLab. All rights reserved. | |
| from typing import List, Union | |
| from mmpose.codecs import * # noqa: F401, F403 | |
| from mmpose.registry import TRANSFORMS | |
| from .common_transforms import RandomFlip | |
| class HandRandomFlip(RandomFlip): | |
| """Data augmentation with random image flip. A child class of | |
| `TopDownRandomFlip`. | |
| Required Keys: | |
| - img | |
| - joints_3d | |
| - joints_3d_visible | |
| - center | |
| - hand_type | |
| - rel_root_depth | |
| - ann_info | |
| Modified Keys: | |
| - img | |
| - joints_3d | |
| - joints_3d_visible | |
| - center | |
| - hand_type | |
| - rel_root_depth | |
| Args: | |
| prob (float | list[float]): The flipping probability. If a list is | |
| given, the argument `direction` should be a list with the same | |
| length. And each element in `prob` indicates the flipping | |
| probability of the corresponding one in ``direction``. Defaults | |
| to 0.5 | |
| """ | |
| def __init__(self, prob: Union[float, List[float]] = 0.5) -> None: | |
| super().__init__(prob=prob, direction='horizontal') | |
| def transform(self, results: dict) -> dict: | |
| """The transform function of :class:`HandRandomFlip`. | |
| See ``transform()`` method of :class:`BaseTransform` for details. | |
| Args: | |
| results (dict): The result dict | |
| Returns: | |
| dict: The result dict. | |
| """ | |
| # base flip augmentation | |
| results = super().transform(results) | |
| # flip hand type and root depth | |
| hand_type = results['hand_type'] | |
| rel_root_depth = results['rel_root_depth'] | |
| flipped = results['flip'] | |
| if flipped: | |
| hand_type[..., [0, 1]] = hand_type[..., [1, 0]] | |
| rel_root_depth = -rel_root_depth | |
| results['hand_type'] = hand_type | |
| results['rel_root_depth'] = rel_root_depth | |
| return results | |