from typing import NamedTuple, List, Optional | |
class Keypoint(NamedTuple): | |
x: float | |
y: float | |
score: float = 1.0 | |
id: int = -1 | |
class BodyResult(NamedTuple): | |
# Note: Using `Optional` instead of `|` operator as the ladder is a Python | |
# 3.10 feature. | |
# Annotator code should be Python 3.8 Compatible, as controlnet repo uses | |
# Python 3.8 environment. | |
# https://github.com/lllyasviel/ControlNet/blob/d3284fcd0972c510635a4f5abe2eeb71dc0de524/environment.yaml#L6 | |
keypoints: List[Optional[Keypoint]] | |
total_score: float = 0.0 | |
total_parts: int = 0 | |
HandResult = List[Keypoint] | |
FaceResult = List[Keypoint] | |
class PoseResult(NamedTuple): | |
body: BodyResult | |
left_hand: Optional[HandResult] | |
right_hand: Optional[HandResult] | |
face: Optional[FaceResult] | |