Spaces:
Running on Zero
Running on Zero
Download fdanyone/skeleton/keypoints.py from rerun/4danyone-rerun: direct link, hf CLI and curl.
- Browser
- Download file 4.81 kB
-
https://huggingface.co/spaces/rerun/4danyone-rerun/resolve/1b2e96f9bdb4bdc32148870859e16da0ad533680/fdanyone/skeleton/keypoints.py
- Command line
-
hf download hf://spaces/rerun/4danyone-rerun@1b2e96f9bdb4bdc32148870859e16da0ad533680/fdanyone/skeleton/keypoints.py
-
curl -L -o keypoints.py https://huggingface.co/spaces/rerun/4danyone-rerun/resolve/1b2e96f9bdb4bdc32148870859e16da0ad533680/fdanyone/skeleton/keypoints.py
4.81 kB
| """Minimal MHR70/Goliath40 conditioning schema. | |
| The exact keypoint names/order and no-finger link closure were extracted from | |
| ``facebookresearch/sapiens2`` revision | |
| ``0e51c12d7c7257d88431b2d50e523a7b03004854`` and remain subject to the | |
| Sapiens2 License. A copy is kept at | |
| ``third_party/licenses/SAPIENS2_LICENSE.md``. The RGB palette, per-keypoint | |
| color policy, and renderer implementation are original 4DAnyone material | |
| licensed under Apache-2.0. | |
| """ | |
| from __future__ import annotations | |
| # The exact names/order below are derived from Sapiens2, Copyright (c) Meta | |
| # Platforms, Inc. and affiliates, under the Sapiens2 License noted above. | |
| KEYPOINT_NAMES = ( | |
| "nose", | |
| "left-eye", | |
| "right-eye", | |
| "left-ear", | |
| "right-ear", | |
| "left-shoulder", | |
| "right-shoulder", | |
| "left-elbow", | |
| "right-elbow", | |
| "left-hip", | |
| "right-hip", | |
| "left-knee", | |
| "right-knee", | |
| "left-ankle", | |
| "right-ankle", | |
| "left-big-toe-tip", | |
| "left-small-toe-tip", | |
| "left-heel", | |
| "right-big-toe-tip", | |
| "right-small-toe-tip", | |
| "right-heel", | |
| "right-thumb-tip", | |
| "right-thumb-first-joint", | |
| "right-thumb-second-joint", | |
| "right-thumb-third-joint", | |
| "right-index-tip", | |
| "right-index-first-joint", | |
| "right-index-second-joint", | |
| "right-index-third-joint", | |
| "right-middle-tip", | |
| "right-middle-first-joint", | |
| "right-middle-second-joint", | |
| "right-middle-third-joint", | |
| "right-ring-tip", | |
| "right-ring-first-joint", | |
| "right-ring-second-joint", | |
| "right-ring-third-joint", | |
| "right-pinky-tip", | |
| "right-pinky-first-joint", | |
| "right-pinky-second-joint", | |
| "right-pinky-third-joint", | |
| "right-wrist", | |
| "left-thumb-tip", | |
| "left-thumb-first-joint", | |
| "left-thumb-second-joint", | |
| "left-thumb-third-joint", | |
| "left-index-tip", | |
| "left-index-first-joint", | |
| "left-index-second-joint", | |
| "left-index-third-joint", | |
| "left-middle-tip", | |
| "left-middle-first-joint", | |
| "left-middle-second-joint", | |
| "left-middle-third-joint", | |
| "left-ring-tip", | |
| "left-ring-first-joint", | |
| "left-ring-second-joint", | |
| "left-ring-third-joint", | |
| "left-pinky-tip", | |
| "left-pinky-first-joint", | |
| "left-pinky-second-joint", | |
| "left-pinky-third-joint", | |
| "left-wrist", | |
| "left-olecranon", | |
| "right-olecranon", | |
| "left-cubital-fossa", | |
| "right-cubital-fossa", | |
| "left-acromion", | |
| "right-acromion", | |
| "neck", | |
| ) | |
| # First-party 4DAnyone color palette, licensed under Apache-2.0. | |
| BLUE = (116, 192, 252) | |
| GREEN = (130, 186, 129) | |
| ORANGE = (248, 129, 81) | |
| TEAL = (99, 230, 190) | |
| YELLOW = (255, 212, 59) | |
| PINK = (229, 153, 247) | |
| PURPLE = (177, 151, 252) | |
| RED = (255, 135, 135) | |
| # The schema ids and link endpoints are Sapiens2-derived. The RGB assignments | |
| # are first-party 4DAnyone material. | |
| # (schema id, first keypoint, second keypoint, RGB, major) | |
| LINKS = ( | |
| (0, 13, 11, TEAL, True), | |
| (1, 11, 9, TEAL, True), | |
| (2, 14, 12, YELLOW, True), | |
| (3, 12, 10, YELLOW, True), | |
| (4, 9, 10, BLUE, True), | |
| (5, 5, 9, GREEN, True), | |
| (6, 6, 10, ORANGE, True), | |
| (7, 5, 6, BLUE, True), | |
| (8, 5, 7, TEAL, True), | |
| (9, 6, 8, YELLOW, True), | |
| (10, 7, 62, TEAL, True), | |
| (11, 8, 41, YELLOW, True), | |
| (12, 1, 2, BLUE, True), | |
| (13, 0, 1, GREEN, True), | |
| (14, 0, 2, ORANGE, True), | |
| (15, 1, 3, GREEN, True), | |
| (16, 2, 4, ORANGE, True), | |
| (17, 3, 5, GREEN, True), | |
| (18, 4, 6, ORANGE, True), | |
| (19, 13, 15, TEAL, True), | |
| (20, 13, 16, TEAL, True), | |
| (21, 13, 17, TEAL, True), | |
| (22, 14, 18, YELLOW, True), | |
| (23, 14, 19, YELLOW, True), | |
| (24, 14, 20, YELLOW, True), | |
| (25, 62, 45, YELLOW, False), | |
| (29, 62, 49, PINK, False), | |
| (33, 62, 53, PURPLE, False), | |
| (37, 62, 57, RED, False), | |
| (41, 62, 61, TEAL, False), | |
| (45, 41, 24, YELLOW, False), | |
| (49, 41, 28, PINK, False), | |
| (53, 41, 32, PURPLE, False), | |
| (57, 41, 36, RED, False), | |
| (61, 41, 40, TEAL, False), | |
| (65, 5, 10, PURPLE, True), | |
| (66, 6, 9, PURPLE, True), | |
| (67, 3, 4, PURPLE, True), | |
| ) | |
| EXTRA_KEYPOINT_IDS = frozenset(range(63, 70)) | |
| def keypoint_color(keypoint_id: int) -> tuple[int, int, int]: | |
| name = KEYPOINT_NAMES[keypoint_id] | |
| if name == "nose" or name == "neck": | |
| return BLUE | |
| if name in {"left-eye", "left-ear"}: | |
| return GREEN | |
| if name in {"right-eye", "right-ear"}: | |
| return ORANGE | |
| if "thumb" in name: | |
| return YELLOW | |
| if "forefinger" in name or "index" in name: | |
| return PINK | |
| if "middle" in name: | |
| return PURPLE | |
| if "ring" in name: | |
| return RED | |
| if "pinky" in name: | |
| return TEAL | |
| return TEAL if name.startswith("left-") else YELLOW if name.startswith("right-") else BLUE | |
| VISIBLE_KEYPOINT_IDS = ( | |
| frozenset({index for _, first, second, _, _ in LINKS for index in (first, second)}) | EXTRA_KEYPOINT_IDS | |
| ) | |