From d38341f7ea6b6bd543818e3115dc2ac4dcf5ba38 Mon Sep 17 00:00:00 2001 From: RyanOnTheInside <7623207+ryanontheinside@users.noreply.github.com> Date: Sat, 19 Apr 2025 16:04:47 -0400 Subject: [PATCH 1/3] feat: add mediapipe vision task --- README.MD | 117 +++- __init__.py | 53 +- .../mediapipe_vision/common/__init__.py | 0 .../common/base_detector_node.py | 134 ++++ .../common/base_visualization_nodes.py | 293 +++++++++ .../mediapipe_vision/common/model_loader.py | 113 ++++ .../common/universal_landmark_nodes.py | 597 ++++++++++++++++++ .../mediapipe_vision/face/__init__.py | 1 + .../face/detection/face_detection.py | 75 +++ .../face/detection/face_detection_mask.py | 155 +++++ .../detection/face_detection_visualization.py | 107 ++++ .../face/landmark/blendshape.py | 179 ++++++ .../face/landmark/face_landmark_detection.py | 101 +++ .../face_landmark_detection_visualization.py | 35 + .../face/landmark/face_masking.py | 109 ++++ .../face/landmark/head_pose.py | 219 +++++++ .../face/landmark/position.py | 33 + .../face/landmark/texture_warp.py | 60 ++ .../face/stylization/face_stylization.py | 81 +++ .../mediapipe_vision/hand/__init__.py | 1 + .../hand/gesture/gesture_visualiztion.py | 140 ++++ .../mediapipe_vision/hand/gesture/guesture.py | 85 +++ .../hand/landmark/hand_landmark.py | 89 +++ .../hand/landmark/hand_landmark_masking.py | 107 ++++ .../landmark/hand_landmark_visualization.py | 40 ++ .../hand/landmark/position.py | 39 ++ .../mediapipe_vision/holistic/__init__.py | 10 + .../holistic/holistic_landmark.py | 106 ++++ .../holistic_landmark_visualization.py | 202 ++++++ .../image_embedding/__init__.py | 1 + .../image_embedding/image_embeddings.py | 78 +++ .../mediapipe_vision/image_embedding/utils.py | 144 +++++ .../image_segmentation/__init__.py | 1 + .../image_segmentation/image_segmentation.py | 221 +++++++ .../image_segmentation_masking.py | 87 +++ .../interactive_segmentation/__init__.py | 1 + .../interactive_segmentation.py | 116 ++++ .../object_detection/__init__.py | 1 + .../object_detection/object_detection.py | 74 +++ .../object_detection_visualization.py | 106 ++++ .../mediapipe_vision/pose/__init__.py | 1 + .../mediapipe_vision/pose/pose_landmark.py | 94 +++ .../pose/pose_landmark_masking.py | 115 ++++ .../pose/pose_landmark_visualizer.py | 39 ++ .../mediapipe_vision/pose/position.py | 41 ++ .../realtimenodes/controls/mask_controls.py | 4 +- .../realtimenodes/controls/motion_controls.py | 6 +- .../controls/sequence_controls.py | 6 +- .../controls/state_management_controls.py | 4 +- .../realtimenodes/controls/value_controls.py | 6 +- node_wrappers/realtimenodes/logic/logic.py | 4 +- .../realtimenodes/specialized/__init__.py | 1 - .../realtimenodes/utils/utility_controls.py | 4 +- requirements.txt | 8 +- src/mediapipe_vision/__init__.py | 4 + .../face_detection/__init__.py | 1 + .../face_detection/detector.py | 131 ++++ .../face_landmark/__init__.py | 1 + .../face_landmark/detector.py | 133 ++++ .../face_stylization/__init__.py | 1 + .../face_stylization/detector.py | 67 ++ .../gesture_recognition/__init__.py | 1 + .../gesture_recognition/detector.py | 102 +++ .../hand_landmark/__init__.py | 1 + .../hand_landmark/detector.py | 131 ++++ .../holistic_landmark/__init__.py | 3 + .../holistic_landmark/detector.py | 241 +++++++ .../image_classification/__init__.py | 1 + .../image_embedding/__init__.py | 1 + .../image_embedding/detector.py | 86 +++ .../image_segmentation/__init__.py | 1 + .../image_segmentation/segmenter.py | 194 ++++++ .../interactive_segmentation/__init__.py | 1 + .../interactive_segmentation/detector.py | 113 ++++ src/mediapipe_vision/model_loader.py | 415 ++++++++++++ .../object_detection/__init__.py | 1 + .../object_detection/detector.py | 120 ++++ .../pose_landmark/__init__.py | 1 + .../pose_landmark/detector.py | 148 +++++ src/mediapipe_vision/types.py | 150 +++++ src/mediapipe_vision/utils/__init__.py | 12 + src/mediapipe_vision/utils/comfy_utils.py | 11 + src/mediapipe_vision/utils/delta_utils.py | 35 + src/mediapipe_vision/utils/download_utils.py | 156 +++++ src/mediapipe_vision/utils/image_utils.py | 44 ++ src/mediapipe_vision/utils/mask_utils.py | 26 + src/mediapipe_vision/utils/misc_utils.py | 29 + src/mediapipe_vision/utils/model_utils.py | 148 +++++ .../utils/timestamp_provider.py | 21 + 89 files changed, 6922 insertions(+), 53 deletions(-) create mode 100644 node_wrappers/mediapipe_vision/common/__init__.py create mode 100644 node_wrappers/mediapipe_vision/common/base_detector_node.py create mode 100644 node_wrappers/mediapipe_vision/common/base_visualization_nodes.py create mode 100644 node_wrappers/mediapipe_vision/common/model_loader.py create mode 100644 node_wrappers/mediapipe_vision/common/universal_landmark_nodes.py create mode 100644 node_wrappers/mediapipe_vision/face/__init__.py create mode 100644 node_wrappers/mediapipe_vision/face/detection/face_detection.py create mode 100644 node_wrappers/mediapipe_vision/face/detection/face_detection_mask.py create mode 100644 node_wrappers/mediapipe_vision/face/detection/face_detection_visualization.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/blendshape.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection_visualization.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/face_masking.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/head_pose.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/position.py create mode 100644 node_wrappers/mediapipe_vision/face/landmark/texture_warp.py create mode 100644 node_wrappers/mediapipe_vision/face/stylization/face_stylization.py create mode 100644 node_wrappers/mediapipe_vision/hand/__init__.py create mode 100644 node_wrappers/mediapipe_vision/hand/gesture/gesture_visualiztion.py create mode 100644 node_wrappers/mediapipe_vision/hand/gesture/guesture.py create mode 100644 node_wrappers/mediapipe_vision/hand/landmark/hand_landmark.py create mode 100644 node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_masking.py create mode 100644 node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_visualization.py create mode 100644 node_wrappers/mediapipe_vision/hand/landmark/position.py create mode 100644 node_wrappers/mediapipe_vision/holistic/__init__.py create mode 100644 node_wrappers/mediapipe_vision/holistic/holistic_landmark.py create mode 100644 node_wrappers/mediapipe_vision/holistic/holistic_landmark_visualization.py create mode 100644 node_wrappers/mediapipe_vision/image_embedding/__init__.py create mode 100644 node_wrappers/mediapipe_vision/image_embedding/image_embeddings.py create mode 100644 node_wrappers/mediapipe_vision/image_embedding/utils.py create mode 100644 node_wrappers/mediapipe_vision/image_segmentation/__init__.py create mode 100644 node_wrappers/mediapipe_vision/image_segmentation/image_segmentation.py create mode 100644 node_wrappers/mediapipe_vision/image_segmentation/image_segmentation_masking.py create mode 100644 node_wrappers/mediapipe_vision/interactive_segmentation/__init__.py create mode 100644 node_wrappers/mediapipe_vision/interactive_segmentation/interactive_segmentation.py create mode 100644 node_wrappers/mediapipe_vision/object_detection/__init__.py create mode 100644 node_wrappers/mediapipe_vision/object_detection/object_detection.py create mode 100644 node_wrappers/mediapipe_vision/object_detection/object_detection_visualization.py create mode 100644 node_wrappers/mediapipe_vision/pose/__init__.py create mode 100644 node_wrappers/mediapipe_vision/pose/pose_landmark.py create mode 100644 node_wrappers/mediapipe_vision/pose/pose_landmark_masking.py create mode 100644 node_wrappers/mediapipe_vision/pose/pose_landmark_visualizer.py create mode 100644 node_wrappers/mediapipe_vision/pose/position.py delete mode 100644 node_wrappers/realtimenodes/specialized/__init__.py create mode 100644 src/mediapipe_vision/__init__.py create mode 100644 src/mediapipe_vision/face_detection/__init__.py create mode 100644 src/mediapipe_vision/face_detection/detector.py create mode 100644 src/mediapipe_vision/face_landmark/__init__.py create mode 100644 src/mediapipe_vision/face_landmark/detector.py create mode 100644 src/mediapipe_vision/face_stylization/__init__.py create mode 100644 src/mediapipe_vision/face_stylization/detector.py create mode 100644 src/mediapipe_vision/gesture_recognition/__init__.py create mode 100644 src/mediapipe_vision/gesture_recognition/detector.py create mode 100644 src/mediapipe_vision/hand_landmark/__init__.py create mode 100644 src/mediapipe_vision/hand_landmark/detector.py create mode 100644 src/mediapipe_vision/holistic_landmark/__init__.py create mode 100644 src/mediapipe_vision/holistic_landmark/detector.py create mode 100644 src/mediapipe_vision/image_classification/__init__.py create mode 100644 src/mediapipe_vision/image_embedding/__init__.py create mode 100644 src/mediapipe_vision/image_embedding/detector.py create mode 100644 src/mediapipe_vision/image_segmentation/__init__.py create mode 100644 src/mediapipe_vision/image_segmentation/segmenter.py create mode 100644 src/mediapipe_vision/interactive_segmentation/__init__.py create mode 100644 src/mediapipe_vision/interactive_segmentation/detector.py create mode 100644 src/mediapipe_vision/model_loader.py create mode 100644 src/mediapipe_vision/object_detection/__init__.py create mode 100644 src/mediapipe_vision/object_detection/detector.py create mode 100644 src/mediapipe_vision/pose_landmark/__init__.py create mode 100644 src/mediapipe_vision/pose_landmark/detector.py create mode 100644 src/mediapipe_vision/types.py create mode 100644 src/mediapipe_vision/utils/__init__.py create mode 100644 src/mediapipe_vision/utils/comfy_utils.py create mode 100644 src/mediapipe_vision/utils/delta_utils.py create mode 100644 src/mediapipe_vision/utils/download_utils.py create mode 100644 src/mediapipe_vision/utils/image_utils.py create mode 100644 src/mediapipe_vision/utils/mask_utils.py create mode 100644 src/mediapipe_vision/utils/misc_utils.py create mode 100644 src/mediapipe_vision/utils/model_utils.py create mode 100644 src/mediapipe_vision/utils/timestamp_provider.py diff --git a/README.MD b/README.MD index 0142302..181b843 100644 --- a/README.MD +++ b/README.MD @@ -4,7 +4,8 @@ A growing suite of nodes for real-time ComfyUI workflows. Features include value The intention for this repository is to build a suite of nodes that can be used in the burgeoning real-time diffusion space. Contributions are welcome! -## Nodes + +## Control Nodes ### Value Controls 🎚️ - **FloatControl**: Outputs a floating point value that changes over time using various patterns (sine wave, bounce, random walk, etc). @@ -27,17 +28,11 @@ The intention for this repository is to build a suite of nodes that can be used - **DTypeConverter**: Convert masks between different data types (float16, uint8, float32, float64). - **FastWebcamCapture**: High-performance webcam capture node with resizing capabilities. - **SimilarityFilter**: Filter out similar consecutive images and control downstream execution. Perfect for optimizing real-time workflows by skipping redundant processing of similar frames. + +### Logic 🧠 - **LazyCondition**: Powerful conditional execution node that supports any input type. Uses lazy evaluation to truly skip execution of unused paths and maintains state to avoid feedback loops. -## Movement Patterns 🔄 -All value and motion controls support various movement patterns: -- **Sine**: Smooth sinusoidal motion -- **Triangle**: Linear interpolation with smooth direction changes -- **Sawtooth**: Linear interpolation with sharp resets -- **Square**: Instant transitions between min/max values -- **Static**: No movement (constant value) -- **and more** ## Usage 📖 @@ -65,6 +60,74 @@ Use utility nodes to optimize and control your workflow: - **SimilarityFilter**: Skip processing of similar frames by comparing consecutive images. Great for optimizing real-time workflows by only processing frames that have meaningful changes. - **LazyCondition**: Create conditional execution paths that truly skip processing of unused branches. Works with any input type (images, latents, text, numbers) and maintains state of the last successful output to avoid feedback loops. +## 🔮 MediaPipe Vision + +### ✨ Overview + +This repository provides a complete implementation of Google MediaPipe vision tasks for ComfyUI. It enables computer vision capabilities that can be used for interactive AI art, responsive interfaces, motion tracking, and advanced masking workflows. + +### 🚀 Features + +| Category | Available Tools | +|----------|-------------| +| **Face Analysis** | Face detection, face mesh (478 points), blendshapes, head pose | +| **Body Tracking** | Pose estimation (33 landmarks), segmentation masks | +| **Hand Analysis** | Hand tracking (21 landmarks per hand), gesture recognition | +| **Image Processing** | Object detection, image segmentation, image embeddings | +| **Creative Tools** | Face stylization, interactive segmentation | + +### 📋 Supported MediaPipe Tasks + +* **Face Detection:** Face bounding boxes and keypoints +* **Face Landmark Detection:** Face mesh landmarks with expression analysis +* **Hand Landmark Detection:** Hand position tracking with 21 landmarks +* **Pose Landmark Detection:** Body pose tracking with 33 landmarks +* **Object Detection:** Common object detection using models like EfficientDet +* **Image Segmentation:** Category-based image segmentation +* **Gesture Recognition:** Recognition of common hand gestures +* **Image Embedding:** Feature vector generation for image similarity +* **Interactive Segmentation:** User-guided image masking +* **Face Stylization:** Artistic style application to faces +* **Holistic Landmark Detection:** Full-body landmark detection (legacy) + +> **Note:** Holistic landmark detection uses the legacy MediaPipe API as we await the official Tasks API release. + +### ⚙️ Landmark System + +The project's landmark system allows extracting and using position data: + +#### Position Extraction + +**Landmark Position Extractors** access coordinate data from any landmark: +- Extract x, y, z positions from face, hand, or pose landmarks +- Access visibility and presence information where available +- Access world coordinates when available (hand and pose) +- Input landmark indices directly to access any point +- Process batches for multi-frame workflows + +#### Position Processing + +Several node types work with landmark position data: + +- **Delta Controls** - Track movement and map changes to parameter values +- **Proximity Nodes** - Calculate distances between landmarks +- **Masking Nodes** - Generate masks centered at landmark positions +- **Head Pose Extraction** - Calculate yaw, pitch, roll from face landmarks +- **Blendshape Analysis** - Extract facial expression parameters + +### Example Workflow + +``` +Load Face Landmarker → Face Landmarker ← Image Input + | + ↓ landmarks +Face Landmark Position (Index: 1) → x,y,z coordinates + | + ↓ x,y,z +Position Delta Float Control → value → ComfyUI Parameter +``` + + ## Examples 🎬 ### Value Control Demo @@ -97,6 +160,7 @@ git clone https://github.com/ryanontheinside/ComfyUI_RealTimeNodes cd ComfyUI_RealTimeNodes pip install -r requirements.txt ``` +> **Note:** For MediaPipe, GPU Support varies by platform. For Linux, see [these instructions](https://ai.google.dev/edge/mediapipe/framework/getting_started/gpu_support). ## Coming Soon 🚀 @@ -116,19 +180,37 @@ This is an evolving project that aims to expand the real-time capabilities of Co ### Contributing 🤝 -Your feedback and contributions are more than welcome! This project grows stronger with community input. +This project provides flexible infrastructure for computer vision in ComfyUI. If you have ideas for: + +- Creative AI interactions using vision +- Specific landmark tracking or detection needs +- Real-time vision workflows +- Improvements to the current implementation + +Please open an issue, even if you're not sure how to implement it. + +The aim is to **iterate quickly** to keep up with this burgeoning field of real-time ComfyUI -- Have an idea? Open an issue! 💡 -- Found a bug? Open an issue! 🐛 -- Made an improvement? Submit a PR! 🎉 -- Want to help? Join the discussion! 💬 Please visit our [GitHub Issues](https://github.com/ryanontheinside/ComfyUI_RealTimeNodes/issues) page to contribute. ## Related Projects 🔗 -### ComfyUI_RyanOnTheInside - Everything Reactivity ⚡ -Make anything react to anything in your ComfyUI workflows. [ComfyUI_RyanOnTheInside](https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside) - my main custom nodes suite that brings complete reactive control to standard ComfyUI workflows: +## 🔗 Related Projects + +### [ComfyUI_ControlFreak](https://github.com/ryanontheinside/ComfyUI_ControlFreak) +Universal MIDI & Gamepad Mapping in ComfyUI. Map any MIDI controller or gamepad to any parameter in your ComfyUI workflow for intuitive, hands-on control of your generative art. Perfect for live performances, interactive installations, and streamlined creative workflows. + +### [comfystream](https://github.com/yondonfu/comfystream) +A real-time streaming framework for ComfyUI that enables running workflows continuously on video streams, perfect for +combining with MediaPipe vision capabilities. + +### [ComfyUI-Stream-Pack](https://github.com/livepeer/ComfyUI-Stream-Pack) +A collection of ComfyUI nodes for multimedia streaming applications. Combines video processing with generative models +for real-time media effects. + +### [ComfyUI_RyanOnTheInside](https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside) - Everything Reactivity ⚡ +Make anything react to anything in your ComfyUI workflows. - my main custom nodes suite that brings complete reactive control to standard ComfyUI workflows: - Dynamic node relationships - React to audio, MIDI, motion, time, depth, color, Whisper, and more @@ -143,4 +225,5 @@ Make anything react to anything in your ComfyUI workflows. [ComfyUI_RyanOnTheIns - Reactive DepthFlow - Actually more -Use it alongside these Control Nodes to master parameter control in both the batch and real-time paradigms in ComfyUI! The POWER!! \ No newline at end of file +Use it alongside these Control Nodes to master parameter control in both the batch and real-time paradigms in ComfyUI! The POWER!! + diff --git a/__init__.py b/__init__.py index 0516b7c..2bbc2a8 100644 --- a/__init__.py +++ b/__init__.py @@ -5,7 +5,7 @@ import re import traceback # Directory containing node wrapper modules relative to this __init__.py -WRAPPER_DIR = "node_wrappers.realtimenodes" +WRAPPER_DIR = "node_wrappers" NODE_CLASS_MAPPINGS = {} NODE_DISPLAY_NAME_MAPPINGS = {} @@ -13,7 +13,7 @@ print("\033[93m" + "[ComfyUI_RealtimeNodes] Loading nodes...") def load_nodes_from_directory(package_path): """Dynamically loads nodes from Python files in a directory.""" - loaded_nodes = {} + loaded_nodes = {} loaded_display_names = {} # Calculate absolute path to the package directory @@ -61,22 +61,43 @@ def load_nodes_from_directory(package_path): # --- Main Loading Logic --- -# Define the subdirectories within WRAPPER_DIR to scan -# Order might matter if there are dependencies between modules, though ideally there shouldn't be -subdirs_to_scan = [ - "controls", - "media", - "utils", - "specialized" # Add other subdirs like 'specialized' if needed -] +# Get base path for the node_wrappers directory +base_dir_path = os.path.join(os.path.dirname(__file__), WRAPPER_DIR) -# Iterate through specified subdirectories and load nodes -for subdir in subdirs_to_scan: - dir_path = f"{WRAPPER_DIR}.{subdir}" - nodes, display_names = load_nodes_from_directory(dir_path) - NODE_CLASS_MAPPINGS.update(nodes) - NODE_DISPLAY_NAME_MAPPINGS.update(display_names) +# Recursively scan all directories and subdirectories +def scan_for_modules(base_path, base_package): + """Recursively scan directories for module files""" + try: + for item in os.listdir(base_path): + item_path = os.path.join(base_path, item) + + # Skip __pycache__ and files/dirs starting with __ + if item.startswith('__'): + continue + + if os.path.isdir(item_path): + # Handle subdirectory + subdir_package = f"{base_package}.{item}" + + # First load .py files in this directory + try: + nodes, display_names = load_nodes_from_directory(subdir_package) + NODE_CLASS_MAPPINGS.update(nodes) + NODE_DISPLAY_NAME_MAPPINGS.update(display_names) + except Exception as e: + print(f"\033[91m" + f"[ComfyUI_RealtimeNodes] Error processing directory {subdir_package}: {e}") + traceback.print_exc() + + # Then recursively process subdirectories + subdir_path = os.path.join(base_path, item) + scan_for_modules(subdir_path, subdir_package) + except Exception as e: + print(f"\033[91m" + f"[ComfyUI_RealtimeNodes] Error scanning directory {base_path}: {e}") + traceback.print_exc() +# Start recursive scanning from the base directory +print(f"\033[92m" + f"[ComfyUI_RealtimeNodes] Scanning node_wrappers directory for modules...") +scan_for_modules(base_dir_path, WRAPPER_DIR) suffix = " 🕒🅡🅣🅝" diff --git a/node_wrappers/mediapipe_vision/common/__init__.py b/node_wrappers/mediapipe_vision/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/node_wrappers/mediapipe_vision/common/base_detector_node.py b/node_wrappers/mediapipe_vision/common/base_detector_node.py new file mode 100644 index 0000000..662c681 --- /dev/null +++ b/node_wrappers/mediapipe_vision/common/base_detector_node.py @@ -0,0 +1,134 @@ +"""Base node wrapper for MediaPipe Vision detectors.""" + +import torch +import logging +from typing import Any, Dict, List, Tuple, Optional, Type, Callable, Union + +logger = logging.getLogger(__name__) + +class BaseMediaPipeDetectorNode: + """Base class for all MediaPipe detector nodes in ComfyUI. + + This class captures common patterns across detector nodes like: + - Detector instance management + - Model validation + - Common input parameters + - Cleanup in __del__ + + Parameter Naming Standards for Subclasses: + ----------------------------------------- + To maintain consistency across detector types, use these standardized parameter names: + + - min_confidence: Main confidence threshold for detection (replaces various min_detection_confidence, + score_threshold, etc.) + - min_tracking_confidence: Confidence threshold for tracking objects across video frames + - min_presence_confidence: Confidence threshold for presence of an object in a frame + - max_results: Maximum number of detections to return (replaces num_poses, num_hands, etc.) + + When implementing specific detector nodes, map these standardized parameter names to + the appropriate underlying MediaPipe API parameters in the detect() method. + """ + + # To be overridden by subclasses + DETECTOR_CLASS = None # Subclasses must set to their specific detector class + MODEL_INFO_TYPE = "MEDIAPIPE_MODEL_INFO" # Override with specific model info type + EXPECTED_TASK_TYPE = None # Must be set to match the MODEL_INFO_TYPE task_type field + CATEGORY = "Realtime Nodes/MediaPipe Vision/Base" # Override with specific category + RETURN_TYPES = tuple() # Must be set by subclass + RETURN_NAMES = tuple() # Must be set by subclass + FUNCTION = "detect" # Default function name, can be overridden + DESCRIPTION = "" # Override with specific node description + + def __init__(self): + """Initialize with empty detector and model path.""" + self._detector = None + self._model_path = None + + @classmethod + def INPUT_TYPES(cls): + """Define common input types for detector nodes.""" + return { + "required": { + "image": ("IMAGE", {"tooltip": "Input image for detection"}), + "model_info": (cls.MODEL_INFO_TYPE, {"tooltip": f"Model loaded from the appropriate loader node"}), + "running_mode": (["image", "video"], { + "default": "video", + "tooltip": "Processing mode: 'image' for single images, 'video' for sequences/streams" + }), + "delegate": (["cpu", "gpu"], { + "default": "cpu", + "tooltip": "Processing device - GPU is faster but CPU is more compatible with all systems" + }), + } + } + # Subclasses should extend this with additional parameters + + def validate_model_info(self, model_info: Dict) -> str: + """Validate model_info and return model path.""" + if not isinstance(model_info, dict): + raise ValueError(f"Invalid model_info provided. Expected dictionary, got {type(model_info)}") + + task_type = model_info.get('task_type') + if task_type != self.EXPECTED_TASK_TYPE: + raise ValueError(f"Invalid model_info provided. Expected task_type '{self.EXPECTED_TASK_TYPE}', got '{task_type}'") + + model_path = model_info.get('model_path') + if not model_path: + raise ValueError("Model path not found or invalid in model_info") + + return model_path + + def initialize_or_update_detector(self, model_path: str): + """Initialize detector or update if model path changed.""" + if self.DETECTOR_CLASS is None: + raise NotImplementedError("Subclasses must set DETECTOR_CLASS to their specific detector class") + + if self._detector is None or self._model_path != model_path: + # Close existing detector if needed + if self._detector and hasattr(self._detector, 'close'): + try: + logger.info(f"Closing existing detector for {self._model_path}") + self._detector.close() + except Exception as e: + logger.warning(f"Error closing detector: {e}") + + # Create new detector + logger.info(f"Creating new {self.DETECTOR_CLASS.__name__} instance for {model_path}") + self._detector = self.DETECTOR_CLASS(model_path) + self._model_path = model_path + elif not hasattr(self._detector, '_detector_instance'): + # Re-initialize if internal instance is missing + logger.warning(f"Re-initializing detector wrapper due to missing internal instance") + self._detector = self.DETECTOR_CLASS(model_path) + self._model_path = model_path + + return self._detector + + def detect(self, **kwargs): + """ + Main detection function, should be implemented by subclasses. + This is a placeholder that subclasses can use as a template. + """ + # Basic implementation that subclasses can override + + # 1. Extract and validate model_info + model_info = kwargs.get('model_info') + model_path = self.validate_model_info(model_info) + + # 2. Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # 3. Call detector's detect method with appropriate parameters + # This part should be implemented by subclasses + + raise NotImplementedError("Subclasses must implement or override the detect method") + + def __del__(self): + """Clean up resources by closing detector.""" + if hasattr(self, '_detector') and self._detector and hasattr(self._detector, 'close'): + try: + logger.info(f"Closing detector instance in __del__ for {self._model_path}") + self._detector.close() + except Exception as e: + logger.warning(f"Error closing detector in __del__: {e}") + self._detector = None \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/common/base_visualization_nodes.py b/node_wrappers/mediapipe_vision/common/base_visualization_nodes.py new file mode 100644 index 0000000..594fa0f --- /dev/null +++ b/node_wrappers/mediapipe_vision/common/base_visualization_nodes.py @@ -0,0 +1,293 @@ +import logging +from typing import List, Dict, Tuple, Any, Optional, Type +import cv2 +import numpy as np + +from ....src.mediapipe_vision.utils.image_utils import convert_to_cv2, convert_to_tensor + +logger = logging.getLogger(__name__) + +# Default font setup - can be used by all visualization classes +DEFAULT_FONT = cv2.FONT_HERSHEY_SIMPLEX +DEFAULT_FONT_SCALE = 0.5 +DEFAULT_FONT_THICKNESS = 1 + +class BaseLandmarkVisualizationNode: + """Base class for landmark visualization nodes.""" + CATEGORY = "Realtime Nodes/MediaPipe Vision/Visualization" + RETURN_TYPES = ("IMAGE",) + FUNCTION = "draw_visualizations" + + # --- To be overridden by subclasses --- + LANDMARKS_TYPE = "ANY" # The specific ComfyUI landmark type string (e.g., "FACE_LANDMARKS") + CONNECTIONS = None # MediaPipe connections list (e.g., mp.solutions.face_mesh.FACEMESH_TESSELATION) + DEFAULT_DRAW_POINTS = True + DEFAULT_POINT_COLOR = "#FFFFFF" + DEFAULT_POINT_RADIUS = 3 + DEFAULT_DRAW_CONNECTIONS = True + DEFAULT_CONNECTION_COLOR = "#00FF00" + DEFAULT_CONNECTION_THICKNESS = 2 + SUPPORTS_VISIBILITY = False # Does this landmark type provide visibility scores? + # --- End Override Section --- + + @classmethod + def INPUT_TYPES(cls): + """Generate input types based on class properties.""" + inputs = { + "required": { + "landmarks": (cls.LANDMARKS_TYPE,), + "image": ("IMAGE",), + }, + "optional": { + "draw_points": ("BOOLEAN", {"default": cls.DEFAULT_DRAW_POINTS}), + "point_color": ("STRING", {"default": cls.DEFAULT_POINT_COLOR}), + "point_radius": ("INT", {"default": cls.DEFAULT_POINT_RADIUS, "min": 1, "max": 10}), + "draw_connections": ("BOOLEAN", {"default": cls.DEFAULT_DRAW_CONNECTIONS}), + "connection_color": ("STRING", {"default": cls.DEFAULT_CONNECTION_COLOR}), + "connection_thickness": ("INT", {"default": cls.DEFAULT_CONNECTION_THICKNESS, "min": 1, "max": 10}), + } + } + + if cls.SUPPORTS_VISIBILITY: + inputs["optional"]["min_visibility"] = ("FLOAT", { + "default": 0.5, "min": 0.0, "max": 1.0, "step": 0.05, + "tooltip": "Minimum visibility score to draw a point/connection endpoint" + }) + + return inputs + + def draw_visualizations(self, landmarks, image, **kwargs): + """Main execution function: handles batching, image conversion, and calls drawing logic.""" + + # Extract relevant optional arguments using class defaults + draw_points = kwargs.get('draw_points', self.DEFAULT_DRAW_POINTS) + point_color = kwargs.get('point_color', self.DEFAULT_POINT_COLOR) + point_radius = kwargs.get('point_radius', self.DEFAULT_POINT_RADIUS) + draw_connections = kwargs.get('draw_connections', self.DEFAULT_DRAW_CONNECTIONS) + connection_color = kwargs.get('connection_color', self.DEFAULT_CONNECTION_COLOR) + connection_thickness = kwargs.get('connection_thickness', self.DEFAULT_CONNECTION_THICKNESS) + min_visibility = kwargs.get('min_visibility', 0.5) # Default if not supported/provided + + if not landmarks: + logger.warning(f"{self.__class__.__name__}: No landmarks provided.") + return (image,) + + cv2_images = convert_to_cv2(image) + processed_cv2_images = [] + batch_size = len(cv2_images) + + if len(landmarks) != batch_size: + logger.error(f"{self.__class__.__name__}: Batch size mismatch. Images: {batch_size}, Landmark sets: {len(landmarks)}. Cannot proceed reliably.") + return (image,) + + # Convert hex colors to BGR tuples + point_color_bgr = self._hex_to_bgr(point_color) + connection_color_bgr = self._hex_to_bgr(connection_color) + + for i, cv2_image in enumerate(cv2_images): + height, width = cv2_image.shape[:2] + landmarks_for_image = landmarks[i] # List of landmark results for this image item + + if not landmarks_for_image: + processed_cv2_images.append(cv2_image) # Append unmodified image + continue + + # Iterate through all detections (faces, hands, poses) in this image item + for single_detection_result in landmarks_for_image: + self.draw_single_detection(cv2_image, width, height, single_detection_result, + draw_points, point_color_bgr, point_radius, + draw_connections, connection_color_bgr, connection_thickness, + min_visibility) + + processed_cv2_images.append(cv2_image) + + output_image = convert_to_tensor(processed_cv2_images) + return (output_image,) + + def _hex_to_bgr(self, hex_color): + """Convert hex color string to BGR tuple.""" + hex_color = hex_color.lstrip('#') + r, g, b = tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4)) + return (b, g, r) # OpenCV uses BGR + + def draw_single_detection(self, cv2_image, width: int, height: int, + detection_result: Any, + draw_points: bool, point_color, point_radius: int, + draw_connections: bool, connection_color, connection_thickness: int, + min_visibility: float): + """Draws landmarks and connections for a single detected object (face, hand, pose).""" + + # Extract the actual list of landmarks (this might vary slightly based on MediaPipe result structure) + landmark_list = self.get_landmark_list(detection_result) + if not landmark_list: + return # Skip if no landmarks found for this detection + + points = {} + # Process landmarks: calculate coordinates and optionally draw points + for lm in landmark_list: + # Check visibility if supported + is_visible = True + if self.SUPPORTS_VISIBILITY: + vis = lm.visibility if hasattr(lm, 'visibility') and lm.visibility is not None else 1.0 + is_visible = vis >= min_visibility + + if is_visible: + cx, cy = int(lm.x * width), int(lm.y * height) + points[lm.index] = (cx, cy) # Store denormalized point coordinates + + if draw_points: + cv2.circle(cv2_image, (cx, cy), point_radius, point_color, -1) + + # Draw connections if enabled and applicable + if draw_connections and self.CONNECTIONS and points: + for connection in self.CONNECTIONS: + start_idx = connection[0] + end_idx = connection[1] + # Draw connection only if both points are present (i.e., passed visibility check) + if start_idx in points and end_idx in points: + cv2.line(cv2_image, points[start_idx], points[end_idx], connection_color, connection_thickness) + + def get_landmark_list(self, detection_result: Any) -> Optional[List[Any]]: + """Abstract method to extract the list of landmark objects from a single detection result. + Needs to be implemented by subclasses based on the specific MediaPipe result structure. + e.g., for hands/pose: return detection_result.landmarks + for face: return detection_result (it's already the list) + """ + raise NotImplementedError("Subclasses must implement get_landmark_list") + + +class BaseDetectionVisualizationNode: + """Base class for visualization nodes that need to draw bounding boxes and labels. + + This can be used for object detection, face detection, and similar tasks + that require drawing boxes and text labels with a consistent font rendering approach. + """ + CATEGORY = "Realtime Nodes/MediaPipe Vision/Visualization" + RETURN_TYPES = ("IMAGE",) + FUNCTION = "draw_visualizations" + + # Default font settings + FONT = DEFAULT_FONT + FONT_SCALE = DEFAULT_FONT_SCALE + FONT_THICKNESS = DEFAULT_FONT_THICKNESS + + @classmethod + def get_text_dimensions(cls, text, font_scale=None, thickness=None): + """Gets text dimensions using cv2. + + Args: + text: The text to measure + font_scale: The font scale (defaults to cls.FONT_SCALE) + thickness: The font thickness (defaults to cls.FONT_THICKNESS) + + Returns: + Tuple of (width, height) in pixels + """ + if font_scale is None: + font_scale = cls.FONT_SCALE + if thickness is None: + thickness = cls.FONT_THICKNESS + + try: + (text_width, text_height), baseline = cv2.getTextSize( + text, cls.FONT, font_scale, thickness + ) + return text_width, text_height + baseline + except Exception as e: + logger.error(f"Error measuring text dimensions: {e}") + return 100, 20 # Default fallback + + def _hex_to_bgr(self, hex_color): + """Convert hex color string to BGR tuple.""" + hex_color = hex_color.lstrip('#') + r, g, b = tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4)) + return (b, g, r) # OpenCV uses BGR + + def draw_text_with_background(self, image, text, position, + text_color="#FFFFFF", bg_color="#000000", + padding=(4, 2), font_scale=None, thickness=None): + """Draws text with a background rectangle. + + Args: + image: cv2 image to draw on + text: Text to draw + position: (x, y) position for top-left of text + text_color: Hex color for text + bg_color: Hex color for background + padding: (x_pad, y_pad) padding around text + font_scale: Font scale (defaults to cls.FONT_SCALE) + thickness: Font thickness (defaults to cls.FONT_THICKNESS) + """ + if font_scale is None: + font_scale = self.FONT_SCALE + if thickness is None: + thickness = self.FONT_THICKNESS + + # Convert hex colors to BGR tuples + text_color_bgr = self._hex_to_bgr(text_color) + bg_color_bgr = self._hex_to_bgr(bg_color) + + x, y = position + text_width, text_height = self.get_text_dimensions(text, font_scale, thickness) + + # Draw background rectangle + x_pad, y_pad = padding + cv2.rectangle( + image, + (x, y), + (x + text_width + x_pad*2, y + text_height + y_pad*2), + bg_color_bgr, + -1 # Filled rectangle + ) + + # Draw text + cv2.putText( + image, + text, + (x + x_pad, y + text_height), + self.FONT, + font_scale, + text_color_bgr, + thickness + ) + + return text_width, text_height + + def process_batch(self, detections, image, drawing_function, **kwargs): + """Process a batch of images and detections. + + Args: + detections: List of detection results (one per image) + image: Batch of images as tensor + drawing_function: Function to call for each image + **kwargs: Additional arguments for the drawing function + + Returns: + Tuple with processed image tensor + """ + if not detections: + logger.warning(f"{self.__class__.__name__}: No detections provided.") + return (image,) + + cv2_images = convert_to_cv2(image) + processed_cv2_images = [] + batch_size = len(cv2_images) + + if len(detections) != batch_size: + logger.error(f"{self.__class__.__name__}: Batch size mismatch. Images: {batch_size}, Detection sets: {len(detections)}. Cannot proceed.") + return (image,) + + for i, cv2_image in enumerate(cv2_images): + height, width = cv2_image.shape[:2] + detections_for_image = detections[i] + + if not detections_for_image: + processed_cv2_images.append(cv2_image) + continue + + # Call the drawing function with the specific parameters + drawing_function(cv2_image, width, height, detections_for_image, **kwargs) + processed_cv2_images.append(cv2_image) + + output_image = convert_to_tensor(processed_cv2_images) + return (output_image,) \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/common/model_loader.py b/node_wrappers/mediapipe_vision/common/model_loader.py new file mode 100644 index 0000000..76ae1b6 --- /dev/null +++ b/node_wrappers/mediapipe_vision/common/model_loader.py @@ -0,0 +1,113 @@ +"""Node wrapper for MediaPipe Vision model loader.""" + +# Import necessary components from the source directory +from ....src.mediapipe_vision.model_loader import MediaPipeModelLoader, get_available_models +import logging +import traceback # For better error logging + +# Add import for MEDIAPIPE_MODELS dictionary and the get_model_description function +from ....src.mediapipe_vision.model_loader import MEDIAPIPE_MODELS, get_model_description + +logger = logging.getLogger(__name__) + +# Define a base class for MediaPipe model loading nodes +class MediaPipeModelLoaderBaseNode: + """Base ComfyUI node for loading MediaPipe Vision models. + + Inheriting classes MUST define the class variable TASK_TYPE. + + This node handles selecting the model variant for a specific task, + triggers the download/loading via the src.model_loader, + and returns a dictionary containing model information needed by other nodes. + """ + + # Define common category for all MediaPipe loaders + CATEGORY = "Realtime Nodes/MediaPipe Vision/Loaders" + # Inheriting classes MUST set this + TASK_TYPE = None # e.g., "face_detector", "hand_landmarker" + + @classmethod + def INPUT_TYPES(cls): + """Define input types for the node.""" + if cls.TASK_TYPE is None: + raise NotImplementedError("Subclasses of MediaPipeModelLoaderBaseNode must define TASK_TYPE") + + task_variants = [] + default_variant = "default" # Sensible default + + try: + task_variants = get_available_models(cls.TASK_TYPE) + if not task_variants: + logger.warning(f"No model variants found for task '{cls.TASK_TYPE}'. Defaulting to ['default'].") + task_variants = ["default"] # Fallback variants + default_variant = task_variants[0] if task_variants else default_variant + + except Exception as e: + logger.error(f"Failed to dynamically get available MediaPipe models for task {cls.TASK_TYPE}: {e}\n{traceback.format_exc()}") + # Use hardcoded fallbacks if dynamic loading fails + task_variants = ["default"] + default_variant = "default" + + # Create tooltip with model descriptions + tooltip = f"Select model variant for {cls.TASK_TYPE}." + + # Add model descriptions if available + tooltip += "\n\nModel Variants:" + for variant in task_variants: + description = get_model_description(cls.TASK_TYPE, variant) + tooltip += f"\n- {variant}: {description}" + + return { + "required": { + # Dropdown for selecting the model variant for the specific task + "model_variant": (task_variants, { + "default": default_variant, + "tooltip": tooltip + }), + } + } + + # Return a dictionary with model info, not the loader object itself + RETURN_TYPES = ("MEDIAPIPE_MODEL_INFO",) # Default, can be overridden by subclasses for specificity + RETURN_NAMES = ("model_info",) + FUNCTION = "load_and_get_info" + + def load_and_get_info(self, model_variant: str): # Removed task_type argument + """ + Loads the specified MediaPipe model using the src loader + and returns a dictionary with model information (path, task, variant). + Uses the TASK_TYPE defined by the subclass. + """ + if self.TASK_TYPE is None: + raise NotImplementedError("TASK_TYPE not defined in the subclass.") + + task_type = self.TASK_TYPE # Use the class variable + + logger.info(f"Attempting to load MediaPipe model: Task='{task_type}', Variant='{model_variant}'") + + # Use a temporary loader instance just to trigger the load/download logic + # The actual detector nodes will instantiate their own detectors using the path + loader = MediaPipeModelLoader() + # Pass the class's task_type here + success = loader.load_model(task_type, model_variant) + + if not success: + error_msg = f"Failed to load MediaPipe model for Task='{task_type}', Variant='{model_variant}'" + logger.error(error_msg) + # It's often better to raise an error to stop the workflow + raise RuntimeError(error_msg) + + # Get the essential model information + model_info = loader.get_model_info() # Should return {'model_path': ..., 'task_type': ..., 'model_variant': ...} + + # Ensure the info dict is populated correctly - get_model_info should ideally return all needed keys + if 'model_path' not in model_info or not model_info['model_path']: + raise RuntimeError(f"Failed to get valid model path from loader for {task_type}/{model_variant}") + if 'task_type' not in model_info: model_info['task_type'] = task_type + if 'model_variant' not in model_info: model_info['model_variant'] = model_variant + + logger.info(f"Successfully loaded model info: Path='{model_info.get('model_path')}', Task='{model_info.get('task_type')}', Variant='{model_info.get('model_variant')}'") + + # Return the dictionary containing model path and other relevant info + # The specific RETURN_TYPES are handled by the subclass definition + return (model_info,) diff --git a/node_wrappers/mediapipe_vision/common/universal_landmark_nodes.py b/node_wrappers/mediapipe_vision/common/universal_landmark_nodes.py new file mode 100644 index 0000000..2ceb8dc --- /dev/null +++ b/node_wrappers/mediapipe_vision/common/universal_landmark_nodes.py @@ -0,0 +1,597 @@ +import logging +from typing import Optional, List, Any, Tuple, Union +import math +import torch +import numpy as np +import cv2 +import collections +import typing # Add typing for Dict hint + +# Assuming types are correctly imported relative to this file's location +from ....src.mediapipe_vision.types import ( + FACE_LANDMARKS, HAND_LANDMARKS, POSE_LANDMARKS, + LandmarkPoint, FaceLandmarksResult, HandLandmarksResult, PoseLandmarksResult +) + +# Re-import needed utils if not available globally +from ....src.mediapipe_vision.utils.delta_utils import scale_value +from ....src.mediapipe_vision.utils.comfy_utils import AlwaysEqualProxy + +logger = logging.getLogger(__name__) + +MAX_POSITION_HISTORY = 50 # Matches MAX_LANDMARK_HISTORY for consistency +FLOAT_EQUALITY_TOLERANCE = 1e-6 # Same tolerance as base_delta_nodes + +class LandmarkPositionBaseNode: + #NOTE: use x,y,and z for the landmark position rather than LandmarkPoint object for max flexibility + """ + Base class for extracting position lists from specific landmark types. + Outputs values corresponding to the input batch size, using defaults for missing items. + Includes an 'is_valid' flag indicating successful extraction for each batch item. + Processes only the first detected object (e.g., face, hand) per batch item. + RETURN_TYPES declare the semantic type (FLOAT/BOOLEAN); the actual return value may be a list. + """ + FUNCTION = "extract_positions" + # Use base types for semantic declaration + RETURN_TYPES = ("FLOAT", "FLOAT", "FLOAT", "FLOAT", "FLOAT", "BOOLEAN") + RETURN_NAMES = ("x", "y", "z", "visibility", "presence", "is_valid") # Singular names + CATEGORY = "Realtime Nodes/MediaPipe Vision/Common/Utils" + + DEFAULT_VALUES = (0.0, 0.0, 0.0, 0.0, 0.0) + LANDMARKS_TYPE = "ANY_LANDMARKS" # Placeholder + + # INPUT_TYPES are defined in subclasses + + def extract_positions(self, landmarks: list, landmark_index: int, use_world_coordinates: bool = False) -> Tuple[List[float], List[float], List[float], List[float], List[float], List[bool]]: + """Extracts position and properties for the specified landmark across the entire batch, + padding with defaults and providing validity flags for missing items.""" + + x_coords = [] + y_coords = [] + z_coords = [] + vis_coords = [] + pres_coords = [] + is_valid_list = [] # New list to track validity + + if not isinstance(landmarks, list): + raise TypeError(f"{self.__class__.__name__}: Input landmarks is not a list. Received type: {type(landmarks)}.") + + batch_size = len(landmarks) + + # Iterate through the batch (List[...]) + for batch_idx in range(batch_size): + item_list = landmarks[batch_idx] + + current_x, current_y, current_z, current_vis, current_pres = self.DEFAULT_VALUES + is_valid = False # Assume invalid until proven otherwise + landmark_point: Optional[LandmarkPoint] = None + target_landmarks_list: Optional[List[LandmarkPoint]] = None + + # Check if item_list is valid and contains at least one result item + if isinstance(item_list, list) and item_list: + result_item = item_list[0] # Process only the first detected object + + if result_item is not None: + try: + # --- Determine Structure and Extract Landmark List --- + # Case 1: result_item is the list itself (FACE_LANDMARKS) + if isinstance(result_item, list): + target_landmarks_list = result_item + if use_world_coordinates and self.LANDMARKS_TYPE == "FACE_LANDMARKS": + logger.warning(f"World coordinates requested but not available for FACE_LANDMARKS. Using image coordinates.") + + # Case 2: result_item is an object with .landmarks (HAND/POSE_LANDMARKS) + elif hasattr(result_item, 'landmarks'): + landmarks_attr = getattr(result_item, 'landmarks', None) + if landmarks_attr is not None: + use_world = (use_world_coordinates and + self.LANDMARKS_TYPE != "FACE_LANDMARKS" and + hasattr(result_item, 'world_landmarks') and + getattr(result_item, 'world_landmarks', None)) + if use_world: + target_landmarks_list = result_item.world_landmarks + else: + target_landmarks_list = landmarks_attr + # else: target_landmarks_list remains None + + # --- Find Landmark Point by Index --- + if isinstance(target_landmarks_list, list) and target_landmarks_list: + landmark_point = next((lm for lm in target_landmarks_list if lm.index == landmark_index), None) + + except Exception as e: + logger.error(f"{self.__class__.__name__}: Unexpected error processing batch item {batch_idx}: {e}", exc_info=True) + # Keep landmark_point as None, is_valid as False + # else: item_list was not a list or was empty, keep defaults/invalid + + # --- Extract Values or Use Defaults, Set Validity --- + if landmark_point: + is_valid = True # Mark as valid since we found the point + current_x = landmark_point.x + current_y = landmark_point.y + current_z = landmark_point.z + current_vis = getattr(landmark_point, 'visibility', None) + current_pres = getattr(landmark_point, 'presence', None) + current_vis = current_vis if current_vis is not None else 0.0 + current_pres = current_pres if current_pres is not None else 0.0 + # else: defaults are used, is_valid remains False + + # Append values for this batch item + x_coords.append(current_x) + y_coords.append(current_y) + z_coords.append(current_z) + vis_coords.append(current_vis) + pres_coords.append(current_pres) + is_valid_list.append(is_valid) + + return (x_coords, y_coords, z_coords, vis_coords, pres_coords, is_valid_list) + + +# --- Base Position Delta Logic (Handling Multiple Histories) --- +class BasePositionDeltaNode: + """Base class for nodes calculating delta from position history. + Handles single floats or lists of coordinates. + """ + FUNCTION = "execute" + + def __init__(self): + # Store history deques keyed by item index from input list + # Key 0 is used for single float inputs + self._histories: typing.Dict[int, collections.deque] = {} + + def _get_or_create_history(self, item_index: int) -> collections.deque: + """Gets the deque for a specific index, creating it if needed.""" + if item_index not in self._histories: + self._histories[item_index] = collections.deque(maxlen=MAX_POSITION_HISTORY) + return self._histories[item_index] + + def _get_position_delta(self, x: float, y: float, z: float, window_size: int, item_index: int = 0) -> Optional[float]: + """Calculates delta using the history deque for the given item_index.""" + history_deque = self._get_or_create_history(item_index) + + window_size = max(1, min(window_size, MAX_POSITION_HISTORY - 1)) + current_pos = (x, y, z) + history_deque.append(current_pos) + + if len(history_deque) > window_size: + pos_now = history_deque[-1] + pos_past = history_deque[-(window_size + 1)] # Correct indexing + if pos_now is None or pos_past is None: + logger.warning(f"{self.__class__.__name__}[{item_index}]: Missing position data in history window.") + return None + delta = math.sqrt((pos_now[0] - pos_past[0])**2 + + (pos_now[1] - pos_past[1])**2 + + (pos_now[2] - pos_past[2])**2) + return delta + else: + # logger.debug(f"{self.__class__.__name__}[{item_index}]: Not enough history ({len(history_deque)}/{window_size+1}).") + return None # Not enough history yet + + # Remove _handle_input_coords, logic moved to execute + +# --- Position Delta Control Nodes (Int/Float) (Handling Lists) --- +class PositionDeltaControlNode(BasePositionDeltaNode): + """Base class for position-based delta control nodes (Int/Float). + Handles single floats or lists of coordinates. + Outputs FLOAT type (actual value is float or list[float]). + """ + # Output semantic type is FLOAT (or INT for subclass) + RETURN_TYPES = ("FLOAT",) + RETURN_NAMES = ("value",) # Singular name + IS_INT_OUTPUT = False + DEFAULT_DELTA_MIN = 0.0 + DEFAULT_DELTA_MAX = 0.1 + DEFAULT_OUTPUT_MIN = 0.0 + DEFAULT_OUTPUT_MAX = 1.0 + DEFAULT_CLAMP = True + CATEGORY = "Realtime Nodes/MediaPipe Vision/Common/Delta" + + @classmethod + def INPUT_TYPES(cls): + # Input types remain the same + output_type_str = "INT" if cls.IS_INT_OUTPUT else "FLOAT" + output_min_key = f"output_min_{output_type_str.lower()}" + output_max_key = f"output_max_{output_type_str.lower()}" + return { + "required": { + "x": ("FLOAT", {"default": 0.0, "forceInput": True}), + "y": ("FLOAT", {"default": 0.0, "forceInput": True}), + "z": ("FLOAT", {"default": 0.0, "forceInput": True}), + "window_size": ("INT", { "default": 1, "min": 1, "max": MAX_POSITION_HISTORY - 1, "tooltip": "Number of frames back for delta"}), + "delta_min": ("FLOAT", {"default": cls.DEFAULT_DELTA_MIN, "step": 0.01}), + "delta_max": ("FLOAT", {"default": cls.DEFAULT_DELTA_MAX, "step": 0.01}), + output_min_key: (output_type_str, {"default": cls.DEFAULT_OUTPUT_MIN}), + output_max_key: (output_type_str, {"default": cls.DEFAULT_OUTPUT_MAX}), + "clamp": ("BOOLEAN", {"default": cls.DEFAULT_CLAMP}), + } + } + + def execute(self, **kwargs): + output_type_str = "INT" if self.IS_INT_OUTPUT else "FLOAT" + output_min_key = f"output_min_{output_type_str.lower()}" + output_max_key = f"output_max_{output_type_str.lower()}" + x_in, y_in, z_in = kwargs.get('x'), kwargs.get('y'), kwargs.get('z') + window_size = kwargs.get('window_size', 1) + delta_min = kwargs.get('delta_min') + delta_max = kwargs.get('delta_max') + output_min = kwargs.get(output_min_key) + output_max = kwargs.get(output_max_key) + clamp = kwargs.get('clamp') + fallback_value = int(output_min) if self.IS_INT_OUTPUT else float(output_min) + + if None in [x_in, y_in, z_in, delta_min, delta_max, output_min, output_max, clamp]: + logger.error(f"{self.__class__.__name__}: Missing required arguments.") + return (fallback_value,) + + # --- Input Type Handling & History Cleanup --- + is_list = isinstance(x_in, list) + if is_list != isinstance(y_in, list) or is_list != isinstance(z_in, list): + raise ValueError(f"{self.__class__.__name__}: Inputs x, y, z must be all floats or all lists.") + + if is_list: + current_batch_size = len(x_in) + # Remove histories for indices no longer present + keys_to_remove = [k for k in self._histories if k >= current_batch_size] + if keys_to_remove: + # logger.debug(f"{self.__class__.__name__}: Removing histories for indices {keys_to_remove}") + for k in keys_to_remove: + del self._histories[k] + + if current_batch_size == 0: + logger.warning(f"{self.__class__.__name__}: Received empty lists for coordinates.") + return ([],) + + # Process List Input + results = [] + for i in range(current_batch_size): + xi, yi, zi = x_in[i], y_in[i], z_in[i] + if not all(isinstance(c, (float, int)) for c in [xi, yi, zi]): + logger.warning(f"{self.__class__.__name__}: Invalid coordinate type at index {i}. Using fallback value.") + results.append(fallback_value) + continue + + raw_delta = self._get_position_delta(float(xi), float(yi), float(zi), window_size, item_index=i) + scaled_value = scale_value(raw_delta, delta_min, delta_max, output_min, output_max, clamp) + + if self.IS_INT_OUTPUT: + output_val = int(round(scaled_value)) if scaled_value is not None else int(output_min) + else: + output_val = scaled_value if scaled_value is not None else float(output_min) + results.append(output_val) + return (results,) + + else: + # Single Float Input: Remove all histories except for index 0 + keys_to_remove = [k for k in self._histories if k != 0] + if keys_to_remove: + # logger.debug(f"{self.__class__.__name__}: Switching to single input, removing histories for indices {keys_to_remove}") + for k in keys_to_remove: + del self._histories[k] + + # Process Single Float Input + if not all(isinstance(c, (float, int)) for c in [x_in, y_in, z_in]): + logger.error(f"{self.__class__.__name__}: Invalid coordinate types for single float input.") + return (fallback_value,) + + raw_delta = self._get_position_delta(float(x_in), float(y_in), float(z_in), window_size, item_index=0) + scaled_value = scale_value(raw_delta, delta_min, delta_max, output_min, output_max, clamp) + + if self.IS_INT_OUTPUT: + output_val = int(round(scaled_value)) if scaled_value is not None else int(output_min) + else: + output_val = scaled_value if scaled_value is not None else float(output_min) + return (output_val,) + +class PositionDeltaIntControlNode(PositionDeltaControlNode): + RETURN_TYPES = ("INT",) # Semantic type is INT + RETURN_NAMES = ("value",) + IS_INT_OUTPUT = True + DEFAULT_OUTPUT_MIN = 0 + DEFAULT_OUTPUT_MAX = 100 + +class PositionDeltaFloatControlNode(PositionDeltaControlNode): + RETURN_TYPES = ("FLOAT",) # Semantic type is FLOAT + RETURN_NAMES = ("value",) + IS_INT_OUTPUT = False + DEFAULT_OUTPUT_MIN = 0.0 + DEFAULT_OUTPUT_MAX = 1.0 + +# --- Position Delta Trigger Node (Handling Lists) --- +class PositionDeltaTriggerNode(BasePositionDeltaNode): + """Outputs a BOOLEAN trigger if position delta crosses a threshold. + Handles single floats or lists of coordinates. + Outputs BOOLEAN type (actual value is boolean or list[boolean]). + """ + RETURN_TYPES = ("BOOLEAN",) # Semantic type + RETURN_NAMES = ("trigger",) # Singular name + DEFAULT_THRESHOLD = 0.05 + CATEGORY = "Realtime Nodes/MediaPipe Vision/Common/Delta" + + @classmethod + def INPUT_TYPES(cls): + # Inputs remain the same + return { + "required": { + "x": ("FLOAT", {"default": 0.0, "forceInput": True}), + "y": ("FLOAT", {"default": 0.0, "forceInput": True}), + "z": ("FLOAT", {"default": 0.0, "forceInput": True}), + "window_size": ("INT", {"default": 1, "min": 1, "max": MAX_POSITION_HISTORY - 1}), + "threshold": ("FLOAT", {"default": cls.DEFAULT_THRESHOLD, "step": 0.01}), + "condition": (["Above", "Below", "Equals", "Not Equals"],), + } + } + + def execute(self, **kwargs): + x_in, y_in, z_in = kwargs.get('x'), kwargs.get('y'), kwargs.get('z') + window_size = kwargs.get('window_size', 1) + threshold = kwargs.get('threshold') + condition = kwargs.get('condition') + fallback_value = False + + if None in [x_in, y_in, z_in, threshold, condition]: + logger.error(f"{self.__class__.__name__}: Missing required arguments.") + return (fallback_value,) + + # --- Input Type Handling & History Cleanup --- + is_list = isinstance(x_in, list) + if is_list != isinstance(y_in, list) or is_list != isinstance(z_in, list): + raise ValueError(f"{self.__class__.__name__}: Inputs x, y, z must be all floats or all lists.") + + if is_list: + current_batch_size = len(x_in) + # Remove histories for indices no longer present + keys_to_remove = [k for k in self._histories if k >= current_batch_size] + if keys_to_remove: + # logger.debug(f"{self.__class__.__name__}: Removing histories for indices {keys_to_remove}") + for k in keys_to_remove: + del self._histories[k] + + if current_batch_size == 0: + logger.warning(f"{self.__class__.__name__}: Received empty lists for coordinates.") + return ([],) + + # Process List Input + results = [] + for i in range(current_batch_size): + xi, yi, zi = x_in[i], y_in[i], z_in[i] + if not all(isinstance(c, (float, int)) for c in [xi, yi, zi]): + logger.warning(f"{self.__class__.__name__}: Invalid coordinate type at index {i}. Using fallback value.") + results.append(fallback_value) + continue + + raw_delta = self._get_position_delta(float(xi), float(yi), float(zi), window_size, item_index=i) + triggered = fallback_value + if raw_delta is not None: + if condition == "Above": triggered = raw_delta > threshold + elif condition == "Below": triggered = raw_delta < threshold + elif condition == "Equals": triggered = abs(raw_delta - threshold) < FLOAT_EQUALITY_TOLERANCE + elif condition == "Not Equals": triggered = abs(raw_delta - threshold) >= FLOAT_EQUALITY_TOLERANCE + results.append(triggered) + return (results,) + + else: + # Single Float Input: Remove all histories except for index 0 + keys_to_remove = [k for k in self._histories if k != 0] + if keys_to_remove: + # logger.debug(f"{self.__class__.__name__}: Switching to single input, removing histories for indices {keys_to_remove}") + for k in keys_to_remove: + del self._histories[k] + + # Process Single Float Input + if not all(isinstance(c, (float, int)) for c in [x_in, y_in, z_in]): + logger.error(f"{self.__class__.__name__}: Invalid coordinate types for single float input.") + return (fallback_value,) + + raw_delta = self._get_position_delta(float(x_in), float(y_in), float(z_in), window_size, item_index=0) + triggered = fallback_value + if raw_delta is not None: + if condition == "Above": triggered = raw_delta > threshold + elif condition == "Below": triggered = raw_delta < threshold + elif condition == "Equals": triggered = abs(raw_delta - threshold) < FLOAT_EQUALITY_TOLERANCE + elif condition == "Not Equals": triggered = abs(raw_delta - threshold) >= FLOAT_EQUALITY_TOLERANCE + return (triggered,) + +# --- Landmark Proximity Node (Handles Float or List Inputs) --- +class LandmarkProximityNode: + """ + Calculates the Euclidean distance between landmark positions. + Handles single coordinate sets or lists thereof. + Outputs FLOAT type (actual value is float or list[float]). + """ + CATEGORY = "Realtime Nodes/MediaPipe Vision/Common/Utils" + FUNCTION = "calculate_distances" + # Output semantic type is FLOAT + RETURN_TYPES = ("FLOAT",) + RETURN_NAMES = ("distance",) # Singular name + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + # Keep FLOAT type + "x1": ("FLOAT", {"default": 0.0, "forceInput": True}), + "y1": ("FLOAT", {"default": 0.0, "forceInput": True}), + "z1": ("FLOAT", {"default": 0.0, "forceInput": True}), + "x2": ("FLOAT", {"default": 0.0, "forceInput": True}), + "y2": ("FLOAT", {"default": 0.0, "forceInput": True}), + "z2": ("FLOAT", {"default": 0.0, "forceInput": True}), + } + } + + def calculate_distances(self, x1: Union[float, List[float]], y1: Union[float, List[float]], z1: Union[float, List[float]], + x2: Union[float, List[float]], y2: Union[float, List[float]], z2: Union[float, List[float]]) -> Union[float, List[float]]: # Return type hint updated + + # --- Input Type Handling --- + inputs = [x1, y1, z1, x2, y2, z2] + is_list_input = isinstance(x1, list) + fallback_value = 0.0 + + if any(isinstance(inp, list) != is_list_input for inp in inputs): + raise ValueError("All coordinate inputs (x1..z2) must be of the same type (all floats or all lists).") + + if is_list_input: + # Process List Input + list_len = len(x1) + if any(len(inp) != list_len for inp in inputs if isinstance(inp, list)): + raise ValueError("If inputs are lists, all coordinate lists (x1..z2) must have the same length.") + if list_len == 0: + logger.warning("Input coordinate lists are empty. Returning empty distance list.") + return ([],) # Return empty list for FLOAT type + num_calcs = list_len + x1_list, y1_list, z1_list = x1, y1, z1 + x2_list, y2_list, z2_list = x2, y2, z2 + + distances = [] + for i in range(num_calcs): + try: + _x1, _y1, _z1 = x1_list[i], y1_list[i], z1_list[i] + _x2, _y2, _z2 = x2_list[i], y2_list[i], z2_list[i] + + if not all(isinstance(c, (float, int)) for c in [_x1, _y1, _z1, _x2, _y2, _z2]): + logger.warning(f"Invalid coordinate type found at index {i}. Using fallback distance {fallback_value}.") + distances.append(fallback_value) + continue + + dist = math.sqrt((_x2 - _x1)**2 + (_y2 - _y1)**2 + (_z2 - _z1)**2) + distances.append(dist) + except Exception as e: + logger.error(f"Error calculating distance at index {i}: {e}", exc_info=True) + distances.append(fallback_value) + return (distances,) # Return list of results + + else: + # Process Single Float Input + _x1, _y1, _z1 = x1, y1, z1 + _x2, _y2, _z2 = x2, y2, z2 + if not all(isinstance(c, (float, int)) for c in [_x1, _y1, _z1, _x2, _y2, _z2]): + logger.error(f"Invalid coordinate types for single float input.") + return (fallback_value,) # Return single fallback + try: + dist = math.sqrt((_x2 - _x1)**2 + (_y2 - _y1)**2 + (_z2 - _z1)**2) + return (dist,) # Return single float value + except Exception as e: + logger.error(f"Error calculating distance for single input: {e}", exc_info=True) + return (fallback_value,) # Return single fallback + +# --- Universal Landmark Mask Node (Handles Float or List Inputs) --- +class UniversalLandmarkMaskNode: + """ + Creates geometric masks (circle or square) centered at landmark coordinates. + Handles single (x, y) floats or lists (x_list, y_list) as input. + Outputs a batch of masks (N, 1, H, W). + """ + CATEGORY = "Realtime Nodes/MediaPipe Vision/Common/Masking" + FUNCTION = "create_masks" # Keep plural name for clarity + RETURN_TYPES = ("MASK",) + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "x": ("FLOAT", {"default": 0.5, "forceInput": True, "tooltip": "Normalized X coordinate (0.0-1.0) or List thereof"}), + "y": ("FLOAT", {"default": 0.5, "forceInput": True, "tooltip": "Normalized Y coordinate (0.0-1.0) or List thereof"}), + "image_for_dimensions": ("IMAGE", {"tooltip": "Reference image to determine the output mask size"}), + "radius": ("INT", {"default": 25, "min": 1, "max": 1024, "tooltip": "Radius of the mask shape in pixels"}), + "shape": (["Circle", "Square"], {"default": "Circle"}), + "invert": ("BOOLEAN", {"default": False}), + } + } + + def create_masks(self, x: Union[float, List[float]], y: Union[float, List[float]], image_for_dimensions: torch.Tensor, radius: int, shape: str, invert: bool) -> Tuple[torch.Tensor]: + + # --- Input Type Handling --- + is_x_list = isinstance(x, list) + is_y_list = isinstance(y, list) + + if is_x_list != is_y_list: + raise ValueError("Inputs x and y must be both floats or both lists.") + + if is_x_list: + # Input is List[float] + x_list = x + y_list = y + if len(x_list) != len(y_list): + raise ValueError(f"x_list (len {len(x_list)}) and y_list (len {len(y_list)}) must have the same length.") + if not x_list: # Handle empty list + logger.warning("Input coordinate lists are empty. Returning empty mask batch.") + # Determine shape for empty tensor + if image_for_dimensions.dim() != 4: + logger.error("Input image must be BHWC format to determine empty mask size.") + return (torch.zeros((0, 1, 64, 64), dtype=torch.float32),) + _, height, width, _ = image_for_dimensions.shape + return (torch.zeros((0, 1, height, width), dtype=torch.float32, device=image_for_dimensions.device),) + num_coords = len(x_list) + else: + # Input is float - wrap in lists for unified processing + x_list = [x] + y_list = [y] + num_coords = 1 + + # --- Get Dimensions --- + if image_for_dimensions.dim() != 4: + logger.error("Input image must be BHWC format.") + # Return empty batch matching input size + return (torch.zeros((num_coords, 1, 64, 64), dtype=torch.float32),) + _, height, width, _ = image_for_dimensions.shape + device = image_for_dimensions.device + + # --- Generate Masks --- + output_masks = [] + for i in range(num_coords): + xi = x_list[i] + yi = y_list[i] + + # Validate individual coordinates + if not isinstance(xi, (float, int)) or not isinstance(yi, (float, int)): + logger.warning(f"Invalid coordinate type at index {i} (x={type(xi)}, y={type(yi)}). Skipping mask generation for this index.") + mask_tensor = torch.zeros((1, height, width), dtype=torch.float32, device=device) + output_masks.append(mask_tensor) + continue + + # Calculate pixel coordinates + px = max(0, min(width - 1, int(xi * width))) + py = max(0, min(height - 1, int(yi * height))) + + mask_np = np.zeros((height, width), dtype=np.uint8) + try: + center = (px, py) + if shape == "Circle": + cv2.circle(mask_np, center, radius, 1, -1) + elif shape == "Square": + half_size = radius + top_left = (max(0, px - half_size), max(0, py - half_size)) + bottom_right = (min(width - 1, px + half_size), min(height - 1, py + half_size)) + cv2.rectangle(mask_np, top_left, bottom_right, 1, -1) + else: + cv2.circle(mask_np, center, radius, 1, -1) # Default circle + + if invert: + mask_np = 1 - mask_np + + except Exception as e: + logger.error(f"Error drawing mask shape at index {i}: {e}", exc_info=True) + # mask_np remains zeros + + # Convert to tensor (1, H, W) + mask_tensor = torch.from_numpy(mask_np).float().unsqueeze(0).to(device) + output_masks.append(mask_tensor) + + # Stack into batch (N, 1, H, W) + output_batch = torch.stack(output_masks, dim=0) + return (output_batch,) + +# --- Node Mappings (Revert Delta node display names) --- +NODE_CLASS_MAPPINGS = { + "LandmarkProximity": LandmarkProximityNode, + "UniversalLandmarkMask": UniversalLandmarkMaskNode, + "PositionDeltaIntControl": PositionDeltaIntControlNode, + "PositionDeltaFloatControl": PositionDeltaFloatControlNode, + "PositionDeltaTrigger": PositionDeltaTriggerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LandmarkProximity": "Landmark Proximity Calculator", + "UniversalLandmarkMask": "Universal Landmark Mask Generator (Batch)", + "PositionDeltaIntControl": "Position Delta Int Control", + "PositionDeltaFloatControl": "Position Delta Float Control", + "PositionDeltaTrigger": "Position Delta Trigger", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/__init__.py b/node_wrappers/mediapipe_vision/face/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/detection/face_detection.py b/node_wrappers/mediapipe_vision/face/detection/face_detection.py new file mode 100644 index 0000000..5ce91ff --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/detection/face_detection.py @@ -0,0 +1,75 @@ +import torch +from .....src.mediapipe_vision.face_detection.detector import FaceDetector +from ...common.model_loader import MediaPipeModelLoaderBaseNode +from ...common.base_detector_node import BaseMediaPipeDetectorNode +import logging + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Face/FaceDetection" +# Inherit from Base Loader +class MediaPipeFaceDetectorModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Face Detector models.""" + TASK_TYPE = "face_detector" + RETURN_TYPES = ("FACE_DETECTOR_MODEL_INFO",) # Specific return type + RETURN_NAMES = ("model_info",) + CATEGORY = _category + DESCRIPTION = "Loads a MediaPipe Face Detector model for finding faces in images. Required before using the Face Detector node." + # INPUT_TYPES and FUNCTION inherited + +# Detection/Landmarking Nodes +class MediaPipeFaceDetectorNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Face Detection.""" + + # Define class variables required by the base class + DETECTOR_CLASS = FaceDetector + MODEL_INFO_TYPE = "FACE_DETECTOR_MODEL_INFO" + EXPECTED_TASK_TYPE = "face_detector" + RETURN_TYPES = ("FACE_DETECTIONS",) + RETURN_NAMES = ("face_detections",) + FUNCTION = "detect" + CATEGORY = _category + DESCRIPTION = "Detects faces in images using MediaPipe's face detection technology. Provides coordinates and confidence scores for all faces found in the image." + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add face detection specific parameters + inputs["required"].update({ + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.05, + "tooltip": "Minimum confidence threshold for face detection - lower values find more faces but may include false positives"}), + }) + + return inputs + + def detect(self, image: torch.Tensor, model_info: dict, min_confidence: float, + running_mode: str, delegate: str): + """Performs face detection with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Perform detection with all parameters + batch_results = detector.detect( + image, + min_detection_confidence=min_confidence, + running_mode=running_mode, + delegate=delegate + ) + + return (batch_results,) + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipeFaceDetectorModelLoader": MediaPipeFaceDetectorModelLoaderNode, + "MediaPipeFaceDetector": MediaPipeFaceDetectorNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeFaceDetectorModelLoader": "Load Face Detector Model (MediaPipe)", + "MediaPipeFaceDetector": "Face Detector (MediaPipe)", +} diff --git a/node_wrappers/mediapipe_vision/face/detection/face_detection_mask.py b/node_wrappers/mediapipe_vision/face/detection/face_detection_mask.py new file mode 100644 index 0000000..b319d26 --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/detection/face_detection_mask.py @@ -0,0 +1,155 @@ +# face_detection_mask.py +import torch +import numpy as np +import logging +import scipy.ndimage + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Face/FaceDetection" + +class FaceDetectionToMask: + """Converts face detection bounding boxes to masks that can be used in ComfyUI.""" + CATEGORY = _category + DESCRIPTION = "Creates masks from face detections that can be used for selective processing, inpainting, or compositing. Generate masks based on face bounding boxes or facial keypoints." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "face_detections": ("FACE_DETECTIONS", {"tooltip": "Face detection results from the Face Detector node"}), + "width": ("INT", {"default": 512, "min": 1, "max": 8192, "step": 1, + "tooltip": "Width of the output mask in pixels"}), + "height": ("INT", {"default": 512, "min": 1, "max": 8192, "step": 1, + "tooltip": "Height of the output mask in pixels"}), + "mask_type": (["Bounding Box", "Keypoints", "Both"], {"default": "Bounding Box", + "tooltip": "Type of mask to create - Bounding Box (rectangle around face), Keypoints (dots at facial points), or Both"}), + "face_selection": (["All Faces", "First Face", "Largest Face", "Highest Confidence Face"], + {"default": "All Faces", + "tooltip": "Which faces to include in the mask - all detected faces, only the first face, largest face, or most confident detection"}), + "feather_amount": ("INT", {"default": 0, "min": 0, "max": 100, "step": 1, + "tooltip": "How much to soften the edges of the mask in pixels - higher values create smoother transitions"}), + "keypoint_radius": ("INT", {"default": 5, "min": 1, "max": 50, "step": 1, + "tooltip": "Size of each keypoint in the mask when using Keypoints or Both mask types"}), + "invert": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, inverts the mask (white becomes black, black becomes white)"}), + "score_threshold": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence score for including face detections - higher values filter out less confident detections"}) + }, + "optional": { + "reference_image": ("IMAGE", {"tooltip": "Optional image to match dimensions - mask will be created with the same size as this image"}) + } + } + + RETURN_TYPES = ("MASK",) + FUNCTION = "create_mask" + + def create_mask(self, face_detections, width, height, mask_type, face_selection, + feather_amount, keypoint_radius, invert, score_threshold, reference_image=None): + + # If reference image provided, use its dimensions + if reference_image is not None: + height, width = reference_image.shape[1], reference_image.shape[2] + + batch_size = len(face_detections) + masks = [] + + for i in range(batch_size): + # Create empty mask + mask = torch.zeros((height, width), dtype=torch.float32, device="cpu") + detections_for_image = face_detections[i] + + if not detections_for_image: + masks.append(mask) + continue + + # Filter detections by score threshold + filtered_detections = [] + for detection in detections_for_image: + if detection.score is None or detection.score >= score_threshold: + filtered_detections.append(detection) + + # Select which faces to include based on face_selection parameter + selected_detections = [] + if face_selection == "All Faces": + selected_detections = filtered_detections + elif face_selection == "First Face" and filtered_detections: + selected_detections = [filtered_detections[0]] + elif face_selection == "Largest Face" and filtered_detections: + # Find the detection with the largest area + largest_detection = max(filtered_detections, + key=lambda d: d.bounding_box.width * d.bounding_box.height) + selected_detections = [largest_detection] + elif face_selection == "Highest Confidence Face" and filtered_detections: + # Find the detection with the highest confidence score + # Filter out detections with no score first + scored_detections = [d for d in filtered_detections if d.score is not None] + if scored_detections: + highest_conf_detection = max(scored_detections, key=lambda d: d.score) + selected_detections = [highest_conf_detection] + else: + # If no detections have scores, fall back to first detection + selected_detections = [filtered_detections[0]] + + for detection in selected_detections: + # Get bounding box + bbox = detection.bounding_box + x1, y1 = max(0, bbox.origin_x), max(0, bbox.origin_y) + x2, y2 = min(width-1, bbox.origin_x + bbox.width), min(height-1, bbox.origin_y + bbox.height) + + if x2 <= x1 or y2 <= y1: + continue # Skip invalid boxes + + # Fill bounding box region if requested + if mask_type in ["Bounding Box", "Both"]: + mask[y1:y2+1, x1:x2+1] = 1.0 + + # Add keypoints if requested + if mask_type in ["Keypoints", "Both"] and detection.keypoints: + for kp in detection.keypoints: + # Keypoints are in normalized coordinates, convert to pixel coordinates + cx, cy = int(kp.x * width), int(kp.y * height) + + # Draw circle for each keypoint + for y in range(max(0, cy - keypoint_radius), min(height, cy + keypoint_radius + 1)): + for x in range(max(0, cx - keypoint_radius), min(width, cx + keypoint_radius + 1)): + # Check if point is within radius + if (x - cx) ** 2 + (y - cy) ** 2 <= keypoint_radius ** 2: + mask[y, x] = 1.0 + + # Feather the edges if requested + if feather_amount > 0: + # Convert mask to numpy for scipy operations + mask_np = mask.numpy() + + # Calculate distance transform + if invert: + distance = scipy.ndimage.distance_transform_edt(mask_np == 0) + else: + distance = scipy.ndimage.distance_transform_edt(mask_np > 0) + + # Create feathered edge + feather_mask = np.clip(distance / feather_amount, 0, 1) + + if invert: + feather_mask = 1.0 - feather_mask + + # Convert back to tensor + mask = torch.from_numpy(feather_mask).float() + elif invert: + # Simple inversion without feathering + mask = 1.0 - mask + + masks.append(mask) + + # Stack all masks into a batch + mask_batch = torch.stack(masks) + return (mask_batch,) + +# Node registration +NODE_CLASS_MAPPINGS = { + "FaceDetectionToMask": FaceDetectionToMask +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "FaceDetectionToMask": "Face Detection to Mask (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/detection/face_detection_visualization.py b/node_wrappers/mediapipe_vision/face/detection/face_detection_visualization.py new file mode 100644 index 0000000..69b20f9 --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/detection/face_detection_visualization.py @@ -0,0 +1,107 @@ +# visualize_face_detection.py +import torch +import numpy as np +import cv2 +from ...common.base_visualization_nodes import BaseDetectionVisualizationNode + +import logging +logger = logging.getLogger(__name__) + +class VisualizeFaceDetections(BaseDetectionVisualizationNode): + """Draws face detection bounding boxes and keypoints onto images.""" + CATEGORY = "Realtime Nodes/MediaPipe Vision/Face/FaceDetection/Visualization" + DESCRIPTION = "Visualizes face detections by drawing boxes and keypoints onto images. Allows customization of colors and sizes to highlight detected faces." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "face_detections": ("FACE_DETECTIONS", {"tooltip": "Face detection results from the Face Detector node"}), + "image": ("IMAGE", {"tooltip": "The image on which to draw face detection visualizations"}), + }, + "optional": { + "box_color": ("STRING", {"default": "#00FF00", "tooltip": "Hex color code for the face bounding boxes (default: green)"}), + "box_thickness": ("INT", {"default": 2, "min": 1, "max": 10, "tooltip": "Thickness of the face bounding box lines"}), + "keypoint_color": ("STRING", {"default": "#FF0000", "tooltip": "Hex color code for facial keypoints (default: red)"}), + "keypoint_radius": ("INT", {"default": 2, "min": 1, "max": 10, "tooltip": "Size of the dots representing facial keypoints"}), + "label_color": ("STRING", {"default": "#FFFFFF", "tooltip": "Hex color code for the text labels (default: white)"}), + "label_bg_color": ("STRING", {"default": "#00FF00", "tooltip": "Hex color code for the label background (default: green)"}), + } + } + + RETURN_TYPES = ("IMAGE",) + FUNCTION = "draw_visualizations" + + def draw_visualizations(self, face_detections, image, + box_color="#00FF00", box_thickness=2, + keypoint_color="#FF0000", keypoint_radius=2, + label_color="#FFFFFF", label_bg_color="#00FF00"): + """Main function that processes the batch of images and detections.""" + return self.process_batch( + face_detections, + image, + self.draw_faces, + box_color=box_color, + box_thickness=box_thickness, + keypoint_color=keypoint_color, + keypoint_radius=keypoint_radius, + label_color=label_color, + label_bg_color=label_bg_color + ) + + def draw_faces(self, image, width, height, detections, + box_color="#00FF00", box_thickness=2, + keypoint_color="#FF0000", keypoint_radius=2, + label_color="#FFFFFF", label_bg_color="#00FF00"): + """Callback function to draw faces on a single image.""" + # Convert hex colors to BGR tuples for cv2 + box_color_bgr = self._hex_to_bgr(box_color) + keypoint_color_bgr = self._hex_to_bgr(keypoint_color) + + for detection in detections: + bbox = detection.bounding_box + x1, y1 = bbox.origin_x, bbox.origin_y + x2, y2 = bbox.origin_x + bbox.width, bbox.origin_y + bbox.height + + # Draw bounding box + cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), box_color_bgr, box_thickness) + + # Draw Keypoints + if detection.keypoints: + for kp in detection.keypoints: + cx, cy = int(kp.x * width), int(kp.y * height) + cv2.circle(image, (cx, cy), keypoint_radius, keypoint_color_bgr, -1) + + # Prepare label text (confidence score) + label_text = f"Face: {detection.score:.2f}" if detection.score is not None else "Face" + + # Draw label with background + try: + self.draw_text_with_background( + image, + label_text, + (int(x1), int(y1)), + text_color=label_color, + bg_color=label_bg_color + ) + except Exception as e: + logger.error(f"Error drawing text label: {e}") + # Fallback using basic cv2 text + cv2.putText( + image, + label_text, + (int(x1) + 2, int(y1) + 15), + cv2.FONT_HERSHEY_SIMPLEX, + 0.5, + self._hex_to_bgr(label_color), + 1 + ) + +# Node registration +NODE_CLASS_MAPPINGS = { + "VisualizeFaceDetections": VisualizeFaceDetections +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "VisualizeFaceDetections": "Visualize Face Detections (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/blendshape.py b/node_wrappers/mediapipe_vision/face/landmark/blendshape.py new file mode 100644 index 0000000..7ea855d --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/blendshape.py @@ -0,0 +1,179 @@ +# node_wrappers/face/blendshape.py +import logging +from typing import Optional, List, Any, Dict, Tuple + +from .....src.mediapipe_vision.types import BLENDSHAPES_LIST # Updated type alias +from .....src.mediapipe_vision.utils.misc_utils import get_blendshape_categories # Utility to get all category names + +# Import base trigger/control logic if we adapt base classes later, or implement directly for now +from ...common.universal_landmark_nodes import FLOAT_EQUALITY_TOLERANCE # For trigger node comparisons +from .....src.mediapipe_vision.utils.delta_utils import scale_value + +logger = logging.getLogger(__name__) + +# --- Constants --- +# Get the list of available blendshape categories from MediaPipe +ALL_BLENDSHAPE_CATEGORIES = get_blendshape_categories() +if not ALL_BLENDSHAPE_CATEGORIES: + logger.warning("Could not retrieve blendshape categories. Blendshape nodes might not function correctly.") + ALL_BLENDSHAPE_CATEGORIES = ["_neutral"] # Provide a fallback + +_category = "Realtime Nodes/MediaPipe Vision/Face/Blendshape" + + +# --- Helper Functions --- +def get_blendshape_score(blendshapes_result: BLENDSHAPES_LIST, category_name: str) -> Optional[float]: + """Extracts the score for a specific blendshape category from the result.""" + if not blendshapes_result or not blendshapes_result[0] or not blendshapes_result[0][0]: + #logger.debug(f"No blendshapes found in result.") + return None # No blendshape data + + # BLENDSHAPES structure: List[List[Dict[str, float]]] + # We typically care about the first face in the first batch item + first_face_blendshapes = blendshapes_result[0][0] + + # In the MediaPipe output, blendshapes are represented as a dictionary + # where keys are category names and values are scores + if isinstance(first_face_blendshapes, dict): + # Dictionary format: {category_name: score, ...} + if category_name in first_face_blendshapes: + return first_face_blendshapes[category_name] + elif isinstance(first_face_blendshapes, list): + # Try to handle the list format with objects that have category_name attribute + try: + target_blendshape = next((bs for bs in first_face_blendshapes if hasattr(bs, 'category_name') and bs.category_name == category_name), None) + if target_blendshape: + return target_blendshape.score + except Exception as e: + logger.error(f"Error processing blendshape list: {e}") + + logger.warning(f"Blendshape category '{category_name}' not found in results. Type: {type(first_face_blendshapes)}") + return None + + +# --- Control Nodes --- +class BlendshapeControlFloatNode: + """Outputs a scaled FLOAT based on the score of a selected blendshape.""" + CATEGORY = _category + RETURN_TYPES = ("FLOAT",) + FUNCTION = "execute" + DESCRIPTION = "Converts facial expressions into floating point values that can control other nodes. For example, use a smile to control image parameters or animation intensity." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "blendshapes": ("BLENDSHAPES_LIST", {"tooltip": "Facial expression data from the Face Landmarker node"}), + "blendshape_name": (ALL_BLENDSHAPE_CATEGORIES, {"default": "mouthSmileLeft", + "tooltip": "The specific facial expression to monitor (e.g., smile, frown, raised eyebrows)"}), + # Blendshape scores are typically 0.0 to 1.0, but allow flexibility + "score_min": ("FLOAT", {"default": 0.0, "step": 0.01, + "tooltip": "The minimum facial expression intensity to consider (usually 0.0)"}), + "score_max": ("FLOAT", {"default": 1.0, "step": 0.01, + "tooltip": "The maximum facial expression intensity to consider (usually 1.0)"}), + "output_min_float": ("FLOAT", {"default": 0.0, "step": 0.01, + "tooltip": "The minimum output value when expression is at or below score_min"}), + "output_max_float": ("FLOAT", {"default": 1.0, "step": 0.01, + "tooltip": "The maximum output value when expression is at or above score_max"}), + "clamp": ("BOOLEAN", {"default": True, + "tooltip": "When enabled, restricts output values to stay within min and max range"}), + } + } + + def execute(self, blendshapes, blendshape_name, score_min, score_max, output_min_float, output_max_float, clamp): + raw_score = get_blendshape_score(blendshapes, blendshape_name) + + scaled_value = scale_value(raw_score, score_min, score_max, output_min_float, output_max_float, clamp) + + # Default to min value on error or if blendshape not found + output_val = scaled_value if scaled_value is not None else float(output_min_float) + return (output_val,) + +class BlendshapeControlIntNode: + """Outputs a scaled INT based on the score of a selected blendshape.""" + CATEGORY = _category + RETURN_TYPES = ("INT",) + FUNCTION = "execute" + DESCRIPTION = "Converts facial expressions into integer values that can control other nodes. Useful for selecting steps, seeds, or indexes based on facial expressions." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "blendshapes": ("BLENDSHAPES_LIST", {"tooltip": "Facial expression data from the Face Landmarker node"}), + "blendshape_name": (ALL_BLENDSHAPE_CATEGORIES, {"default": "mouthSmileLeft", + "tooltip": "The specific facial expression to monitor (e.g., smile, frown, raised eyebrows)"}), + "score_min": ("FLOAT", {"default": 0.0, "step": 0.01, + "tooltip": "The minimum facial expression intensity to consider (usually 0.0)"}), + "score_max": ("FLOAT", {"default": 1.0, "step": 0.01, + "tooltip": "The maximum facial expression intensity to consider (usually 1.0)"}), + "output_min_int": ("INT", {"default": 0, + "tooltip": "The minimum integer output value when expression is at or below score_min"}), + "output_max_int": ("INT", {"default": 100, + "tooltip": "The maximum integer output value when expression is at or above score_max"}), + "clamp": ("BOOLEAN", {"default": True, + "tooltip": "When enabled, restricts output values to stay within min and max range"}), + } + } + + def execute(self, blendshapes, blendshape_name, score_min, score_max, output_min_int, output_max_int, clamp): + raw_score = get_blendshape_score(blendshapes, blendshape_name) + + scaled_value = scale_value(raw_score, score_min, score_max, output_min_int, output_max_int, clamp) + + # Default to min value on error or if blendshape not found + output_val = int(round(scaled_value)) if scaled_value is not None else int(output_min_int) + return (output_val,) + + +# --- Trigger Node --- +class BlendshapeTriggerNode: + """Outputs a BOOLEAN trigger if a blendshape score crosses a threshold.""" + CATEGORY = _category + RETURN_TYPES = ("BOOLEAN",) + FUNCTION = "execute" + DESCRIPTION = "Creates a true/false trigger based on facial expressions exceeding thresholds. Perfect for activating workflows when someone smiles, frowns, or makes specific expressions." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "blendshapes": ("BLENDSHAPES_LIST", {"tooltip": "Facial expression data from the Face Landmarker node"}), + "blendshape_name": (ALL_BLENDSHAPE_CATEGORIES, {"default": "jawOpen", + "tooltip": "The specific facial expression to monitor (e.g., smile, frown, open mouth)"}), + "threshold": ("FLOAT", {"default": 0.5, "step": 0.01, + "tooltip": "The expression intensity threshold value that triggers the condition"}), + "condition": (["Above", "Below", "Equals", "Not Equals"], + {"tooltip": "The condition that determines when to trigger - Above (expression > threshold), Below (expression < threshold), etc."}), + } + } + + def execute(self, blendshapes, blendshape_name, threshold, condition): + raw_score = get_blendshape_score(blendshapes, blendshape_name) + + triggered = False + if raw_score is not None: + if condition == "Above" and raw_score > threshold: + triggered = True + elif condition == "Below" and raw_score < threshold: + triggered = True + elif condition == "Equals" and abs(raw_score - threshold) < FLOAT_EQUALITY_TOLERANCE: + triggered = True + elif condition == "Not Equals" and abs(raw_score - threshold) >= FLOAT_EQUALITY_TOLERANCE: + triggered = True + + return (triggered,) + + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "BlendshapeControlFloat": BlendshapeControlFloatNode, + "BlendshapeControlInt": BlendshapeControlIntNode, + "BlendshapeTrigger": BlendshapeTriggerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "BlendshapeControlFloat": "Blendshape Control (Float)", + "BlendshapeControlInt": "Blendshape Control (Int)", + "BlendshapeTrigger": "Blendshape Trigger", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection.py b/node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection.py new file mode 100644 index 0000000..dba20f2 --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection.py @@ -0,0 +1,101 @@ +"""Node wrapper for face detection.""" + +import torch +from .....src.mediapipe_vision.face_landmark.detector import FaceLandmarkDetector +# Import Base Classes +from ...common.model_loader import MediaPipeModelLoaderBaseNode +from ...common.base_detector_node import BaseMediaPipeDetectorNode +import logging + +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/Face/FaceLandmark" +# Inherit from Base Loader +class MediaPipeFaceLandmarkerModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Face Landmarker models.""" + TASK_TYPE = "face_landmarker" + RETURN_TYPES = ("FACE_LANDMARKER_MODEL_INFO",) # Specific return type + RETURN_NAMES = ("model_info",) + CATEGORY = _category + DESCRIPTION = "Loads a MediaPipe Face Landmarker model which detects facial landmarks, expressions and face orientation. Required before using the Face Landmarker node." + # INPUT_TYPES and FUNCTION inherited + + +class MediaPipeFaceLandmarkerNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Face Landmark Detection.""" + + # Define class variables required by the base class + DETECTOR_CLASS = FaceLandmarkDetector + MODEL_INFO_TYPE = "FACE_LANDMARKER_MODEL_INFO" + EXPECTED_TASK_TYPE = "face_landmarker" + RETURN_TYPES = ("FACE_LANDMARKS", "BLENDSHAPES_LIST", "TRANSFORM_MATRIX_LIST") + RETURN_NAMES = ("landmarks", "blendshapes", "transform_matrices") + FUNCTION = "detect" + CATEGORY = _category + DESCRIPTION = "Detects precise facial landmarks (478 points), expressions, and head orientation in images. Provides detailed data for face tracking, animation, or specialized face image processing." + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add face-specific parameters + inputs["required"].update({ + "max_results": ("INT", {"default": 1, "min": 1, "max": 10, "step": 1, + "tooltip": "Maximum number of faces to analyze - higher values detect landmarks on more faces but use more processing power"}), + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence threshold for detecting faces - lower finds more faces but may include false positives"}), + "min_presence_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence that a face is present - lower values may detect faces that are less clear"}), + "min_tracking_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence for tracking a face between frames - lower values maintain tracking longer but may drift"}), + "output_blendshapes": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, outputs facial expression data (smile, frown, etc.) useful for animation or emotion analysis"}), + "output_transform_matrix": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, outputs 3D face orientation data (head pose) useful for AR/VR applications"}), + }) + + return inputs + + def detect(self, image: torch.Tensor, model_info: dict, max_results: int, + min_confidence: float, min_presence_confidence: float, + min_tracking_confidence: float, output_blendshapes: bool, + output_transform_matrix: bool, running_mode: str, delegate: str): + """Performs face landmark detection with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Perform detection with all parameters + face_landmarks_batch, blendshapes_batch, matrices_batch = detector.detect( + image, + num_faces=max_results, + min_detection_confidence=min_confidence, + min_presence_confidence=min_presence_confidence, + min_tracking_confidence=min_tracking_confidence, + output_blendshapes=output_blendshapes, + output_transform_matrix=output_transform_matrix, + running_mode=running_mode, + delegate=delegate + ) + + # Return the results with optional empty lists for disabled outputs + return ( + face_landmarks_batch, + blendshapes_batch if output_blendshapes else [], + matrices_batch if output_transform_matrix else [] + ) + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipeFaceLandmarkerModelLoader": MediaPipeFaceLandmarkerModelLoaderNode, + "MediaPipeFaceLandmarker": MediaPipeFaceLandmarkerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeFaceLandmarkerModelLoader": "Load Face Landmarker Model (MediaPipe)", + "MediaPipeFaceLandmarker": "Face Landmarker (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection_visualization.py b/node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection_visualization.py new file mode 100644 index 0000000..6297f52 --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/face_landmark_detection_visualization.py @@ -0,0 +1,35 @@ +# visualize_face.py +import mediapipe as mp +from typing import Optional, List, Any + +from ...common.base_visualization_nodes import BaseLandmarkVisualizationNode + +import logging +logger = logging.getLogger(__name__) + +# Define standard face connections +FACE_CONNECTIONS = mp.solutions.face_mesh.FACEMESH_TESSELATION + +class VisualizeFaceLandmarks(BaseLandmarkVisualizationNode): + LANDMARKS_TYPE = "FACE_LANDMARKS" + CONNECTIONS = FACE_CONNECTIONS + DEFAULT_DRAW_POINTS = False + DEFAULT_POINT_COLOR = "#FFFF00" + DEFAULT_POINT_RADIUS = 1 + DEFAULT_CONNECTION_COLOR = "#00FF00" + DEFAULT_CONNECTION_THICKNESS = 1 + SUPPORTS_VISIBILITY = False + CATEGORY = "Realtime Nodes/MediaPipe Vision/Face/FaceLandmark/Visualization" + DESCRIPTION = "Visualizes facial landmarks by drawing a mesh of points and connections on the face. Creates a detailed facial wireframe that shows the precise contours and features of detected faces." + + def get_landmark_list(self, detection_result: Any) -> Optional[List[Any]]: + return detection_result + +# Node registration +NODE_CLASS_MAPPINGS = { + "VisualizeFaceLandmarks": VisualizeFaceLandmarks +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "VisualizeFaceLandmarks": "Visualize Face Landmarks (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/face_masking.py b/node_wrappers/mediapipe_vision/face/landmark/face_masking.py new file mode 100644 index 0000000..0832272 --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/face_masking.py @@ -0,0 +1,109 @@ +# node_wrappers/face/masking.py +import torch +import numpy as np +import cv2 +import logging +from typing import List, Dict, Tuple + +from .....src.mediapipe_vision.types import LandmarkPoint +from .....src.mediapipe_vision.utils.mask_utils import create_mask_from_points + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Face/FaceLandmark/Masking" +# --- Face Part Definitions --- +FACE_PART_INDICES = { # NOTE: These indices are EXAMPLES and NEED VERIFICATION! + "FACE_OVAL": [10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288, 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136, 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109], + "LIPS_OUTER": [61, 146, 91, 181, 84, 17, 314, 405, 321, 375, 291, 62, 185, 40, 39, 37, 0, 267, 269, 270, 409, 292], + "LIPS_INNER": [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308, 76, 191, 81, 82, 13, 312, 311, 310, 415, 306], + "LEFT_EYE": [33, 7, 163, 144, 145, 153, 154, 155, 133, 246, 161, 160, 159, 158, 157, 173], + "RIGHT_EYE": [263, 249, 390, 373, 374, 380, 381, 382, 362, 466, 388, 387, 386, 385, 384, 398], + "LEFT_EYEBROW": [70, 63, 105, 66, 107, 55, 65, 52, 53, 46], + "RIGHT_EYEBROW": [300, 293, 334, 296, 336, 285, 295, 282, 283, 276], + "NOSE_BRIDGE": [168, 6, 197, 195, 5], + "NOSE_TIP_LOWER": [5, 4, 1, 19, 94, 2], +} + +# --- Node Definition --- +class MaskFromFaceLandmarksNode: + """Creates a mask for a specific facial part from Face Landmarks.""" + CATEGORY = _category + DESCRIPTION = "Creates precise masks for specific facial features like eyes, lips, nose, or the entire face. Perfect for targeted editing, inpainting, or creating effects on specific facial regions." + + @classmethod + def INPUT_TYPES(cls): + part_names = list(FACE_PART_INDICES.keys()) + return { + "required": { + "face_landmarks": ("FACE_LANDMARKS", {"tooltip": "Facial landmark data from the Face Landmarker node containing the precise locations of facial features"}), + "image_for_dimensions": ("IMAGE", {"tooltip": "Reference image to determine the size of the output mask - the mask will match these dimensions"}), + "part_name": (part_names, {"default": "FACE_OVAL", + "tooltip": "Choose which facial feature to create a mask for - FACE_OVAL (whole face), LIPS_OUTER (mouth), LEFT_EYE, etc."}), + } + } + + RETURN_TYPES = ("MASK",) + FUNCTION = "generate_mask" + + def generate_mask(self, face_landmarks: List[List[List[LandmarkPoint]]], image_for_dimensions: torch.Tensor, part_name: str): + if part_name not in FACE_PART_INDICES: + raise ValueError(f"Unknown face part name: '{part_name}'. Available: {list(FACE_PART_INDICES.keys())}") + + # Get dimensions from image + if image_for_dimensions.dim() != 4: + raise ValueError("image_for_dimensions must be BHWC format.") + height = image_for_dimensions.shape[1] + width = image_for_dimensions.shape[2] + input_batch_size = image_for_dimensions.shape[0] + device = image_for_dimensions.device + + # Validate batch sizes match + if len(face_landmarks) != input_batch_size: + logger.warning(f"Batch size mismatch between face_landmarks ({len(face_landmarks)}) and image_for_dimensions ({input_batch_size}). Using landmark batch size.") + # Adjust effective batch size based on landmarks if mismatched, though ideally they match + batch_size = len(face_landmarks) + else: + batch_size = input_batch_size + + required_indices = FACE_PART_INDICES[part_name] + output_masks = [] + + for i in range(batch_size): + landmarks_for_image = face_landmarks[i] # List[List[LandmarkPoint]] (Faces in image) + combined_points_for_image = [] + + # Combine points from all detected faces for the selected part + for face_result_landmarks in landmarks_for_image: # face_result_landmarks is List[LandmarkPoint] + points_dict = {lm.index: lm for lm in face_result_landmarks} # Iterate directly over the list + part_points = [] + for idx in required_indices: + if idx in points_dict: + lm = points_dict[idx] + px = int(lm.x * width) + py = int(lm.y * height) + part_points.append((px, py)) + # Removed warning here to avoid spam if landmarks are just missing + combined_points_for_image.extend(part_points) + + # Create mask from all collected points for this image + mask_tensor = create_mask_from_points(height, width, combined_points_for_image, device=device) + output_masks.append(mask_tensor) + + if not output_masks: + logger.warning("No landmarks found to generate any masks. Returning zero mask batch.") + output_batch = torch.zeros((input_batch_size, 1, height, width), dtype=torch.float32, device=device) + else: + # Stack along batch dimension, ensure channel dim is present + output_batch = torch.stack(output_masks, dim=0) # Shape becomes (B, 1, H, W) + + return (output_batch,) + +# Remove GetImageDimensionsNode class definition + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MaskFromFaceLandmarks": MaskFromFaceLandmarksNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MaskFromFaceLandmarks": "Mask From Face Landmarks (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/head_pose.py b/node_wrappers/mediapipe_vision/face/landmark/head_pose.py new file mode 100644 index 0000000..8eff28d --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/head_pose.py @@ -0,0 +1,219 @@ +# node_wrappers/face/head_pose.py +import logging +import numpy as np +from scipy.spatial.transform import Rotation as R +from typing import Optional, List, Any, Tuple, Dict + +from .....src.mediapipe_vision.types import TRANSFORM_MATRIX_LIST +from .....src.mediapipe_vision.utils.delta_utils import scale_value +from ...common.universal_landmark_nodes import FLOAT_EQUALITY_TOLERANCE # For trigger node comparisons + +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/Face/HeadPose" + +# --- Helper Functions --- +def get_first_transform_matrix(matrix_result: TRANSFORM_MATRIX_LIST) -> Optional[np.ndarray]: + """Extracts the first 4x4 transformation matrix from the result.""" + if matrix_result is None or len(matrix_result) == 0: + return None + if len(matrix_result[0]) == 0: + return None + if matrix_result[0][0] is None: + return None + # FACE_TRANSFORM_MATRICES structure: List[List[np.ndarray]] + return matrix_result[0][0] + +def decompose_transform_matrix(matrix: np.ndarray) -> Optional[Dict[str, float]]: + """Decomposes a 4x4 matrix into translation (x, y, z) and Euler angles (pitch, yaw, roll).""" + if matrix is None or matrix.shape != (4, 4): + return None + try: + # Extract translation + translation = matrix[:3, 3] + # Extract rotation matrix part + rotation_matrix = matrix[:3, :3] + # Convert rotation matrix to Euler angles (ZYX convention common for head pose) + # Note: Scipy uses intrinsic rotations. ZYX order corresponds to yaw, pitch, roll. + rotation = R.from_matrix(rotation_matrix) + euler_angles_rad = rotation.as_euler('zyx', degrees=False) + # Convert radians to degrees for easier interpretation + euler_angles_deg = np.degrees(euler_angles_rad) + + return { + "x": translation[0], + "y": translation[1], + "z": translation[2], + "yaw": euler_angles_deg[0], # Rotation around Y (vertical) axis + "pitch": euler_angles_deg[1], # Rotation around X (side-to-side) axis + "roll": euler_angles_deg[2], # Rotation around Z (front-to-back) axis + } + except Exception as e: + logger.error(f"Error decomposing matrix: {e}") + return None + + +# --- Control Node --- +HEAD_POSE_COMPONENTS = ["x", "y", "z", "pitch", "yaw", "roll"] + +class HeadPoseControlFloatNode: + """Outputs a scaled FLOAT based on a selected component (translation/rotation) of the head pose.""" + CATEGORY = _category + RETURN_TYPES = ("FLOAT",) + FUNCTION = "execute" + DESCRIPTION = "Converts head position and orientation into floating point values. Use this to control parameters based on head movements like nodding, turning left/right, or tilting." + + @classmethod + def INPUT_TYPES(cls): + # Example ranges - these might need tuning based on expected matrix values + default_ranges = { + "x": (-0.5, 0.5), "y": (-0.5, 0.5), "z": (-1.0, 0.5), # Example translation ranges + "pitch": (-45.0, 45.0), "yaw": (-60.0, 60.0), "roll": (-45.0, 45.0) # Example angle ranges (degrees) + } + default_component = "yaw" + default_min, default_max = default_ranges[default_component] + + return { + "required": { + "face_transform_matrices": ("TRANSFORM_MATRIX_LIST", {"tooltip": "3D head orientation data from the Face Landmarker node"}), + "component": (HEAD_POSE_COMPONENTS, {"default": default_component, + "tooltip": "Which aspect of head movement to track - yaw (left/right), pitch (up/down), roll (tilt), or position (x/y/z)"}), + "value_min": ("FLOAT", {"default": default_min, "step": 0.1, + "tooltip": "The minimum value of the selected movement component to consider"}), + "value_max": ("FLOAT", {"default": default_max, "step": 0.1, + "tooltip": "The maximum value of the selected movement component to consider"}), + "output_min_float": ("FLOAT", {"default": 0.0, "step": 0.01, + "tooltip": "The minimum output value when head position is at or below value_min"}), + "output_max_float": ("FLOAT", {"default": 1.0, "step": 0.01, + "tooltip": "The maximum output value when head position is at or above value_max"}), + "clamp": ("BOOLEAN", {"default": True, + "tooltip": "When enabled, restricts output values to stay within min and max range"}), + } + } + + def execute(self, face_transform_matrices, component, value_min, value_max, output_min_float, output_max_float, clamp): + matrix = get_first_transform_matrix(face_transform_matrices) + decomposed = decompose_transform_matrix(matrix) + + raw_value = None + if decomposed and component in decomposed: + raw_value = decomposed[component] + else: + logger.debug(f"Could not get head pose component '{component}'") + + scaled_value = scale_value(raw_value, value_min, value_max, output_min_float, output_max_float, clamp) + + # Default to min output value on error + output_val = scaled_value if scaled_value is not None else float(output_min_float) + return (output_val,) + +class HeadPoseControlIntNode: + """Outputs a scaled INT based on a selected component (translation/rotation) of the head pose.""" + CATEGORY = _category + RETURN_TYPES = ("INT",) + FUNCTION = "execute" + DESCRIPTION = "Converts head position and orientation into integer values. Perfect for selecting options, changing steps/seeds, or triggering numbered presets based on where someone is looking." + + @classmethod + def INPUT_TYPES(cls): + # Share the same default range logic as Float node + default_ranges = { + "x": (-0.5, 0.5), "y": (-0.5, 0.5), "z": (-1.0, 0.5), + "pitch": (-45.0, 45.0), "yaw": (-60.0, 60.0), "roll": (-45.0, 45.0) + } + default_component = "yaw" + default_min, default_max = default_ranges[default_component] + + return { + "required": { + "face_transform_matrices": ("TRANSFORM_MATRIX_LIST", {"tooltip": "3D head orientation data from the Face Landmarker node"}), + "component": (HEAD_POSE_COMPONENTS, {"default": default_component, + "tooltip": "Which aspect of head movement to track - yaw (left/right), pitch (up/down), roll (tilt), or position (x/y/z)"}), + "value_min": ("FLOAT", {"default": default_min, "step": 0.1, + "tooltip": "The minimum value of the selected movement component to consider"}), + "value_max": ("FLOAT", {"default": default_max, "step": 0.1, + "tooltip": "The maximum value of the selected movement component to consider"}), + "output_min_int": ("INT", {"default": 0, + "tooltip": "The minimum integer output value when head position is at or below value_min"}), + "output_max_int": ("INT", {"default": 100, + "tooltip": "The maximum integer output value when head position is at or above value_max"}), + "clamp": ("BOOLEAN", {"default": True, + "tooltip": "When enabled, restricts output values to stay within min and max range"}), + } + } + + def execute(self, face_transform_matrices, component, value_min, value_max, output_min_int, output_max_int, clamp): + matrix = get_first_transform_matrix(face_transform_matrices) + decomposed = decompose_transform_matrix(matrix) + + raw_value = None + if decomposed and component in decomposed: + raw_value = decomposed[component] + else: + logger.debug(f"Could not get head pose component '{component}'") + + scaled_value = scale_value(raw_value, value_min, value_max, output_min_int, output_max_int, clamp) + + # Default to min output value on error + output_val = int(round(scaled_value)) if scaled_value is not None else int(output_min_int) + return (output_val,) + + +# --- Trigger Node --- +class HeadPoseTriggerNode: + """Outputs a BOOLEAN trigger if a head pose component crosses a threshold.""" + CATEGORY = _category + RETURN_TYPES = ("BOOLEAN",) + FUNCTION = "execute" + DESCRIPTION = "Creates a true/false trigger based on head movements exceeding thresholds. Use it to activate workflows when someone nods, looks left/right, or tilts their head a certain amount." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "face_transform_matrices": ("TRANSFORM_MATRIX_LIST", {"tooltip": "3D head orientation data from the Face Landmarker node"}), + "component": (HEAD_POSE_COMPONENTS, {"default": "yaw", + "tooltip": "Which aspect of head movement to track - yaw (left/right), pitch (up/down), roll (tilt), or position (x/y/z)"}), + "threshold": ("FLOAT", {"default": 30.0, "step": 0.5, + "tooltip": "The angle or position value that triggers the condition (example: 30 degrees of head turn)"}), + "condition": (["Above", "Below", "Equals", "Not Equals"], + {"tooltip": "The condition that determines when to trigger - Above (movement > threshold), Below (movement < threshold), etc."}), + } + } + + def execute(self, face_transform_matrices, component, threshold, condition): + matrix = get_first_transform_matrix(face_transform_matrices) + decomposed = decompose_transform_matrix(matrix) + + raw_value = None + if decomposed and component in decomposed: + raw_value = decomposed[component] + else: + logger.debug(f"Could not get head pose component '{component}' for trigger") + + triggered = False + if raw_value is not None: + if condition == "Above" and raw_value > threshold: + triggered = True + elif condition == "Below" and raw_value < threshold: + triggered = True + elif condition == "Equals" and abs(raw_value - threshold) < FLOAT_EQUALITY_TOLERANCE: + triggered = True + elif condition == "Not Equals" and abs(raw_value - threshold) >= FLOAT_EQUALITY_TOLERANCE: + triggered = True + + return (triggered,) + + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "HeadPoseControlFloat": HeadPoseControlFloatNode, + "HeadPoseControlInt": HeadPoseControlIntNode, + "HeadPoseTrigger": HeadPoseTriggerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "HeadPoseControlFloat": "Head Pose Control (Float)", + "HeadPoseControlInt": "Head Pose Control (Int)", + "HeadPoseTrigger": "Head Pose Trigger", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/position.py b/node_wrappers/mediapipe_vision/face/landmark/position.py new file mode 100644 index 0000000..2283bdd --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/position.py @@ -0,0 +1,33 @@ +import logging +from ...common.universal_landmark_nodes import LandmarkPositionBaseNode + +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/Face/FaceLandmark/Position" + +class FaceLandmarkPositionNode(LandmarkPositionBaseNode): + """Extracts position lists (x, y, z, vis, pres) for a specific landmark index + from FACE_LANDMARKS across the batch.""" + CATEGORY = _category + # Define the specific input type string this node expects + LANDMARKS_TYPE = "FACE_LANDMARKS" + DESCRIPTION = "Extracts lists of coordinates (x, y, z) and properties (visibility, presence) for a specific Face Landmark index across an entire batch. Outputs separate lists for each property." + + @classmethod + def INPUT_TYPES(cls): + # Define the specific input type for this node + return { + "required": { + "landmarks": (cls.LANDMARKS_TYPE, {"forceInput": True}), # Use the class variable + "landmark_index": ("INT", {"default": 0, "min": 0}), + } + } + +# --- Node Mappings --- +NODE_CLASS_MAPPINGS = { + "FaceLandmarkPosition": FaceLandmarkPositionNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "FaceLandmarkPosition": "Face Landmark Position Extractor (Batch)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/landmark/texture_warp.py b/node_wrappers/mediapipe_vision/face/landmark/texture_warp.py new file mode 100644 index 0000000..abd7875 --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/landmark/texture_warp.py @@ -0,0 +1,60 @@ +# node_wrappers/face/texture_warp.py +import logging +import torch +import numpy as np + +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/Face/Experimental" + +class FaceTextureWarpNode: + """(Experimental) Attempts to warp a texture based on the face transform matrix. + NOTE: This is a conceptual placeholder. Actual warping requires significant + integration with sampling or image processing libraries. + """ + CATEGORY = _category + RETURN_TYPES = ("IMAGE",) + FUNCTION = "execute" + DESCRIPTION = "(Experimental) Designed to warp textures to match face orientation, potentially allowing for facial texture replacement or customized face overlays. Currently a placeholder for future implementation." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "target_image": ("IMAGE", {"tooltip": "The base image containing a face onto which the texture will be applied"}), + "texture_image": ("IMAGE", {"tooltip": "The texture image to be warped onto the face (could be another face, pattern, or design)"}), + "face_transform_matrices": ("TRANSFORM_MATRIX_LIST", {"tooltip": "3D head orientation data from the Face Landmarker node to determine warping angles"}), + # Potentially add mask input for blending? + }, + "optional": { + "offset_x": ("FLOAT", {"default": 0.0, "step": 0.01, "tooltip": "Horizontal positioning adjustment for the texture overlay"}), + "offset_y": ("FLOAT", {"default": 0.0, "step": 0.01, "tooltip": "Vertical positioning adjustment for the texture overlay"}), + "scale": ("FLOAT", {"default": 1.0, "step": 0.01, "tooltip": "Size adjustment for the texture overlay (1.0 = original size)"}), + } + } + + def execute(self, target_image, texture_image, face_transform_matrices, offset_x=0.0, offset_y=0.0, scale=1.0): + logger.warning(f"{self.__class__.__name__} is experimental and does not perform actual warping yet.") + #TODO: implement this + # --- Conceptual Logic --- + # 1. Get the primary face transform matrix + # 2. Potentially combine with offset/scale parameters + # 3. Define or load a canonical 3D face model mesh. + # 4. Project the canonical mesh onto the 2D target_image plane using the matrix. + # 5. Determine the UV coordinates on the texture_image corresponding to the projected vertices. + # 6. Perform perspective warping of the texture_image onto the target_image using the + # calculated transformation (e.g., using OpenCV's getPerspectiveTransform and warpPerspective, + # or more advanced 3D rendering techniques). + # 7. Blend the warped texture onto the target image (potentially using a face mask). + + # For now, just return the original target image + return (target_image,) + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "FaceTextureWarp": FaceTextureWarpNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "FaceTextureWarp": "Face Texture Warp (Experimental)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/face/stylization/face_stylization.py b/node_wrappers/mediapipe_vision/face/stylization/face_stylization.py new file mode 100644 index 0000000..2f5bfbd --- /dev/null +++ b/node_wrappers/mediapipe_vision/face/stylization/face_stylization.py @@ -0,0 +1,81 @@ +import torch +import logging + +# Import Base Loader and Detector +from ...common.model_loader import MediaPipeModelLoaderBaseNode +from .....src.mediapipe_vision.face_stylization.detector import FaceStylizer + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Face/FaceStylization" +# --- Model Loader --- +class MediaPipeFaceStylizerModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Face Stylizer models.""" + TASK_TYPE = "face_stylizer" # Need to add this task to MEDIAPIPE_MODELS + RETURN_TYPES = ("FACE_STYLIZER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category + DESCRIPTION = "Loads a MediaPipe Face Stylizer model that can transform face images into artistic styles. Required before using the Face Stylizer node." +# --- Stylizer Node --- +class MediaPipeFaceStylizerNode: + """ComfyUI node for MediaPipe Face Stylization.""" + + def __init__(self): + self._detector: FaceStylizer = None + self._model_path: str = None + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE", {"tooltip": "Input image containing faces to be artistically stylized"}), + "model_info": ("FACE_STYLIZER_MODEL_INFO", {"tooltip": "Face stylizer model loaded from the 'Load Face Stylizer Model' node"}), + } + } + + RETURN_TYPES = ("IMAGE",) # Output is a stylized image + RETURN_NAMES = ("stylized_image",) + FUNCTION = "stylize_face" + CATEGORY = _category + DESCRIPTION = "Applies artistic styles to faces in images without affecting the background. Creates cartoon-like or artistic renditions of faces while preserving identity." + + def stylize_face(self, image: torch.Tensor, model_info: dict): + """Applies face stylization.""" + + task_type = model_info.get('task_type') + expected_task_type = MediaPipeFaceStylizerModelLoaderNode.TASK_TYPE + if not isinstance(model_info, dict) or task_type != expected_task_type: + raise ValueError(f"Invalid model_info. Expected task_type '{expected_task_type}' but got '{task_type}'.") + model_path = model_info.get('model_path') + if not model_path: + raise ValueError("Model path not found or invalid in model_info.") + + # Manage detector instance + if self._detector is None or self._model_path != model_path: + if self._detector and hasattr(self._detector, 'close'): + try: self._detector.close() + except Exception as e: logger.warning(f"Error closing FaceStylizer: {e}") + logger.info(f"Creating new FaceStylizer instance for {model_path}") + self._detector = FaceStylizer(model_path) + self._model_path = model_path + + # Call the detector's stylize method + stylized_image_batch = self._detector.stylize(image) + + return (stylized_image_batch,) + + def __del__(self): + if hasattr(self, '_detector') and self._detector and hasattr(self._detector, 'close'): + try: self._detector.close() + except Exception as e: logger.warning(f"Error closing FaceStylizer in __del__: {e}") + self._detector = None + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MediaPipeFaceStylizerModelLoader": MediaPipeFaceStylizerModelLoaderNode, + "MediaPipeFaceStylizer": MediaPipeFaceStylizerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeFaceStylizerModelLoader": "Load Face Stylizer Model (MediaPipe)", + "MediaPipeFaceStylizer": "Face Stylizer (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/__init__.py b/node_wrappers/mediapipe_vision/hand/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/gesture/gesture_visualiztion.py b/node_wrappers/mediapipe_vision/hand/gesture/gesture_visualiztion.py new file mode 100644 index 0000000..c93a659 --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/gesture/gesture_visualiztion.py @@ -0,0 +1,140 @@ +# visualize_gestures.py +import torch +import numpy as np +import cv2 + +from ...common.base_visualization_nodes import BaseDetectionVisualizationNode + +import logging +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/Hand/GestureVisualization" + +class VisualizeGestureRecognitions(BaseDetectionVisualizationNode): + """Draws recognized gesture labels onto images near the detected hand.""" + CATEGORY = _category + DESCRIPTION = "Visualizes recognized hand gestures by drawing text labels next to hands in the image. Displays gesture names like 'Thumbs Up', 'Victory', 'Open Palm' etc. near each detected hand." + + # Override font scale for gesture labels (larger than default) + FONT_SCALE = 0.7 # Larger than default for gesture labels + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "gesture_recognitions": ("GESTURE_RECOGNITIONS", {"tooltip": "Gesture recognition results from the Gesture Recognizer node"}), + "hand_landmarks": ("HAND_LANDMARKS", {"tooltip": "Hand landmark data from the Hand Landmarker node - needed to position the text labels"}), + "image": ("IMAGE", {"tooltip": "The image on which to draw gesture labels"}), + }, + "optional": { + "label_color": ("STRING", {"default": "#FFFFFF", "tooltip": "Hex color code for the gesture label text (default: white)"}), + "label_bg_color": ("STRING", {"default": "#0000FF", "tooltip": "Hex color code for the label background (default: blue)"}), + "y_offset": ("INT", {"default": -30, "step": 5, "tooltip": "Vertical position adjustment for text labels relative to the wrist - negative moves up, positive moves down"}), + } + } + + RETURN_TYPES = ("IMAGE",) + FUNCTION = "draw_visualizations" + + def draw_visualizations(self, gesture_recognitions, hand_landmarks, image, + label_color="#FFFFFF", label_bg_color="#0000FF", y_offset=-30): + """Main validation and batch processing function.""" + if not gesture_recognitions: + logger.warning("VisualizeGestureRecognitions: No gestures provided.") + return (image,) + if not hand_landmarks: + logger.warning("VisualizeGestureRecognitions: Hand landmarks required for positioning text.") + return (image,) + + # Basic batch size check + batch_size = len(image) + if len(gesture_recognitions) != batch_size or len(hand_landmarks) != batch_size: + logger.error(f"VisualizeGestureRecognitions: Batch size mismatch. Images: {batch_size}, Gestures: {len(gesture_recognitions)}, Landmarks: {len(hand_landmarks)}. Cannot proceed.") + return (image,) + + # Pair gestures with landmarks for convenience + paired_data = list(zip(gesture_recognitions, hand_landmarks)) + + # Use the base class process_batch method with our custom drawing function + return self.process_batch( + paired_data, # We're passing paired data instead of just detections + image, + self.draw_gestures, + label_color=label_color, + label_bg_color=label_bg_color, + y_offset=y_offset + ) + + def draw_gestures(self, image, width, height, paired_data, + label_color="#FFFFFF", label_bg_color="#0000FF", y_offset=-30): + """Draw gestures for a single image.""" + gestures_for_image, landmarks_for_image = paired_data + + # Check if number of detected hands matches for gestures and landmarks + if len(gestures_for_image) != len(landmarks_for_image): + logger.warning(f"VisualizeGestureRecognitions: Mismatch between detected gestures and landmarks. Skipping labels.") + return + + if not gestures_for_image: + return + + # Iterate through each detected hand/gesture set for this image + for hand_idx, gesture_result in enumerate(gestures_for_image): + landmark_result = landmarks_for_image[hand_idx] + + # Get top gesture category + top_gesture = "N/A" + if gesture_result.gestures: + top_gesture = gesture_result.gestures[0].display_name or gesture_result.gestures[0].category_name or "N/A" + + # Use wrist landmark (index 0) for positioning text + if not landmark_result.landmarks or len(landmark_result.landmarks) == 0: + logger.warning(f"VisualizeGestureRecognitions: No landmarks found for this hand to position text.") + continue + + wrist_lm = landmark_result.landmarks[0] # Assuming index 0 is wrist + cx = int(wrist_lm.x * width) + cy = int(wrist_lm.y * height) + y_offset # Apply offset + + label_text = f"{top_gesture}" + + # Draw label with background + try: + # Get text size + text_width, text_height = self.get_text_dimensions(label_text, self.FONT_SCALE) + + # Center the text around the wrist point + text_x = cx - (text_width // 2) + text_y = cy - (text_height // 2) + + # Draw the text with background + self.draw_text_with_background( + image, + label_text, + (text_x, text_y), + text_color=label_color, + bg_color=label_bg_color, + font_scale=self.FONT_SCALE + ) + except Exception as e: + logger.error(f"Error drawing text label for gesture: {e}") + # Fallback: Draw text directly + cv2.putText( + image, + label_text, + (cx, cy), + cv2.FONT_HERSHEY_SIMPLEX, + self.FONT_SCALE, + self._hex_to_bgr(label_color), + 1, + cv2.LINE_AA + ) + +# Node registration +NODE_CLASS_MAPPINGS = { + "VisualizeGestureRecognitions": VisualizeGestureRecognitions +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "VisualizeGestureRecognitions": "Visualize Gestures (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/gesture/guesture.py b/node_wrappers/mediapipe_vision/hand/gesture/guesture.py new file mode 100644 index 0000000..af1f4d8 --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/gesture/guesture.py @@ -0,0 +1,85 @@ +import torch +import logging + +# Import Base Loader and Detector +from ...common.model_loader import MediaPipeModelLoaderBaseNode +from ...common.base_detector_node import BaseMediaPipeDetectorNode +from .....src.mediapipe_vision.gesture_recognition.detector import GestureRecognizer + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Hand/GestureRecognition" +# --- Model Loader --- +class MediaPipeGestureRecognizerModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Gesture Recognizer models.""" + TASK_TYPE = "gesture_recognizer" # Need to add this task to MEDIAPIPE_MODELS in src/model_loader.py + RETURN_TYPES = ("GESTURE_RECOGNIZER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category + DESCRIPTION = "Loads a MediaPipe Gesture Recognizer model for identifying hand gestures in images, such as thumbs up, open palm, pointing, etc. Required before using the Gesture Recognizer node." +# --- Recognizer Node --- +class MediaPipeGestureRecognizerNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Gesture Recognition.""" + + # Define class variables required by the base class + DETECTOR_CLASS = GestureRecognizer + MODEL_INFO_TYPE = "GESTURE_RECOGNIZER_MODEL_INFO" + EXPECTED_TASK_TYPE = "gesture_recognizer" + RETURN_TYPES = ("GESTURE_RECOGNITIONS",) + RETURN_NAMES = ("gesture_recognitions",) + FUNCTION = "recognize_gestures" + CATEGORY = _category + DESCRIPTION = "Identifies common hand gestures in images like thumbs up, victory sign, open palm, etc. Provides both gesture names and confidence scores for recognized hand poses." + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add gesture-specific parameters + inputs["required"].update({ + "max_results": ("INT", {"default": 2, "min": 1, "max": 4, "step": 1, + "tooltip": "Maximum number of hands to analyze in the image - higher values can detect more hands but use more processing power"}), + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence threshold for hand detection - lower values detect more hands but may include false positives"}), + "min_tracking_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence threshold for tracking hands between frames - lower values maintain tracking longer but may be less accurate"}), + "min_presence_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence that a hand is present - lower values may detect hands that are less clear"}), + }) + + return inputs + + def recognize_gestures(self, image: torch.Tensor, model_info: dict, max_results: int, + min_confidence: float, min_tracking_confidence: float, min_presence_confidence: float, + running_mode: str, delegate: str): + """Performs gesture recognition on the input image.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Call the detector's recognize method with standardized parameters + gesture_results_batch = detector.recognize( + image, + num_hands=max_results, + min_detection_confidence=min_confidence, + min_tracking_confidence=min_tracking_confidence, + min_presence_confidence=min_presence_confidence, + running_mode=running_mode, + delegate=delegate + ) + + return (gesture_results_batch,) + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MediaPipeGestureRecognizerModelLoader": MediaPipeGestureRecognizerModelLoaderNode, + "MediaPipeGestureRecognizer": MediaPipeGestureRecognizerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeGestureRecognizerModelLoader": "Load Gesture Recognizer Model (MediaPipe)", + "MediaPipeGestureRecognizer": "Gesture Recognizer (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark.py b/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark.py new file mode 100644 index 0000000..c0e4bc2 --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark.py @@ -0,0 +1,89 @@ +import torch +from .....src.mediapipe_vision.hand_landmark.detector import HandLandmarkDetector +from ...common.model_loader import MediaPipeModelLoaderBaseNode +from ...common.base_detector_node import BaseMediaPipeDetectorNode +import logging + +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/Hand/HandLandmark" +class MediaPipeHandLandmarkerModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Hand Landmarker models.""" + TASK_TYPE = "hand_landmarker" + RETURN_TYPES = ("HAND_LANDMARKER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category + DESCRIPTION = "Loads a MediaPipe Hand Landmarker model for detecting hand positions and gestures in images. Required before using the Hand Landmarker node." + +class MediaPipeHandLandmarkerNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Hand Landmark Detection.""" + + # Define class variables required by the base class + DETECTOR_CLASS = HandLandmarkDetector + MODEL_INFO_TYPE = "HAND_LANDMARKER_MODEL_INFO" + EXPECTED_TASK_TYPE = "hand_landmarker" + RETURN_TYPES = ("HAND_LANDMARKS", "HANDEDNESS_LIST") + RETURN_NAMES = ("landmarks", "handedness") + FUNCTION = "detect" + CATEGORY = _category + DESCRIPTION = "Detects hands in images and provides precise landmark points for each finger joint and hand position. Also identifies whether each hand is left or right." + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add hand-specific parameters + inputs["required"].update({ + "max_results": ("INT", {"default": 2, "min": 1, "max": 4, "step": 1, + "tooltip": "Maximum number of hands to detect and track in the image - higher values can detect more hands but use more processing power"}), + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence threshold for hand detection - lower values detect more hands but may include false positives"}), + "min_presence_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence that a hand is present - lower values may detect hands that are less clear"}), + "min_tracking_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence for tracking a hand between frames - lower values maintain tracking longer but may drift"}), + }) + + return inputs + + def detect(self, image: torch.Tensor, model_info: dict, max_results: int, + min_confidence: float, min_presence_confidence: float, + min_tracking_confidence: float, running_mode: str, delegate: str): + """Performs hand landmark detection with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Perform detection with all parameters + hand_landmarks_batch = detector.detect( + image, + num_hands=max_results, + min_detection_confidence=min_confidence, + min_presence_confidence=min_presence_confidence, + min_tracking_confidence=min_tracking_confidence, + running_mode=running_mode, + delegate=delegate + ) + + # Extract handedness information + handedness_batch = [] + if hand_landmarks_batch: + for image_hands in hand_landmarks_batch: + handedness_per_image = [hand.handedness for hand in image_hands if hand.handedness is not None] + handedness_batch.append(handedness_per_image) + + return (hand_landmarks_batch, handedness_batch) + +NODE_CLASS_MAPPINGS = { + "MediaPipeHandLandmarkerModelLoader": MediaPipeHandLandmarkerModelLoaderNode, + "MediaPipeHandLandmarker": MediaPipeHandLandmarkerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeHandLandmarkerModelLoader": "Load Hand Landmarker Model (MediaPipe)", + "MediaPipeHandLandmarker": "Hand Landmarker (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_masking.py b/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_masking.py new file mode 100644 index 0000000..041b04e --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_masking.py @@ -0,0 +1,107 @@ +# node_wrappers/hand/masking.py +import torch +import numpy as np +import logging +from typing import List + +from .....src.mediapipe_vision.types import HandLandmarksResult +# Reusing the helper function from face masking +from .....src.mediapipe_vision.utils.mask_utils import create_mask_from_points + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Hand/HandLandmark/Masking" +# --- Hand Part Definitions (Based on standard MediaPipe Hand Indices) --- +# These indices need verification +HAND_PART_INDICES = { + "PALM": [0, 1, 5, 9, 13, 17], # Example + "THUMB": [1, 2, 3, 4], # Example + "INDEX_FINGER": [5, 6, 7, 8], # Example + "MIDDLE_FINGER": [9, 10, 11, 12], # Example + "RING_FINGER": [13, 14, 15, 16], # Example + "PINKY_FINGER": [17, 18, 19, 20], # Example + "WRIST": [0], # Single point, convex hull won't work + "ALL_FINGERS": list(range(1, 21)), # Example excluding wrist + "FULL_HAND": list(range(21)), # All points +} + +# --- Node Definition --- +class MaskFromHandLandmarksNode: + """Creates a mask for a specific hand part from Hand Landmarks.""" + CATEGORY = _category + DESCRIPTION = "Creates precise masks for specific hand parts like individual fingers, palm, or the entire hand. Perfect for targeted editing or creating effects on hands and fingers." + + @classmethod + def INPUT_TYPES(cls): + part_names = list(HAND_PART_INDICES.keys()) + return { + "required": { + "hand_landmarks": ("HAND_LANDMARKS", {"tooltip": "Hand landmark data from the Hand Landmarker node containing the precise locations of hand and finger joints"}), + "image_for_dimensions": ("IMAGE", {"tooltip": "Reference image to determine the size of the output mask - the mask will match these dimensions"}), + "part_name": (part_names, {"default": "FULL_HAND", + "tooltip": "Choose which part of the hand to create a mask for - FULL_HAND (entire hand), THUMB, INDEX_FINGER, PALM, etc."}), + } + } + + RETURN_TYPES = ("MASK",) + FUNCTION = "generate_mask" + + def generate_mask(self, hand_landmarks: List[List[HandLandmarksResult]], image_for_dimensions: torch.Tensor, part_name: str): + if part_name not in HAND_PART_INDICES: + raise ValueError(f"Unknown hand part name: '{part_name}'. Available: {list(HAND_PART_INDICES.keys())}") + + # Get dimensions from image + if image_for_dimensions.dim() != 4: + raise ValueError("image_for_dimensions must be BHWC format.") + height = image_for_dimensions.shape[1] + width = image_for_dimensions.shape[2] + input_batch_size = image_for_dimensions.shape[0] + device = image_for_dimensions.device + + # Validate batch sizes match + if len(hand_landmarks) != input_batch_size: + logger.warning(f"Batch size mismatch between hand_landmarks ({len(hand_landmarks)}) and image_for_dimensions ({input_batch_size}). Using landmark batch size.") + batch_size = len(hand_landmarks) + else: + batch_size = input_batch_size + + required_indices = HAND_PART_INDICES[part_name] + output_masks = [] + + for i in range(batch_size): + landmarks_for_image = hand_landmarks[i] # List[HandLandmarksResult] + combined_points_for_image = [] + + # Combine points from all detected hands for the selected part + for hand_result in landmarks_for_image: + points_dict = {lm.index: lm for lm in hand_result.landmarks} + part_points = [] + for idx in required_indices: + if idx in points_dict: + lm = points_dict[idx] + px = int(lm.x * width) + py = int(lm.y * height) + part_points.append((px, py)) + # No warning for missing index + combined_points_for_image.extend(part_points) + + # Create mask from all collected points for this image + mask_tensor = create_mask_from_points(height, width, combined_points_for_image, device=device) + output_masks.append(mask_tensor) + + if not output_masks: + logger.warning("No landmarks found to generate any masks. Returning zero mask batch.") + output_batch = torch.zeros((input_batch_size, 1, height, width), dtype=torch.float32, device=device) + else: + output_batch = torch.stack(output_masks, dim=0) + + return (output_batch,) + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MaskFromHandLandmarks": MaskFromHandLandmarksNode, + +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MaskFromHandLandmarks": "Mask From Hand Landmarks (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_visualization.py b/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_visualization.py new file mode 100644 index 0000000..3f7f73c --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/landmark/hand_landmark_visualization.py @@ -0,0 +1,40 @@ +# visualize_hand.py +import mediapipe as mp +from typing import Optional, List, Any + +from .....src.mediapipe_vision.types import HandLandmarksResult # Import specific result type if needed for extraction +from ...common.base_visualization_nodes import BaseLandmarkVisualizationNode + +import logging +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Hand/HandLandmark/Visualization" +# Define standard hand connections +HAND_CONNECTIONS = mp.solutions.hands.HAND_CONNECTIONS + +class VisualizeHandLandmarks(BaseLandmarkVisualizationNode): + """Draws Hand landmarks and connections onto images.""" + + # Override base class properties + LANDMARKS_TYPE = "HAND_LANDMARKS" + CONNECTIONS = HAND_CONNECTIONS + DEFAULT_DRAW_POINTS = True + DEFAULT_POINT_COLOR = "#FF0000" # Red + DEFAULT_POINT_RADIUS = 3 + DEFAULT_CONNECTION_COLOR = "#00FF00" # Green + DEFAULT_CONNECTION_THICKNESS = 2 + SUPPORTS_VISIBILITY = False + CATEGORY = _category + DESCRIPTION = "Visualizes hand landmarks by drawing points and connections on detected hands. Creates a wireframe overlay showing finger joints, palm, and hand structure." + + def get_landmark_list(self, detection_result: Any) -> Optional[List[Any]]: + return detection_result.landmarks + + +# Node registration +NODE_CLASS_MAPPINGS = { + "VisualizeHandLandmarks": VisualizeHandLandmarks +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "VisualizeHandLandmarks": "Visualize Hand Landmarks (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/hand/landmark/position.py b/node_wrappers/mediapipe_vision/hand/landmark/position.py new file mode 100644 index 0000000..01e39b3 --- /dev/null +++ b/node_wrappers/mediapipe_vision/hand/landmark/position.py @@ -0,0 +1,39 @@ +# node_wrappers/hand/position.py +import logging +from typing import List, Tuple, Any, Optional + +# Import the base class +from ...common.universal_landmark_nodes import LandmarkPositionBaseNode +# Import the specific landmark type for clarity and potential future use +from .....src.mediapipe_vision.types import HAND_LANDMARKS + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Hand/HandLandmark/Position" + +class HandLandmarkPositionNode(LandmarkPositionBaseNode): + """Extracts position lists (x, y, z, vis, pres) for a specific landmark index + from HAND_LANDMARKS across the batch.""" + CATEGORY = _category + # Define the specific input type string this node expects + LANDMARKS_TYPE = "HAND_LANDMARKS" + DESCRIPTION = "Extracts lists of coordinates (x, y, z) and properties (visibility, presence) for a specific Hand Landmark index across an entire batch. Supports world coordinates. Outputs separate lists for each property." + + @classmethod + def INPUT_TYPES(cls): + # Define the specific input type for this node + return { + "required": { + "landmarks": (cls.LANDMARKS_TYPE, {"forceInput": True}), + "landmark_index": ("INT", {"default": 8, "min": 0, "max": 20, "tooltip": "Index Tip=8, Thumb Tip=4"}), # Hand specific default/range + "use_world_coordinates": ("BOOLEAN", {"default": False, "tooltip": "Use world coordinates if available"}), + } + } + +# --- Node Mappings --- +NODE_CLASS_MAPPINGS = { + "HandLandmarkPosition": HandLandmarkPositionNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "HandLandmarkPosition": "Hand Landmark Position Extractor (Batch)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/holistic/__init__.py b/node_wrappers/mediapipe_vision/holistic/__init__.py new file mode 100644 index 0000000..99fe05f --- /dev/null +++ b/node_wrappers/mediapipe_vision/holistic/__init__.py @@ -0,0 +1,10 @@ +"""MediaPipe Holistic node wrappers. + +this module contains the nodes for the holistic solution. Holistic is only available in the legacy api +and thus is stands aout among the other imeplementations in this project. When the official update +to this is released, this module will be updated to use the new api. +""" + +# Import modules to ensure they're registered +from . import holistic_landmark +from . import holistic_landmark_visualization \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/holistic/holistic_landmark.py b/node_wrappers/mediapipe_vision/holistic/holistic_landmark.py new file mode 100644 index 0000000..818573e --- /dev/null +++ b/node_wrappers/mediapipe_vision/holistic/holistic_landmark.py @@ -0,0 +1,106 @@ +import torch +import cv2 +import mediapipe as mp +import numpy as np +from ....src.mediapipe_vision.holistic_landmark.detector import HolisticLandmarkDetector +from ..common.base_detector_node import BaseMediaPipeDetectorNode +import logging + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Holistic" + +class MediaPipeHolisticLandmarkerNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Holistic Landmark Detection. + + This node uses the legacy MediaPipe Holistic API that combines face, pose and hand + tracking in a single detector. + + Note: This uses the legacy MediaPipe Python Solution API while we wait for an official + Holistic Task implementation, and thus it stands out among other implementations in this project. + It does not require a model file to be loaded separately. + """ + + # Define class variables required by the base class + DETECTOR_CLASS = HolisticLandmarkDetector + MODEL_INFO_TYPE = None # Not used - legacy solution doesn't need model file + EXPECTED_TASK_TYPE = None # Not used - legacy solution doesn't need model info + RETURN_TYPES = ("HOLISTIC_LANDMARKS", "MASK_LIST",) + RETURN_NAMES = ("landmarks", "segmentation_masks") + FUNCTION = "detect_holistic" + CATEGORY = _category + DESCRIPTION = """ + LEGACY MODEL ***USE CAUTION***: + RUNNING THIS DETECTOR WILL BREAK ALL OTHER DETECTORS THAT USE THE TASK API UNTIL COMFYUI IS RESTARTED. + Detects face, pose, and hand landmarks in a unified detection. Provides comprehensive tracking of an entire person. This uses the legacy MediaPipe API rather than the newer Task API. + """ + + @classmethod + def INPUT_TYPES(cls): + """Define inputs for holistic detection.""" + # We override the parent INPUT_TYPES completely since we don't need model_info + return { + "required": { + "image": ("IMAGE", {"tooltip": "Input image for detection"}), + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence threshold for detection - lower values detect more poses but may include false positives"}), + "min_tracking_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence threshold for tracking - lower values maintain tracking longer but may be less accurate"}), + "model_complexity": ("INT", {"default": 1, "min": 0, "max": 2, "step": 1, + "tooltip": "Model complexity (0=Lite, 1=Full, 2=Heavy) - higher values are more accurate but slower"}), + "enable_segmentation": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, generates masks that separate people from the background"}), + "refine_face_landmarks": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, provides more detailed face landmarks around eyes and lips"}), + "static_image_mode": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, treats each frame as independent - more accurate but slower and doesn't benefit from tracking"}), + } + } + + def detect_holistic(self, image: torch.Tensor, + min_confidence: float, + min_tracking_confidence: float, + model_complexity: int, + enable_segmentation: bool, + refine_face_landmarks: bool, + static_image_mode: bool): + """Performs holistic landmark detection with the configured parameters. + + Unlike other detectors in this codebase, this doesn't need a model_info parameter + as it uses the built-in legacy Holistic API. + """ + # Initialize detector (without model path) + detector = self.initialize_or_update_detector(None) + + # Perform detection with all parameters + holistic_landmarks_batch, segmentation_masks_batch = detector.detect( + image, + min_detection_confidence=min_confidence, + min_tracking_confidence=min_tracking_confidence, + model_complexity=model_complexity, + enable_segmentation=enable_segmentation, + refine_face_landmarks=refine_face_landmarks, + static_image_mode=static_image_mode + ) + + return (holistic_landmarks_batch, segmentation_masks_batch or []) + + def initialize_or_update_detector(self, model_path=None): + """Override to handle the case where model_path is not needed.""" + if self._detector is None: + self._detector = self.DETECTOR_CLASS() + return self._detector + + def validate_model_info(self, model_info=None): + """Override to handle the case where model_info is not needed.""" + # No validation needed for legacy API + return None + + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipeHolisticLandmarker": MediaPipeHolisticLandmarkerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeHolisticLandmarker": "**CAUTION** Holistic Landmarker (MediaPipe Legacy)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/holistic/holistic_landmark_visualization.py b/node_wrappers/mediapipe_vision/holistic/holistic_landmark_visualization.py new file mode 100644 index 0000000..7ea52c5 --- /dev/null +++ b/node_wrappers/mediapipe_vision/holistic/holistic_landmark_visualization.py @@ -0,0 +1,202 @@ +import logging +import mediapipe as mp +import numpy as np +import cv2 +from typing import List, Dict, Tuple, Any, Optional +import torch + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Holistic" + +# Use MediaPipe's standard connection definitions instead of defining our own +POSE_CONNECTIONS = mp.solutions.pose.POSE_CONNECTIONS +HAND_CONNECTIONS = mp.solutions.hands.HAND_CONNECTIONS +FACE_CONNECTIONS = mp.solutions.face_mesh.FACEMESH_TESSELATION + +class MediaPipeHolisticVisualizerNode: + """ComfyUI node for visualizing holistic landmarks using direct drawing. + + Since holistic landmarks combine multiple landmark types (face, pose, hands), + this doesn't use the BaseLandmarkVisualizationNode but implements a similar approach. + """ + + CATEGORY = _category + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ("image",) + FUNCTION = "visualize_holistic" + DESCRIPTION = "Visualizes holistic landmarks by drawing face mesh, pose skeleton, and hand landmarks on the input image." + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE", {"tooltip": "Input image on which to visualize landmarks"}), + "landmarks": ("HOLISTIC_LANDMARKS", {"tooltip": "Landmarks from the holistic detector"}), + "face_color": ("STRING", {"default": "#FF3030", "tooltip": "Color for face landmarks"}), + "pose_color": ("STRING", {"default": "#30FF30", "tooltip": "Color for pose landmarks"}), + "left_hand_color": ("STRING", {"default": "#3030FF", "tooltip": "Color for left hand landmarks"}), + "right_hand_color": ("STRING", {"default": "#FF30FF", "tooltip": "Color for right hand landmarks"}), + "draw_face": ("BOOLEAN", {"default": True, "tooltip": "Toggle drawing face landmarks"}), + "draw_pose": ("BOOLEAN", {"default": True, "tooltip": "Toggle drawing pose landmarks"}), + "draw_hands": ("BOOLEAN", {"default": True, "tooltip": "Toggle drawing hand landmarks"}), + "face_point_radius": ("INT", {"default": 1, "min": 1, "max": 5, "tooltip": "Size of face landmark points"}), + "pose_point_radius": ("INT", {"default": 2, "min": 1, "max": 10, "tooltip": "Size of pose landmark points"}), + "hand_point_radius": ("INT", {"default": 2, "min": 1, "max": 10, "tooltip": "Size of hand landmark points"}), + "connection_thickness": ("INT", {"default": 1, "min": 1, "max": 5, "tooltip": "Thickness of connection lines"}), + "min_visibility": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.05, + "tooltip": "Minimum visibility score to draw a pose landmark"}) + } + } + + def _hex_to_rgb(self, hex_color): + """Convert hex color string to RGB tuple for OpenCV (BGR format).""" + hex_color = hex_color.lstrip('#') + # Convert to BGR for OpenCV + r, g, b = tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4)) + return (b, g, r) # Return in BGR format for OpenCV + + def visualize_holistic(self, + image, + landmarks, + face_color, + pose_color, + left_hand_color, + right_hand_color, + draw_face, + draw_pose, + draw_hands, + face_point_radius, + pose_point_radius, + hand_point_radius, + connection_thickness, + min_visibility): + """Visualize holistic landmarks using OpenCV for faster performance.""" + + if not landmarks: + logger.warning("No holistic landmarks provided.") + return (image,) + + batch_size = image.shape[0] + result_images = [] + + # For holistic, each item in the batch is already a single detection + # (unlike other landmarks which have a list of detections per image) + if len(landmarks) != batch_size: + logger.warning(f"Batch size mismatch. Images: {batch_size}, Landmark sets: {len(landmarks)}. Proceeding with available data.") + + # Convert color strings to BGR tuples for OpenCV + face_color_bgr = self._hex_to_rgb(face_color) + pose_color_bgr = self._hex_to_rgb(pose_color) + left_hand_color_bgr = self._hex_to_rgb(left_hand_color) + right_hand_color_bgr = self._hex_to_rgb(right_hand_color) + + for i in range(batch_size): + # Clone the tensor to avoid modifying the original + img_tensor = image[i].clone() + + # Convert tensor to numpy array scaled to 0-255 range for OpenCV + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + + # Convert to BGR for OpenCV processing + cv_image = cv2.cvtColor(np_image, cv2.COLOR_RGB2BGR) + + if i < len(landmarks): + holistic_result = landmarks[i] # One holistic result per image + + # Draw face landmarks if requested + if draw_face and holistic_result.face_landmarks: + self._draw_landmarks_cv2( + cv_image, + holistic_result.face_landmarks, + FACE_CONNECTIONS, + face_color_bgr, face_point_radius, connection_thickness, + min_visibility=None # Face doesn't use visibility + ) + + # Draw pose landmarks if requested + if draw_pose and holistic_result.pose_landmarks: + self._draw_landmarks_cv2( + cv_image, + holistic_result.pose_landmarks, + POSE_CONNECTIONS, + pose_color_bgr, pose_point_radius, connection_thickness, + min_visibility=min_visibility + ) + + # Draw left hand landmarks if requested + if draw_hands and holistic_result.left_hand_landmarks: + self._draw_landmarks_cv2( + cv_image, + holistic_result.left_hand_landmarks, + HAND_CONNECTIONS, + left_hand_color_bgr, hand_point_radius, connection_thickness, + min_visibility=None # Hands don't use visibility + ) + + # Draw right hand landmarks if requested + if draw_hands and holistic_result.right_hand_landmarks: + self._draw_landmarks_cv2( + cv_image, + holistic_result.right_hand_landmarks, + HAND_CONNECTIONS, + right_hand_color_bgr, hand_point_radius, connection_thickness, + min_visibility=None # Hands don't use visibility + ) + + # Convert back to RGB and tensor format + cv_image_rgb = cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB) + result_tensor = torch.from_numpy(cv_image_rgb.astype(np.float32) / 255.0) + result_images.append(result_tensor) + + return (torch.stack(result_images),) + + def _draw_landmarks_cv2(self, + image: np.ndarray, + landmark_list: List, + connections: List, + color: Tuple[int, int, int], + point_radius: int, + connection_thickness: int, + min_visibility: Optional[float] = None): + """Helper method to draw landmarks with OpenCV for faster performance.""" + + height, width = image.shape[:2] + points = {} + + # Process landmarks and draw points + for lm in landmark_list: + # Check visibility if required + is_visible = True + if min_visibility is not None and hasattr(lm, 'visibility') and lm.visibility is not None: + is_visible = lm.visibility >= min_visibility + + if is_visible: + # Convert normalized coordinates to pixel coordinates + cx, cy = int(lm.x * width), int(lm.y * height) + points[lm.index] = (cx, cy) + + # Draw point as a filled circle + cv2.circle(image, (cx, cy), point_radius, color, -1) + + # Draw connections + if connections and points: + for connection in connections: + start_idx, end_idx = connection + if start_idx in points and end_idx in points: + cv2.line( + image, + points[start_idx], + points[end_idx], + color, + connection_thickness + ) + + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipeHolisticVisualizer": MediaPipeHolisticVisualizerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeHolisticVisualizer": "Holistic Visualizer (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/image_embedding/__init__.py b/node_wrappers/mediapipe_vision/image_embedding/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/image_embedding/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/image_embedding/image_embeddings.py b/node_wrappers/mediapipe_vision/image_embedding/image_embeddings.py new file mode 100644 index 0000000..d68616c --- /dev/null +++ b/node_wrappers/mediapipe_vision/image_embedding/image_embeddings.py @@ -0,0 +1,78 @@ +import torch +import logging + +# Import Base Loader and Detector +from ..common.model_loader import MediaPipeModelLoaderBaseNode +from ..common.base_detector_node import BaseMediaPipeDetectorNode +from ....src.mediapipe_vision.image_embedding.detector import ImageEmbedder + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/ImageEmbedding" + +# --- Model Loader --- +class MediaPipeImageEmbedderModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Image Embedder models.""" + TASK_TYPE = "image_embedder" # Need to add this task to MEDIAPIPE_MODELS + RETURN_TYPES = ("IMAGE_EMBEDDER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category + +# --- Embedder Node --- +class MediaPipeImageEmbedderNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Image Embedding.""" + + # Define class variables required by the base class + DETECTOR_CLASS = ImageEmbedder + MODEL_INFO_TYPE = "IMAGE_EMBEDDER_MODEL_INFO" + EXPECTED_TASK_TYPE = "image_embedder" + RETURN_TYPES = ("IMAGE_EMBEDDINGS",) + RETURN_NAMES = ("image_embeddings",) + FUNCTION = "detect" + CATEGORY = _category + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add embedder-specific parameters + inputs["required"].update({ + "l2_normalize": ("BOOLEAN", {"default": True, + "tooltip": "Apply L2 normalization to the embedding"}), + "quantize": ("BOOLEAN", {"default": False, + "tooltip": "Output quantized (uint8) embedding instead of float"}), + }) + + return inputs + + def detect(self, image: torch.Tensor, model_info: dict, l2_normalize: bool, + quantize: bool, running_mode: str, delegate: str): + """Generates image embeddings with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Generate embeddings with all parameters + embeddings_batch = detector.embed( + image, + l2_normalize=l2_normalize, + quantize=quantize, + running_mode=running_mode, + delegate=delegate + ) + + return (embeddings_batch,) + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MediaPipeImageEmbedderModelLoader": MediaPipeImageEmbedderModelLoaderNode, + "MediaPipeImageEmbedder": MediaPipeImageEmbedderNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeImageEmbedderModelLoader": "Load Image Embedder Model (MediaPipe)", + "MediaPipeImageEmbedder": "Image Embedder (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/image_embedding/utils.py b/node_wrappers/mediapipe_vision/image_embedding/utils.py new file mode 100644 index 0000000..e8c95b7 --- /dev/null +++ b/node_wrappers/mediapipe_vision/image_embedding/utils.py @@ -0,0 +1,144 @@ +import torch +import torch.nn.functional as F +import logging +from typing import List, Optional + +from ....src.mediapipe_vision.types import ImageEmbedderResult # Assuming this is the relevant type + +logger = logging.getLogger(__name__) + +class ReshapeMediaPipeEmbeddingNode: + """Reshapes MediaPipe embedding for experimental use as ComfyUI Conditioning. + WARNING: Semantically different from standard CLIP conditioning. + Pads/truncates the embedding vector and replicates it across 77 tokens. + """ + CATEGORY = "Realtime Nodes/MediaPipe Vision/ImageEmbedding/_Experimental" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image_embeddings": ("IMAGE_EMBEDDINGS",), # List[List[ImageEmbedderResult]] + "target_dimension": ("INT", {"default": 768, "min": 64, "max": 4096, "step": 8, + "tooltip": "Target dimension D for the reshaped (1, 77, D) tensor (e.g., 768 for SD1.5, 1024/1280 for SDXL)"}), + } + } + + RETURN_TYPES = ("CONDITIONING",) + FUNCTION = "reshape_embedding" + + def reshape_embedding(self, image_embeddings: List[List[ImageEmbedderResult]], target_dimension: int): + if not image_embeddings or not image_embeddings[0]: + raise ValueError("Input image_embeddings are empty.") + + # --- Process First Embedding in Batch/Head --- + # Assuming we use the first embedding result from the first image in the batch + first_embedding_result = image_embeddings[0][0] + + if first_embedding_result.float_embedding: + embedding_vector = first_embedding_result.float_embedding + elif first_embedding_result.quantized_embedding: + # Note: Using quantized embedding might require dequantization logic + # For now, raise error or warn, as direct reshaping is less meaningful + raise NotImplementedError("Reshaping quantized embeddings is not directly supported. Use float embeddings.") + else: + raise ValueError("No valid embedding found in the input.") + + # Convert to tensor + embed_tensor = torch.tensor(embedding_vector, dtype=torch.float32) + orig_dim = embed_tensor.shape[0] + + # --- Pad or Truncate --- + if orig_dim < target_dimension: + # Pad with zeros + padding = torch.zeros(target_dimension - orig_dim, dtype=torch.float32) + final_vector = torch.cat((embed_tensor, padding), dim=0) + elif orig_dim > target_dimension: + # Truncate + final_vector = embed_tensor[:target_dimension] + else: + final_vector = embed_tensor + + # --- Reshape and Replicate for Conditioning --- + # Reshape to (1, 1, D) + cond_vec = final_vector.unsqueeze(0).unsqueeze(0) + # Replicate to (1, 77, D) + cond_batch = cond_vec.repeat(1, 77, 1) + + # --- Create Pooled Output --- + # Use the padded/truncated vector as the pooled output (1, D) + pooled_output = final_vector.unsqueeze(0) + + # --- Package as CONDITIONING --- + # Standard ComfyUI conditioning format: List[List[Union[torch.Tensor, Dict[str, torch.Tensor]]]] + conditioning = [[cond_batch, {"pooled_output": pooled_output}]] + + logger.warning("Reshaped MediaPipe embedding to CONDITIONING format. Use experimentally.") + return (conditioning,) + +# --- Comparison Node --- +class CompareMediaPipeEmbeddingsNode: + """Calculates the cosine similarity between two MediaPipe image embeddings.""" + CATEGORY = "Realtime Nodes/MediaPipe Vision/ImageEmbedding" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image_embeddings_1": ("IMAGE_EMBEDDINGS",), + "image_embeddings_2": ("IMAGE_EMBEDDINGS",), + } + } + + RETURN_TYPES = ("FLOAT",) + RETURN_NAMES = ("cosine_similarity",) + FUNCTION = "compare_embeddings" + + def compare_embeddings(self, image_embeddings_1: List[List[ImageEmbedderResult]], + image_embeddings_2: List[List[ImageEmbedderResult]]): + + def _extract_vector(embeddings: List[List[ImageEmbedderResult]]) -> Optional[torch.Tensor]: + """Helper to extract the first float embedding vector.""" + if not embeddings or not embeddings[0]: + return None + first_result = embeddings[0][0] + if first_result.float_embedding: + return torch.tensor(first_result.float_embedding, dtype=torch.float32) + else: + logger.warning("Cannot compare non-float embeddings.") + return None + + vec1 = _extract_vector(image_embeddings_1) + vec2 = _extract_vector(image_embeddings_2) + + if vec1 is None or vec2 is None: + logger.error("Could not extract valid float embedding vectors for comparison.") + return (0.0,) # Return 0 similarity on error + + # Ensure vectors have the same dimension (pad/truncate shorter one) + dim1, dim2 = vec1.shape[0], vec2.shape[0] + if dim1 != dim2: + logger.warning(f"Embedding dimensions differ ({dim1} vs {dim2}). Padding/truncating for comparison.") + max_dim = max(dim1, dim2) + if dim1 < max_dim: + vec1 = F.pad(vec1, (0, max_dim - dim1)) + elif dim2 < max_dim: + vec2 = F.pad(vec2, (0, max_dim - dim2)) + + # Calculate Cosine Similarity + # Normalize vectors before dot product for cosine similarity + similarity = F.cosine_similarity(vec1.unsqueeze(0), vec2.unsqueeze(0), dim=1) + + return (similarity.item(),) + + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "ReshapeMediaPipeEmbedding": ReshapeMediaPipeEmbeddingNode, + "CompareMediaPipeEmbeddings": CompareMediaPipeEmbeddingsNode, # Add new node +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "ReshapeMediaPipeEmbedding": "Reshape MediaPipe Embedding (Experimental)", + "CompareMediaPipeEmbeddings": "Compare MediaPipe Embeddings", # Add new node name +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/image_segmentation/__init__.py b/node_wrappers/mediapipe_vision/image_segmentation/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/image_segmentation/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/image_segmentation/image_segmentation.py b/node_wrappers/mediapipe_vision/image_segmentation/image_segmentation.py new file mode 100644 index 0000000..4623ede --- /dev/null +++ b/node_wrappers/mediapipe_vision/image_segmentation/image_segmentation.py @@ -0,0 +1,221 @@ +"""Node wrapper for image segmentation""" + +import torch +import numpy as np +import cv2 # For visualization +import logging + +# Imports from this project +from ....src.mediapipe_vision.image_segmentation.segmenter import ImageSegmenter +# Import Base Classes +from ..common.model_loader import MediaPipeModelLoaderBaseNode +from ..common.base_detector_node import BaseMediaPipeDetectorNode + +logger = logging.getLogger(__name__) + +_category = "Realtime Nodes/MediaPipe Vision/ImageSegmentation" +# Define class names and their corresponding indices for multiclass models +MULTICLASS_NAMES = { + "Background": 0, + "Hair": 1, + "Body-skin": 2, + "Face-skin": 3, + "Clothes": 4, + "Accessories/Other": 5, +} + +# Uses MULTICLASS_NAMES indices +CLASS_COLORS_BGR = { + MULTICLASS_NAMES["Background"]: (0, 0, 0), # Black + MULTICLASS_NAMES["Hair"]: (255, 0, 0), # Blue + MULTICLASS_NAMES["Body-skin"]: (0, 255, 255), # Yellow + MULTICLASS_NAMES["Face-skin"]: (255, 200, 100), # Light Blue + MULTICLASS_NAMES["Clothes"]: (0, 255, 0), # Green + MULTICLASS_NAMES["Accessories/Other"]: (255, 0, 255), # Magenta +} +# --- End Constants --- + +# Inherit from the base loader +class MediaPipeImageSegmenterModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Image Segmenter models.""" + TASK_TYPE = "image_segmenter" + RETURN_TYPES = ("IMAGE_SEGMENTER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + # INPUT_TYPES and FUNCTION inherited + CATEGORY = _category + +class MediaPipeImageSegmenterNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Image Segmentation, adapted from Stream-Pack. + Manages the ImageSegmenter instance for potential reuse based on config. + """ + + # Define class variables required by the base class + DETECTOR_CLASS = ImageSegmenter + MODEL_INFO_TYPE = "IMAGE_SEGMENTER_MODEL_INFO" + EXPECTED_TASK_TYPE = "image_segmenter" + RETURN_TYPES = ("MASK", "IMAGE", "MP_INT_MASK",) + RETURN_NAMES = ("mask", "visualization", "multiclass_segments") + FUNCTION = "detect" + CATEGORY = _category + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add segmentation-specific parameters + inputs["required"].update({ + "output_confidence_masks": ("BOOLEAN", {"default": False, + "tooltip": "Output confidence mask (0-1) instead of category mask. Disables multiclass/visualization."}), + "threshold": ("FLOAT", { + "default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Confidence threshold for confidence mask output mode. Pixels below threshold become 0." + }), + "generate_visualization": ("BOOLEAN", {"default": False, + "tooltip": "Generate a colored visualization image (only works in category mask mode)." + }), + }) + + # Rename the delegate parameter for consistency with original implementation + inputs["required"]["delegate_mode"] = inputs["required"].pop("delegate") + + return inputs + + # --- Helper methods from Stream-Pack --- + def is_multiclass_model(self, model_info: dict): + # Improved check based on variant or path + model_variant = model_info.get('model_variant', '').lower() + model_path = model_info.get('model_path', '').lower() + # Add known multiclass identifiers + return 'multiclass' in model_variant or 'multiclass' in model_path + + def create_visualization(self, category_mask_np, is_multiclass=False): + """Generates a colored visualization from a category mask.""" + if category_mask_np is None: + return None + if not is_multiclass: + # Simple binary visualization (white on black) + vis_image = np.where(category_mask_np > 0, 255, 0).astype(np.uint8) + return cv2.cvtColor(vis_image, cv2.COLOR_GRAY2BGR) + else: + # Multiclass visualization + height, width = category_mask_np.shape + vis_image = np.zeros((height, width, 3), dtype=np.uint8) + for class_name, class_id in MULTICLASS_NAMES.items(): + color_bgr = CLASS_COLORS_BGR.get(class_id, (128, 128, 128)) # Default grey + vis_image[category_mask_np == class_id] = color_bgr + return vis_image + # --- End Helper methods --- + + def detect(self, image: torch.Tensor, model_info: dict, output_confidence_masks: bool, + threshold: float, generate_visualization: bool, running_mode: str, delegate_mode: str): + """Performs image segmentation with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Determine which output type the detector needs + request_confidence = output_confidence_masks + # Need category mask if confidence isn't requested OR if visualization is needed + request_category = not output_confidence_masks or generate_visualization + + if not request_confidence and not request_category: + # Should not happen with the logic above, but as a safeguard + raise ValueError("Internal logic error: No mask type determined for segmenter.") + + # Call segmenter's segment method + # Returns lists (one element per image in batch) + batch_results_confidence, batch_results_category = detector.segment( + image, + output_confidence_masks=request_confidence, + output_category_mask=request_category, + running_mode=running_mode, + delegate_mode=delegate_mode + ) + + # Initialize output lists + batch_size = image.shape[0] + h, w = image.shape[1], image.shape[2] + all_primary_masks = [] + all_vis_images = [] + all_category_masks = [] + default_vis_tensor = torch.zeros((h, w, 3), dtype=torch.float32, device=image.device) # HWC + + # --- Process results based on node inputs --- + is_multiclass = self.is_multiclass_model(model_info) + + # Loop through batch results + for i in range(batch_size): + # Get results for the current image + confidence_masks_hw_list = batch_results_confidence[i] if batch_results_confidence else None + category_mask_hw = batch_results_category[i] if batch_results_category else None + + # Initialize outputs for this image + current_primary_mask_hw = torch.zeros((h, w), dtype=torch.float32, device=image.device) + current_vis_image_hwc = default_vis_tensor + current_category_mask_hw = torch.zeros((h, w), dtype=torch.long, device=image.device) + + if output_confidence_masks: + # User wants confidence mask as primary output + if confidence_masks_hw_list: + # Take the first confidence mask (often foreground vs background) + conf_mask_hw = confidence_masks_hw_list[0] + # Apply threshold + conf_mask_hw_thresh = torch.where(conf_mask_hw >= threshold, conf_mask_hw, torch.zeros_like(conf_mask_hw)) + current_primary_mask_hw = conf_mask_hw_thresh # HW + # Visualization and multiclass output are disabled/invalid in confidence mode + generate_visualization_for_this = False + else: + # User wants category mask (default or for visualization) + if category_mask_hw is not None: + # Determine primary MASK output (HW Float) + if is_multiclass: + # Treat non-background as foreground for the primary mask + primary_mask_hw = (category_mask_hw > 0).float() + else: + # Binary models: Category 1 is foreground + primary_mask_hw = (category_mask_hw > 0).float() + current_primary_mask_hw = primary_mask_hw # HW + + # Prepare raw category mask output (HW Long Tensor) + current_category_mask_hw = category_mask_hw # Already Long + + # Generate visualization if requested (and category mask exists) + generate_visualization_for_this = generate_visualization + if generate_visualization_for_this: + # Convert to NumPy for OpenCV, then back to tensor + category_np = category_mask_hw.cpu().numpy().astype(np.uint8) + vis_np = self.create_visualization(category_np, is_multiclass) + if vis_np is not None: + # Convert back to tensor (HWC) + vis_tensor = torch.from_numpy(vis_np).to(dtype=torch.float32, device=image.device) / 255.0 + current_vis_image_hwc = vis_tensor # HWC + + # Add results for this image to the batch results + all_primary_masks.append(current_primary_mask_hw) # HW + all_vis_images.append(current_vis_image_hwc) # HWC + all_category_masks.append(current_category_mask_hw) # HW + + # Stack all results to return as tensors + primary_mask_tensor = torch.stack(all_primary_masks, dim=0) # BHW + vis_image_tensor = torch.stack(all_vis_images, dim=0) # BHWC + category_mask_tensor = torch.stack(all_category_masks, dim=0) # BHW + + # Ensure multiclass_segments is in the right format (BHW) for downstream nodes + # Not adding an unsqueeze here, as we're handling both formats in the select_segment node + + return (primary_mask_tensor, vis_image_tensor, category_mask_tensor) + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipeImageSegmenterModelLoader": MediaPipeImageSegmenterModelLoaderNode, + "MediaPipeImageSegmenter": MediaPipeImageSegmenterNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeImageSegmenterModelLoader": "Load Image Segmenter Model (MediaPipe)", + "MediaPipeImageSegmenter": "Image Segmenter (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/image_segmentation/image_segmentation_masking.py b/node_wrappers/mediapipe_vision/image_segmentation/image_segmentation_masking.py new file mode 100644 index 0000000..e643a66 --- /dev/null +++ b/node_wrappers/mediapipe_vision/image_segmentation/image_segmentation_masking.py @@ -0,0 +1,87 @@ +import torch +import numpy as np +import logging + + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/ImageSegmentation/Masking" +# Define class names and their corresponding indices for multiclass models +MULTICLASS_NAMES = { + "Background": 0, + "Hair": 1, + "Body-skin": 2, + "Face-skin": 3, + "Clothes": 4, + "Accessories/Other": 5, +} + +class SelectMediaPipeSegmentNode: + """ + Selects a specific segmentation mask from the raw multiclass output + of the MediaPipeImageSegmenterNode. + """ + @classmethod + def INPUT_TYPES(cls): + available_segments = list(MULTICLASS_NAMES.keys()) + return { + "required": { + "multiclass_segments": ("MP_INT_MASK", { + "tooltip": "Raw multiclass segmentation data (INT_MASK) from MediaPipe Image Segmenter node." + }), + "segment_name": (available_segments, { + "default": "Clothes" if "Clothes" in available_segments else available_segments[0], + "tooltip": "Select the specific segment to extract as a mask." + }), + } + } + + RETURN_TYPES = ("MASK",) + RETURN_NAMES = ("mask",) + FUNCTION = "select_segment" + CATEGORY = _category + DESCRIPTION = "Extracts a single mask for a selected segment (e.g., Hair, Clothes) from the multiclass segmentation data." + + def select_segment(self, multiclass_segments: torch.Tensor, segment_name: str): + if segment_name not in MULTICLASS_NAMES: + raise ValueError(f"Invalid segment_name '{segment_name}'. Available: {list(MULTICLASS_NAMES.keys())}") + + if multiclass_segments is None or multiclass_segments.numel() == 0: + logger.warning("Input multiclass_segments is empty or None. Returning zero mask.") + # Need a shape to return a zero mask. How to get expected shape? + # For now, maybe raise error or return None (caller must handle) + # Returning None is safer if shape is unknown. + return (None,) # Or raise error + + # Check tensor format and reshape if needed + # Input formats can be either BHW or B1HW (both are common in ComfyUI) + if multiclass_segments.dim() == 3: # BHW format + # Reshape to B1HW format + logger.info(f"Reshaping multiclass_segments from BHW format {multiclass_segments.shape} to B1HW format") + multiclass_segments = multiclass_segments.unsqueeze(1) # Insert channel dimension + logger.info(f"New shape: {multiclass_segments.shape}") + elif multiclass_segments.dim() == 4 and multiclass_segments.shape[1] != 1: + # If it's BCHW but not B1HW, raise error + raise ValueError(f"Expected multiclass_segments to be B1HW or BHW tensor. Got shape {multiclass_segments.shape}") + + # Ensure input is a LongTensor + if multiclass_segments.dtype != torch.int64: + multiclass_segments = multiclass_segments.to(torch.int64) + + target_id = MULTICLASS_NAMES[segment_name] + selected_mask = (multiclass_segments == target_id).float() + + # If result is B1HW, squeeze back to BHW for ComfyUI mask format compatibility + if selected_mask.dim() == 4: + selected_mask = selected_mask.squeeze(1) + + return (selected_mask,) +# --- End Select Segment Node --- + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "SelectMediaPipeSegment": SelectMediaPipeSegmentNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "SelectMediaPipeSegment": "Select MediaPipe Segment", +} diff --git a/node_wrappers/mediapipe_vision/interactive_segmentation/__init__.py b/node_wrappers/mediapipe_vision/interactive_segmentation/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/interactive_segmentation/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/interactive_segmentation/interactive_segmentation.py b/node_wrappers/mediapipe_vision/interactive_segmentation/interactive_segmentation.py new file mode 100644 index 0000000..ddb5400 --- /dev/null +++ b/node_wrappers/mediapipe_vision/interactive_segmentation/interactive_segmentation.py @@ -0,0 +1,116 @@ +import torch +import logging +import json + +# Import Base Loader and Detector +from ..common.model_loader import MediaPipeModelLoaderBaseNode +from ....src.mediapipe_vision.interactive_segmentation.detector import InteractiveSegmenterProcessor +from ....src.mediapipe_vision. types import PointOfInterest + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/InteractiveSegmentation" +# --- Model Loader --- +class MediaPipeInteractiveSegmenterModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Interactive Segmenter models.""" + # Usually uses a specific model like selfie_segmenter or a custom one + TASK_TYPE = "interactive_segmenter" # Need to define this task and models in model_loader.py + RETURN_TYPES = ("INTERACTIVE_SEGMENTER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category +# --- Segmenter Node --- +class MediaPipeInteractiveSegmenterNode: + """ComfyUI node for MediaPipe Interactive Image Segmentation.""" + + def __init__(self): + self._processor: InteractiveSegmenterProcessor = None + self._model_path: str = None + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + "model_info": ("INTERACTIVE_SEGMENTER_MODEL_INFO",), + # Input points as a JSON string list of lists/tuples: e.g., "[[0.5, 0.5], [0.2, 0.3]]" + "points_json": ("STRING", {"default": "[[0.5, 0.5]]", "multiline": True, + "tooltip": "Points of interest (normalized coords) as JSON: [[x1,y1], [x2,y2], ...]"}), + "output_category_mask": ("BOOLEAN", {"default": True, + "tooltip": "Output a category mask (0=background, 1=foreground). Priority over confidence."}), + "output_confidence_mask": ("BOOLEAN", {"default": False, + "tooltip": "Output a confidence mask (0.0-1.0). Used if category mask is False."}), + } + } + + RETURN_TYPES = ("MASK",) # Output is a standard ComfyUI mask + RETURN_NAMES = ("mask",) + FUNCTION = "segment_interactive" + CATEGORY = _category + + def segment_interactive(self, image: torch.Tensor, model_info: dict, points_json: str, + output_category_mask: bool, output_confidence_mask: bool): + """Performs interactive segmentation.""" + + task_type = model_info.get('task_type') + expected_task_type = MediaPipeInteractiveSegmenterModelLoaderNode.TASK_TYPE + if not isinstance(model_info, dict) or task_type != expected_task_type: + raise ValueError(f"Invalid model_info. Expected task_type '{expected_task_type}' but got '{task_type}'.") + model_path = model_info.get('model_path') + if not model_path: + raise ValueError("Model path not found or invalid in model_info.") + + # Parse points from JSON + try: + points_list = json.loads(points_json) + if not isinstance(points_list, list) or not all(isinstance(p, (list, tuple)) and len(p) == 2 for p in points_list): + raise ValueError("Invalid format") + points_of_interest = [PointOfInterest(x=p[0], y=p[1]) for p in points_list] + except Exception as e: + raise ValueError(f"Invalid points_json format: {e}. Expected list of [x, y] pairs, e.g., [[0.5, 0.5]].") + + # Manage detector instance + if self._processor is None or self._model_path != model_path: + if self._processor and hasattr(self._processor, 'close'): + try: self._processor.close() + except Exception as e: logger.warning(f"Error closing InteractiveSegmenterProcessor: {e}") + logger.info(f"Creating new InteractiveSegmenterProcessor instance for {model_path}") + self._processor = InteractiveSegmenterProcessor(model_path) + self._model_path = model_path + + # Call the detector's segment method + mask_batch = self._processor.segment( + image, + points_of_interest=points_of_interest, + output_category_mask=output_category_mask, + output_confidence_mask=output_confidence_mask + ) + + # Convert HW mask list to B1HW tensor for ComfyUI MASK type + # Assuming detector returns one mask per batch item + comfy_masks = [] + for mask_hw in mask_batch: + if mask_hw is not None: + comfy_masks.append(mask_hw.unsqueeze(0)) # Add channel dim + else: + # Handle None case - maybe return zero mask? Needs image shape + h, w = image.shape[1], image.shape[2] + comfy_masks.append(torch.zeros((1, h, w), dtype=torch.float32, device=image.device)) + + output_tensor = torch.stack(comfy_masks, dim=0) # Stack along batch dim + return (output_tensor,) + + def __del__(self): + if hasattr(self, '_processor') and self._processor and hasattr(self._processor, 'close'): + try: self._processor.close() + except Exception as e: logger.warning(f"Error closing InteractiveSegmenterProcessor in __del__: {e}") + self._processor = None + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MediaPipeInteractiveSegmenterModelLoader": MediaPipeInteractiveSegmenterModelLoaderNode, + "MediaPipeInteractiveSegmenter": MediaPipeInteractiveSegmenterNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeInteractiveSegmenterModelLoader": "Load Interactive Segmenter Model (MediaPipe)", + "MediaPipeInteractiveSegmenter": "Interactive Segmenter (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/object_detection/__init__.py b/node_wrappers/mediapipe_vision/object_detection/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/object_detection/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/object_detection/object_detection.py b/node_wrappers/mediapipe_vision/object_detection/object_detection.py new file mode 100644 index 0000000..3c19131 --- /dev/null +++ b/node_wrappers/mediapipe_vision/object_detection/object_detection.py @@ -0,0 +1,74 @@ +import torch +from ....src.mediapipe_vision.object_detection.detector import ObjectDetector +from ..common.model_loader import MediaPipeModelLoaderBaseNode +from ..common.base_detector_node import BaseMediaPipeDetectorNode +import logging + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/ObjectDetection" + +class MediaPipeObjectDetectorModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Object Detector models.""" + TASK_TYPE = "object_detector" + RETURN_TYPES = ("OBJECT_DETECTOR_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category + +class MediaPipeObjectDetectorNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Object Detection.""" + + # Define class variables required by the base class + DETECTOR_CLASS = ObjectDetector + MODEL_INFO_TYPE = "OBJECT_DETECTOR_MODEL_INFO" + EXPECTED_TASK_TYPE = "object_detector" + RETURN_TYPES = ("OBJECT_DETECTIONS",) + RETURN_NAMES = ("object_detections",) + FUNCTION = "detect" + CATEGORY = _category + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add object detection specific parameters + inputs["required"].update({ + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.05, + "tooltip": "Minimum confidence score for detected objects"}), + "max_results": ("INT", {"default": 5, "min": 1, "max": 50, "step": 1, + "tooltip": "Maximum number of objects to detect"}), + }) + + return inputs + + def detect(self, image: torch.Tensor, model_info: dict, min_confidence: float, + max_results: int, running_mode: str, delegate: str): + """Performs object detection with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Perform detection with all parameters + batch_results = detector.detect( + image, + score_threshold=min_confidence, + max_results=max_results, + running_mode=running_mode, + delegate=delegate + ) + + return (batch_results,) + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipeObjectDetectorModelLoader": MediaPipeObjectDetectorModelLoaderNode, + "MediaPipeObjectDetector": MediaPipeObjectDetectorNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipeObjectDetectorModelLoader": "Load Object Detector Model (MediaPipe)", + "MediaPipeObjectDetector": "Object Detector (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/object_detection/object_detection_visualization.py b/node_wrappers/mediapipe_vision/object_detection/object_detection_visualization.py new file mode 100644 index 0000000..ab5df83 --- /dev/null +++ b/node_wrappers/mediapipe_vision/object_detection/object_detection_visualization.py @@ -0,0 +1,106 @@ +# visualize_object_detection.py +import torch +import numpy as np +import cv2 + +from ....src.mediapipe_vision.utils.image_utils import convert_to_cv2, convert_to_tensor +from ..common.base_visualization_nodes import BaseDetectionVisualizationNode + +import logging +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/ObjectDetection/Visualization" + +class VisualizeObjectDetections(BaseDetectionVisualizationNode): + """Draws object detection bounding boxes and labels onto images.""" + CATEGORY = _category + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "object_detections": ("OBJECT_DETECTIONS",), # Expect the specific type + "image": ("IMAGE",), + }, + "optional": { + "box_color": ("STRING", {"default": "#FF0000"}), # Red + "box_thickness": ("INT", {"default": 2, "min": 1, "max": 10}), + "label_color": ("STRING", {"default": "#FFFFFF"}), # White + "label_bg_color": ("STRING", {"default": "#FF0000"}), # Red BG + # Font size might be tricky to implement well, skipping for now + } + } + + RETURN_TYPES = ("IMAGE",) + FUNCTION = "draw_visualizations" + + def draw_visualizations(self, object_detections, image, + box_color="#FF0000", box_thickness=2, + label_color="#FFFFFF", label_bg_color="#FF0000"): + """Main function that processes the batch of images and detections.""" + return self.process_batch( + object_detections, + image, + self.draw_objects, + box_color=box_color, + box_thickness=box_thickness, + label_color=label_color, + label_bg_color=label_bg_color + ) + + def draw_objects(self, image, width, height, detections, + box_color="#FF0000", box_thickness=2, + label_color="#FFFFFF", label_bg_color="#FF0000"): + """Callback function to draw objects on a single image.""" + # Convert hex colors to BGR tuples for cv2 + box_color_bgr = self._hex_to_bgr(box_color) + + for detection in detections: + bbox = detection.bounding_box + # Top-left corner + x1, y1 = int(bbox.origin_x), int(bbox.origin_y) + # Bottom-right corner + x2, y2 = int(bbox.origin_x + bbox.width), int(bbox.origin_y + bbox.height) + + # Draw bounding box + cv2.rectangle(image, (x1, y1), (x2, y2), box_color_bgr, box_thickness) + + # Prepare label text (use first category's display name if available) + label = "N/A" + score = 0.0 + if detection.categories: + top_category = detection.categories[0] + label = top_category.display_name or top_category.category_name or "N/A" + score = top_category.score + + label_text = f"{label}: {score:.2f}" + + # Draw label background and text inside the box top-left + try: + self.draw_text_with_background( + image, + label_text, + (x1, y1), + text_color=label_color, + bg_color=label_bg_color + ) + except Exception as e: + logger.error(f"Error drawing text label: {e}") + # Fallback: Draw text without background + cv2.putText( + image, + label_text, + (x1 + 2, y1 + 15), + cv2.FONT_HERSHEY_SIMPLEX, + 0.5, + self._hex_to_bgr(label_color), + 1 + ) + +# Node registration +NODE_CLASS_MAPPINGS = { + "VisualizeObjectDetections": VisualizeObjectDetections +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "VisualizeObjectDetections": "Visualize Object Detections (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/pose/__init__.py b/node_wrappers/mediapipe_vision/pose/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/node_wrappers/mediapipe_vision/pose/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/pose/pose_landmark.py b/node_wrappers/mediapipe_vision/pose/pose_landmark.py new file mode 100644 index 0000000..a45d708 --- /dev/null +++ b/node_wrappers/mediapipe_vision/pose/pose_landmark.py @@ -0,0 +1,94 @@ +import torch +from ....src.mediapipe_vision.pose_landmark.detector import PoseLandmarkDetector +from ..common.model_loader import MediaPipeModelLoaderBaseNode +from ..common.base_detector_node import BaseMediaPipeDetectorNode +import logging + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Pose" + +class MediaPipePoseLandmarkerModelLoaderNode(MediaPipeModelLoaderBaseNode): + """ComfyUI node for loading MediaPipe Pose Landmarker models.""" + TASK_TYPE = "pose_landmarker" + RETURN_TYPES = ("POSE_LANDMARKER_MODEL_INFO",) + RETURN_NAMES = ("model_info",) + CATEGORY = _category + DESCRIPTION = "Loads a MediaPipe Pose Landmarker model for detecting human body poses and postures in images. Required before using the Pose Landmarker node." + +class MediaPipePoseLandmarkerNode(BaseMediaPipeDetectorNode): + """ComfyUI node for MediaPipe Pose Landmark Detection.""" + + # Define class variables required by the base class + DETECTOR_CLASS = PoseLandmarkDetector + MODEL_INFO_TYPE = "POSE_LANDMARKER_MODEL_INFO" + EXPECTED_TASK_TYPE = "pose_landmarker" + RETURN_TYPES = ("POSE_LANDMARKS", "MASK_LIST",) + RETURN_NAMES = ("landmarks", "segmentation_masks") + FUNCTION = "detect" + CATEGORY = _category + DESCRIPTION = "Detects human body poses in images and provides precise landmark points for major body joints and posture. Can also generate segmentation masks that isolate people from the background." + + @classmethod + def INPUT_TYPES(cls): + # Start with the base inputs from the parent class + inputs = super().INPUT_TYPES() + + # Add pose-specific parameters + inputs["required"].update({ + "max_results": ("INT", {"default": 1, "min": 1, "max": 4, "step": 1, + "tooltip": "Maximum number of people/poses to detect in the image - higher values can detect more people but use more processing power"}), + "min_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "Minimum confidence threshold for pose detection - lower values detect more poses but may include false positives"}), + "min_tracking_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence threshold for pose tracking between frames - lower values maintain tracking longer but may be less accurate"}), + "min_presence_confidence": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01, + "tooltip": "(VIDEO mode) Minimum confidence threshold for pose presence in the image - lower values may include false negatives"}), + "output_segmentation_masks": ("BOOLEAN", {"default": False, + "tooltip": "When enabled, generates masks that separate people from the background"}), + }) + + return inputs + + def detect(self, image: torch.Tensor, model_info: dict, max_results: int, + min_confidence: float, min_tracking_confidence: float, + min_presence_confidence: float, output_segmentation_masks: bool, + running_mode: str, delegate: str): + """Performs pose landmark detection with the configured parameters.""" + + # Validate model_info and get model path + model_path = self.validate_model_info(model_info) + + # Initialize or update detector + detector = self.initialize_or_update_detector(model_path) + + # Perform detection with all parameters + pose_landmarks_batch, segmentation_masks_batch = detector.detect( + image, + num_poses=max_results, + min_detection_confidence=min_confidence, + min_tracking_confidence=min_tracking_confidence, + min_presence_confidence=min_presence_confidence, + output_segmentation_masks=output_segmentation_masks, + running_mode=running_mode, + delegate=delegate + ) + + # Process segmentation masks if needed + flat_masks = [] + if segmentation_masks_batch: + for img_masks in segmentation_masks_batch: + if img_masks: + flat_masks.extend(img_masks) + + return (pose_landmarks_batch, flat_masks if output_segmentation_masks else []) + +# Define mappings for ComfyUI +NODE_CLASS_MAPPINGS = { + "MediaPipePoseLandmarkerModelLoader": MediaPipePoseLandmarkerModelLoaderNode, + "MediaPipePoseLandmarker": MediaPipePoseLandmarkerNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MediaPipePoseLandmarkerModelLoader": "Load Pose Landmarker Model (MediaPipe)", + "MediaPipePoseLandmarker": "Pose Landmarker (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/pose/pose_landmark_masking.py b/node_wrappers/mediapipe_vision/pose/pose_landmark_masking.py new file mode 100644 index 0000000..e282345 --- /dev/null +++ b/node_wrappers/mediapipe_vision/pose/pose_landmark_masking.py @@ -0,0 +1,115 @@ +# node_wrappers/pose/masking.py +import torch +import numpy as np +import cv2 +import logging +from typing import List, Dict, Tuple + +from ....src.mediapipe_vision.types import PoseLandmarksResult +from ....src.mediapipe_vision.utils.mask_utils import create_mask_from_points +# Removed GetImageDimensionsNode import + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Pose/Masking" + +# --- Pose Part Definitions (Based on standard MediaPipe Pose Indices - BlazePose) --- +# These indices need verification +POSE_PART_INDICES = { + "HEAD": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], # Example + "TORSO": [11, 12, 23, 24], # Example + "LEFT_ARM": [11, 13, 15], # Upper arm only + "RIGHT_ARM": [12, 14, 16], # Upper arm only + "LEFT_FOREARM": [13, 15, 17, 19, 21], # Includes hand points? + "RIGHT_FOREARM": [14, 16, 18, 20, 22], # Includes hand points? + "LEFT_LEG": [23, 25, 27], # Upper leg + "RIGHT_LEG": [24, 26, 28], # Upper leg + "LEFT_LOWER_LEG": [25, 27, 29, 31], # Includes foot? + "RIGHT_LOWER_LEG": [26, 28, 30, 32], # Includes foot? + "FULL_BODY": list(range(33)), +} + +# --- Node Definition --- +class MaskFromPoseLandmarksNode: + """Creates a mask for a specific body part from Pose Landmarks.""" + CATEGORY = _category + DESCRIPTION = "Creates precise masks for specific body parts like head, torso, arms, or legs. Perfect for targeted editing or creating effects on specific body regions." + + @classmethod + def INPUT_TYPES(cls): + part_names = list(POSE_PART_INDICES.keys()) + return { + "required": { + "pose_landmarks": ("POSE_LANDMARKS", {"tooltip": "Pose landmark data from the Pose Landmarker node containing the precise locations of body joints"}), + "image_for_dimensions": ("IMAGE", {"tooltip": "Reference image to determine the size of the output mask - the mask will match these dimensions"}), + "part_name": (part_names, {"default": "FULL_BODY", + "tooltip": "Choose which body part to create a mask for - FULL_BODY (entire person), HEAD, TORSO, LEFT_ARM, etc."}), + "min_visibility": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.05, + "tooltip": "Only include landmarks that are at least this visible (0.0 = include all points regardless of visibility, 1.0 = only fully visible points)"}), + } + } + + RETURN_TYPES = ("MASK",) + FUNCTION = "generate_mask" + + def generate_mask(self, pose_landmarks: List[List[PoseLandmarksResult]], image_for_dimensions: torch.Tensor, part_name: str, min_visibility: float): + if part_name not in POSE_PART_INDICES: + raise ValueError(f"Unknown pose part name: '{part_name}'. Available: {list(POSE_PART_INDICES.keys())}") + + # Get dimensions from image + if image_for_dimensions.dim() != 4: + raise ValueError("image_for_dimensions must be BHWC format.") + height = image_for_dimensions.shape[1] + width = image_for_dimensions.shape[2] + input_batch_size = image_for_dimensions.shape[0] + device = image_for_dimensions.device + + # Validate batch sizes match + if len(pose_landmarks) != input_batch_size: + logger.warning(f"Batch size mismatch between pose_landmarks ({len(pose_landmarks)}) and image_for_dimensions ({input_batch_size}). Using landmark batch size.") + batch_size = len(pose_landmarks) + else: + batch_size = input_batch_size + + required_indices = POSE_PART_INDICES[part_name] + output_masks = [] + + for i in range(batch_size): + landmarks_for_image = pose_landmarks[i] # List[PoseLandmarksResult] + combined_points_for_image = [] + + # Combine points from all detected poses for the selected part + for pose_result in landmarks_for_image: + # Pose result already contains the .landmarks attribute + points_dict = {lm.index: lm for lm in pose_result.landmarks} + part_points = [] + for idx in required_indices: + if idx in points_dict: + lm = points_dict[idx] + is_visible = lm.visibility if lm.visibility is not None else 1.0 + if is_visible >= min_visibility: + px = int(lm.x * width) + py = int(lm.y * height) + part_points.append((px, py)) + # No warning for missing index + combined_points_for_image.extend(part_points) + + # Create mask from all collected points for this image + mask_tensor = create_mask_from_points(height, width, combined_points_for_image, device=device) + output_masks.append(mask_tensor) + + if not output_masks: + logger.warning("No landmarks found to generate any masks. Returning zero mask batch.") + output_batch = torch.zeros((input_batch_size, 1, height, width), dtype=torch.float32, device=device) + else: + output_batch = torch.stack(output_masks, dim=0) + + return (output_batch,) + +# --- Mappings --- +NODE_CLASS_MAPPINGS = { + "MaskFromPoseLandmarks": MaskFromPoseLandmarksNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "MaskFromPoseLandmarks": "Mask From Pose Landmarks (MediaPipe)", +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/pose/pose_landmark_visualizer.py b/node_wrappers/mediapipe_vision/pose/pose_landmark_visualizer.py new file mode 100644 index 0000000..4b81e70 --- /dev/null +++ b/node_wrappers/mediapipe_vision/pose/pose_landmark_visualizer.py @@ -0,0 +1,39 @@ +# visualize_pose.py +import mediapipe as mp +from typing import Optional, List, Any + +from ....src.mediapipe_vision.types import PoseLandmarksResult # Import specific result type if needed for extraction +from ..common.base_visualization_nodes import BaseLandmarkVisualizationNode + +import logging +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Pose/Visualization" +# Define standard pose connections +POSE_CONNECTIONS = mp.solutions.pose.POSE_CONNECTIONS + +class VisualizePoseLandmarks(BaseLandmarkVisualizationNode): + """Draws Pose landmarks and connections onto images.""" + + # Override base class properties + LANDMARKS_TYPE = "POSE_LANDMARKS" + CONNECTIONS = POSE_CONNECTIONS + DEFAULT_DRAW_POINTS = True + DEFAULT_POINT_COLOR = "#00FFFF" # Cyan + DEFAULT_POINT_RADIUS = 3 + DEFAULT_CONNECTION_COLOR = "#FFFFFF" # White + DEFAULT_CONNECTION_THICKNESS = 2 + SUPPORTS_VISIBILITY = True # Pose landmarks have visibility + CATEGORY = _category + + def get_landmark_list(self, detection_result: Any) -> Optional[List[Any]]: + return detection_result.landmarks + + +# Node registration +NODE_CLASS_MAPPINGS = { + "VisualizePoseLandmarks": VisualizePoseLandmarks +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "VisualizePoseLandmarks": "Visualize Pose Landmarks (MediaPipe)" +} \ No newline at end of file diff --git a/node_wrappers/mediapipe_vision/pose/position.py b/node_wrappers/mediapipe_vision/pose/position.py new file mode 100644 index 0000000..e0787a7 --- /dev/null +++ b/node_wrappers/mediapipe_vision/pose/position.py @@ -0,0 +1,41 @@ +import logging +from typing import List, Tuple, Any, Optional + +# Import the base class +from ..common.universal_landmark_nodes import LandmarkPositionBaseNode +# Import the specific landmark type for clarity and potential future use +from ....src.mediapipe_vision.types import POSE_LANDMARKS + +logger = logging.getLogger(__name__) +_category = "Realtime Nodes/MediaPipe Vision/Pose/PoseLandmark/Position" + +class PoseLandmarkPositionNode(LandmarkPositionBaseNode): + """Extracts position lists (x, y, z, vis, pres) for a specific landmark index + from POSE_LANDMARKS across the batch.""" + CATEGORY = _category + # Define the specific input type string this node expects + LANDMARKS_TYPE = "POSE_LANDMARKS" + DESCRIPTION = "Extracts lists of coordinates (x, y, z) and properties (visibility, presence) for a specific Pose Landmark index across an entire batch. Supports world coordinates. Outputs separate lists for each property." + + @classmethod + def INPUT_TYPES(cls): + # Define the specific input type for this node + return { + "required": { + "landmarks": (cls.LANDMARKS_TYPE, {"forceInput": True}), + "landmark_index": ("INT", {"default": 0, "min": 0, "max": 32, "tooltip": "Nose=0, Left Wrist=15, Right Wrist=16"}), # Pose specific default/range + "use_world_coordinates": ("BOOLEAN", {"default": False, "tooltip": "Use world coordinates if available"}), + } + } + + # No need to override INPUT_TYPES or extract_positions, inheriting from base is sufficient. + # The base class handles everything using self.LANDMARKS_TYPE. + +# --- Node Mappings --- +NODE_CLASS_MAPPINGS = { + "PoseLandmarkPosition": PoseLandmarkPositionNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "PoseLandmarkPosition": "Pose Landmark Position Extractor (Batch)", +} \ No newline at end of file diff --git a/node_wrappers/realtimenodes/controls/mask_controls.py b/node_wrappers/realtimenodes/controls/mask_controls.py index 4a7e79b..b7f92a1 100644 --- a/node_wrappers/realtimenodes/controls/mask_controls.py +++ b/node_wrappers/realtimenodes/controls/mask_controls.py @@ -48,7 +48,7 @@ class RepulsiveMaskNode(ControlNodeBase, MaskControlMixin): RETURN_TYPES = ("MASK",) FUNCTION = "update" - CATEGORY = "real-time/control/mask" + CATEGORY = "Realtime Nodes/control/mask" def interact(self, mask, input_mask_np, state, strength, height, width, is_attract): if np.max(input_mask_np) < 0.1: @@ -168,7 +168,7 @@ class ResizeMaskNode(ControlNodeBase, MaskControlMixin): RETURN_TYPES = ("MASK",) FUNCTION = "update" - CATEGORY = "real-time/control/mask" + CATEGORY = "Realtime Nodes/control/mask" def resize(self, mask, input_mask_np, state, strength, height, width): if np.max(input_mask_np) < 0.1: diff --git a/node_wrappers/realtimenodes/controls/motion_controls.py b/node_wrappers/realtimenodes/controls/motion_controls.py index 539f27f..f3d62a0 100644 --- a/node_wrappers/realtimenodes/controls/motion_controls.py +++ b/node_wrappers/realtimenodes/controls/motion_controls.py @@ -40,7 +40,7 @@ class ROINode(ControlNodeBase): RETURN_TYPES = ("ROI",) FUNCTION = "define_roi" - CATEGORY = "real-time/control/motion" + CATEGORY = "Realtime Nodes/control/motion" def define_roi(self, mask, action, value, next_roi=None): # Convert mask to numpy for bounding box calculation @@ -100,7 +100,7 @@ class MotionController(ControlNodeBase): RETURN_TYPES = ("FLOAT", "MASK") FUNCTION = "process_motion" - CATEGORY = "real-time/control/motion" + CATEGORY = "Realtime Nodes/control/motion" def process_motion(self, image, roi_chain, threshold, blur_size, minimum_value, maximum_value, starting_value, always_execute=True): @@ -252,7 +252,7 @@ class IntegerMotionController(MotionController): RETURN_TYPES = ("INT", "MASK") FUNCTION = "process_motion" - CATEGORY = "real-time/control/motion" + CATEGORY = "Realtime Nodes/control/motion" def _apply_rounding(self, value, mode): """Apply the specified rounding mode to convert float to int""" diff --git a/node_wrappers/realtimenodes/controls/sequence_controls.py b/node_wrappers/realtimenodes/controls/sequence_controls.py index 21b5f75..37a0cae 100644 --- a/node_wrappers/realtimenodes/controls/sequence_controls.py +++ b/node_wrappers/realtimenodes/controls/sequence_controls.py @@ -65,7 +65,7 @@ class FloatSequence(SequenceControlBase): RETURN_TYPES = ("FLOAT",) FUNCTION = "update" - CATEGORY = "real-time/control/sequence" + CATEGORY = "Realtime Nodes/control/sequence" @classmethod def INPUT_TYPES(cls): @@ -88,7 +88,7 @@ class IntSequence(SequenceControlBase): RETURN_TYPES = ("INT",) FUNCTION = "update" - CATEGORY = "real-time/control/sequence" + CATEGORY = "Realtime Nodes/control/sequence" @classmethod def INPUT_TYPES(cls): @@ -111,7 +111,7 @@ class StringSequence(SequenceControlBase): RETURN_TYPES = ("STRING",) FUNCTION = "update" - CATEGORY = "real-time/control/sequence" + CATEGORY = "Realtime Nodes/control/sequence" @classmethod def INPUT_TYPES(cls): diff --git a/node_wrappers/realtimenodes/controls/state_management_controls.py b/node_wrappers/realtimenodes/controls/state_management_controls.py index 02f915b..15548f6 100644 --- a/node_wrappers/realtimenodes/controls/state_management_controls.py +++ b/node_wrappers/realtimenodes/controls/state_management_controls.py @@ -18,7 +18,7 @@ class StateResetNode(ControlNodeBase): RETURN_TYPES = ("BOOLEAN",) FUNCTION = "update" - CATEGORY = "real-time/control/utility" + CATEGORY = "Realtime Nodes/control/utility" def update(self, trigger, always_execute=True): print(f"\n=== StateResetNode UPDATE - node_id: {self.node_id} ===") @@ -49,7 +49,7 @@ class StateTestNode(ControlNodeBase): RETURN_TYPES = ("INT",) FUNCTION = "update" - CATEGORY = "real-time/control/utility" + CATEGORY = "Realtime Nodes/control/utility" def update(self, increment, always_execute=True): print(f"\n=== StateTestNode UPDATE - node_id: {self.node_id} ===") diff --git a/node_wrappers/realtimenodes/controls/value_controls.py b/node_wrappers/realtimenodes/controls/value_controls.py index 107c982..99f6aea 100644 --- a/node_wrappers/realtimenodes/controls/value_controls.py +++ b/node_wrappers/realtimenodes/controls/value_controls.py @@ -85,7 +85,7 @@ class FloatControl(ValueControlBase): RETURN_TYPES = ("FLOAT",) FUNCTION = "update_value" - CATEGORY = "real-time/control/value" + CATEGORY = "Realtime Nodes/control/value" def update_value(self, maximum_value, minimum_value, starting_value, steps_per_cycle, movement_type, always_execute=True): return self.update_value_base(maximum_value, minimum_value, starting_value, steps_per_cycle, movement_type, always_execute) @@ -124,7 +124,7 @@ class IntControl(ValueControlBase): RETURN_TYPES = ("INT",) FUNCTION = "update_value" - CATEGORY = "real-time/control/value" + CATEGORY = "Realtime Nodes/control/value" def update_value(self, maximum_value, minimum_value, starting_value, steps_per_cycle, movement_type, always_execute=True): result = self.update_value_base(maximum_value, minimum_value, starting_value, steps_per_cycle, movement_type, always_execute) @@ -159,7 +159,7 @@ class StringControl(ControlNodeBase): RETURN_TYPES = ("STRING",) FUNCTION = "update" - CATEGORY = "real-time/control/value" + CATEGORY = "Realtime Nodes/control/value" def update(self, strings, steps_per_cycle, movement_type, always_execute=True): # Split the input strings into a list diff --git a/node_wrappers/realtimenodes/logic/logic.py b/node_wrappers/realtimenodes/logic/logic.py index 5899732..7bcdc91 100644 --- a/node_wrappers/realtimenodes/logic/logic.py +++ b/node_wrappers/realtimenodes/logic/logic.py @@ -28,7 +28,7 @@ class LazyCondition(ControlNodeBase): RETURN_TYPES = (AlwaysEqualProxy("*"),) FUNCTION = "update" - CATEGORY = "real-time/control/utility" + CATEGORY = "Realtime Nodes/control/utility" def check_lazy_status(self, condition, if_true, fallback, use_fallback): """Only evaluate the if_true path if condition is truthy.""" @@ -84,7 +84,7 @@ class LogicOperator(ControlNodeBase): RETURN_TYPES = ("BOOLEAN",) FUNCTION = "update" - CATEGORY = "real-time/control/logic" + CATEGORY = "Realtime Nodes/control/logic" def update(self, operation, input_a, always_execute=True, input_b=None): """Perform the selected logical operation on inputs based on their truthiness.""" diff --git a/node_wrappers/realtimenodes/specialized/__init__.py b/node_wrappers/realtimenodes/specialized/__init__.py deleted file mode 100644 index da22290..0000000 --- a/node_wrappers/realtimenodes/specialized/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# This file intentionally left blank \ No newline at end of file diff --git a/node_wrappers/realtimenodes/utils/utility_controls.py b/node_wrappers/realtimenodes/utils/utility_controls.py index 1c7c6aa..e6a298e 100644 --- a/node_wrappers/realtimenodes/utils/utility_controls.py +++ b/node_wrappers/realtimenodes/utils/utility_controls.py @@ -16,7 +16,7 @@ class FPSMonitor(ControlNodeBase): RETURN_TYPES = ("IMAGE", "MASK") FUNCTION = "update" - CATEGORY = "real-time/control/utility" + CATEGORY = "Realtime Nodes/control/utility" @classmethod def INPUT_TYPES(cls): @@ -162,7 +162,7 @@ class SimilarityFilter(ControlNodeBase): RETURN_TYPES = ("IMAGE", "BOOLEAN") RETURN_NAMES = ("image", "should_execute") FUNCTION = "update" - CATEGORY = "real-time/control/utility" + CATEGORY = "Realtime Nodes/control/utility" def __init__(self): super().__init__() diff --git a/requirements.txt b/requirements.txt index 7dcd71a..4642d9b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,7 @@ -opencv-python Pillow -mediapipe \ No newline at end of file +mediapipe>=0.10.9 +opencv-python>=4.7.0 +numpy>=1.20.0 +scipy>=1.8.0 + +#TODO remove Pillow req \ No newline at end of file diff --git a/src/mediapipe_vision/__init__.py b/src/mediapipe_vision/__init__.py new file mode 100644 index 0000000..d96faea --- /dev/null +++ b/src/mediapipe_vision/__init__.py @@ -0,0 +1,4 @@ +"""Source code for MediaPipe Vision tasks implementation.""" + +# Import utility modules +from . import utils \ No newline at end of file diff --git a/src/mediapipe_vision/face_detection/__init__.py b/src/mediapipe_vision/face_detection/__init__.py new file mode 100644 index 0000000..fd9b0f9 --- /dev/null +++ b/src/mediapipe_vision/face_detection/__init__.py @@ -0,0 +1 @@ +"""Face Detection implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/face_detection/detector.py b/src/mediapipe_vision/face_detection/detector.py new file mode 100644 index 0000000..4a8b6e2 --- /dev/null +++ b/src/mediapipe_vision/face_detection/detector.py @@ -0,0 +1,131 @@ +"""Face Detection implementation using MediaPipe. + +This module contains the implementation of MediaPipe Face Detection functionality. +""" + +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List, Tuple +# Import new types +from ..types import FaceDetectionResult, BoundingBox, FaceKeypoint +from ..utils.timestamp_provider import TimestampProvider # Import from utils + +class FaceDetector: + """Detects faces in an image using MediaPipe FaceDetector.""" + + def __init__(self, model_path: str): + """Initialize the detector with the model path. + + Args: + model_path: Path to the MediaPipe FaceDetector .task file. + """ + if not model_path: + raise ValueError("A valid model_path must be provided.") + + self.model_path = model_path + self._detector_instance = None + self._current_options = None # Store current options for comparison + self._timestamp_provider = None # Initialize TimestampProvider later + + def _initialize_detector(self, min_detection_confidence: float, running_mode: str, delegate: str): + """Initializes the FaceDetector.""" + # Map string mode to MediaPipe enum + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + options = vision.FaceDetectorOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + min_detection_confidence=min_detection_confidence + ) + self._current_options = options # Store for comparison + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.FaceDetector.create_from_options(options) + + def detect(self, image: torch.Tensor, min_detection_confidence: float = 0.5, + running_mode: str = "video", delegate: str = 'cpu') -> List[List[FaceDetectionResult]]: # Added running_mode + """Detects faces in the input image tensor. + + Returns: + A list (batch) of lists (detections per image) of FaceDetectionResult objects. + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Check if options changed (model path handled implicitly by node) + # Add running_mode to tuple check + new_options_tuple = (min_detection_confidence, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.min_detection_confidence, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + # Close previous instance if it exists and has a close method + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + self._detector_instance = self._initialize_detector(min_detection_confidence, running_mode, delegate) + + batch_size = image.shape[0] + batch_results = [] + # Determine the correct detection function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + detect_func = self._detector_instance.detect_for_video if is_video_mode else self._detector_instance.detect + + for i in range(batch_size): + img_tensor = image[i] # HWC + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + # Get timestamp for video mode + timestamp_ms = self._timestamp_provider.next() + detection_result = detect_func(mp_image, timestamp_ms) + else: + # Call image mode function + detection_result = detect_func(mp_image) + + current_image_detections = [] + if detection_result and detection_result.detections: # Check if result is not None + for detection in detection_result.detections: + bbox_mp = detection.bounding_box + keypoints_mp = detection.keypoints + score = detection.categories[0].score if detection.categories else None # Face detection usually has one score + + bbox = BoundingBox( + origin_x=bbox_mp.origin_x, + origin_y=bbox_mp.origin_y, + width=bbox_mp.width, + height=bbox_mp.height + ) + + keypoints = None + if keypoints_mp: + keypoints = [ + FaceKeypoint( + label=kp.label, + x=kp.x, + y=kp.y + ) + for kp in keypoints_mp + ] + + current_image_detections.append(FaceDetectionResult( + bounding_box=bbox, + keypoints=keypoints, + score=score + )) + + batch_results.append(current_image_detections) + + # Check MediaPipe documentation if resource cleanup is required here. + return batch_results \ No newline at end of file diff --git a/src/mediapipe_vision/face_landmark/__init__.py b/src/mediapipe_vision/face_landmark/__init__.py new file mode 100644 index 0000000..7830f06 --- /dev/null +++ b/src/mediapipe_vision/face_landmark/__init__.py @@ -0,0 +1 @@ +"""Face Landmark Detection implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/face_landmark/detector.py b/src/mediapipe_vision/face_landmark/detector.py new file mode 100644 index 0000000..90ce5fa --- /dev/null +++ b/src/mediapipe_vision/face_landmark/detector.py @@ -0,0 +1,133 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List, Tuple, Optional, Dict +# Import new types +from ..types import LandmarkPoint, FaceLandmarksResult +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +class FaceLandmarkDetector: + """Detects face landmarks and blendshapes using MediaPipe FaceLandmarker.""" + + def __init__(self, model_path: str): + """Initialize the detector with the model path. + + Args: + model_path: Path to the MediaPipe FaceLandmarker .task file. + """ + if not model_path: + raise ValueError("A valid model_path must be provided.") + + self.model_path = model_path + self._detector_instance = None + self._current_options = None # Store current options for comparison + self._timestamp_provider = None # Added + + def _initialize_detector(self, num_faces: int, min_detection_confidence: float, + min_presence_confidence: float, min_tracking_confidence: float, + output_blendshapes: bool, output_transform_matrix: bool, + running_mode: str, delegate: str): # Added running_mode + """Initializes the FaceLandmarker detector.""" + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO # Added + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + options = vision.FaceLandmarkerOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + num_faces=num_faces, + min_face_detection_confidence=min_detection_confidence, + # min_face_presence_confidence and min_tracking_confidence are for VIDEO/LIVE_STREAM + min_face_presence_confidence=min_presence_confidence, + min_tracking_confidence=min_tracking_confidence, + output_face_blendshapes=output_blendshapes, + output_facial_transformation_matrixes=output_transform_matrix + ) + self._current_options = options # Store for comparison + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.FaceLandmarker.create_from_options(options) + + def detect(self, image: torch.Tensor, num_faces: int = 1, min_detection_confidence: float = 0.5, + min_presence_confidence: float = 0.5, min_tracking_confidence: float = 0.5, + output_blendshapes: bool = False, output_transform_matrix: bool = False, + running_mode: str = "video", delegate: str = 'cpu') -> Tuple[List[List[LandmarkPoint]], Optional[List[Dict[str, float]]], Optional[List[np.ndarray]]]: # Added running_mode + """Detects face landmarks in the input image tensor. + + Returns: + A tuple containing: + - face_landmarks_batch: List (batch) of lists (faces) of LandmarkPoint objects. + - blendshapes: List of dictionaries mapping blendshape names to scores (if requested). + - transform_matrices: List of transformation matrices (NumPy arrays) (if requested). + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Check if options changed + # Add running_mode to tuple check + new_options_tuple = (num_faces, min_detection_confidence, min_presence_confidence, min_tracking_confidence, + output_blendshapes, output_transform_matrix, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.num_faces, + self._current_options.min_face_detection_confidence, + self._current_options.min_face_presence_confidence, + self._current_options.min_tracking_confidence, + self._current_options.output_face_blendshapes, + self._current_options.output_facial_transformation_matrixes, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + if self._detector_instance and hasattr(self._detector_instance, 'close'): # Close previous instance if options changed + self._detector_instance.close() + # Pass new params to initializer + self._detector_instance = self._initialize_detector(num_faces, min_detection_confidence, + min_presence_confidence, min_tracking_confidence, + output_blendshapes, output_transform_matrix, + running_mode, delegate) # Pass running_mode + + batch_size = image.shape[0] + batch_results_landmarks = [] + batch_results_blendshapes = [] if output_blendshapes else None + batch_results_matrices = [] if output_transform_matrix else None + + # Determine the correct detection function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + detect_func = self._detector_instance.detect_for_video if is_video_mode else self._detector_instance.detect + + for i in range(batch_size): + img_tensor = image[i] + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + detection_result = detect_func(mp_image, timestamp_ms) + else: + detection_result = detect_func(mp_image) + + current_image_landmarks = [] + current_image_blendshapes = [] if output_blendshapes else None + current_image_matrices = [] if output_transform_matrix else None + if detection_result and detection_result.face_landmarks: # Added check for detection_result + for face_idx, face_landmarks_mp in enumerate(detection_result.face_landmarks): + landmarks = [LandmarkPoint(index=lm_idx, x=lm.x, y=lm.y, z=lm.z) for lm_idx, lm in enumerate(face_landmarks_mp)] + current_image_landmarks.append(landmarks) + if output_blendshapes and detection_result.face_blendshapes and face_idx < len(detection_result.face_blendshapes): + blendshapes = {bs.category_name: bs.score for bs in detection_result.face_blendshapes[face_idx]} + current_image_blendshapes.append(blendshapes) + if output_transform_matrix and detection_result.facial_transformation_matrixes and face_idx < len(detection_result.facial_transformation_matrixes): + current_image_matrices.append(detection_result.facial_transformation_matrixes[face_idx]) + batch_results_landmarks.append(current_image_landmarks) + if output_blendshapes: batch_results_blendshapes.append(current_image_blendshapes) + if output_transform_matrix: batch_results_matrices.append(current_image_matrices) + + # Close detector after batch? Landmarker might need closing per batch? Check docs. + # For IMAGE mode, closing after batch seems okay. + # self._detector_instance.close() # Close is handled if re-initialized + return batch_results_landmarks, batch_results_blendshapes, batch_results_matrices \ No newline at end of file diff --git a/src/mediapipe_vision/face_stylization/__init__.py b/src/mediapipe_vision/face_stylization/__init__.py new file mode 100644 index 0000000..aa53844 --- /dev/null +++ b/src/mediapipe_vision/face_stylization/__init__.py @@ -0,0 +1 @@ +"""Face Stylization implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/face_stylization/detector.py b/src/mediapipe_vision/face_stylization/detector.py new file mode 100644 index 0000000..9926d0f --- /dev/null +++ b/src/mediapipe_vision/face_stylization/detector.py @@ -0,0 +1,67 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from typing import List, Optional +from ..utils.timestamp_provider import TimestampProvider + +class FaceStylizer: + """Applies stylization to faces using MediaPipe FaceStylizer.""" + + def __init__(self, model_path: str): + if not model_path: + raise ValueError("A valid model_path must be provided.") + self.model_path = model_path + self.detector_instance = None + self.current_options = None + self._timestamp_provider = None + + def _initialize_detector(self): + """Initializes the FaceStylizer.""" + base_options = python.BaseOptions(model_asset_path=self.model_path) + # FaceStylizerOptions has no specific config other than base options + # Check if FaceStylizer supports VIDEO mode + # According to docs (as of late 2023/early 2024), it seems it only supports IMAGE mode. + # Sticking with IMAGE mode. + options = vision.FaceStylizerOptions( + base_options=base_options + # running_mode=vision.RunningMode.VIDEO # Not supported + ) + self.current_options = () + self._timestamp_provider = TimestampProvider() + return vision.FaceStylizer.create_from_options(options) + + def stylize(self, image: torch.Tensor) -> torch.Tensor: # Output is IMAGE + """Applies face stylization to the input image tensor(s).""" + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + if self.detector_instance is None: + self.detector_instance = self._initialize_detector() + + batch_size = image.shape[0] + batch_results = [] + + for i in range(batch_size): + img_tensor = image[i] # HWC + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + stylization_result = self.detector_instance.stylize(mp_image) + + output_image_tensor = None + if stylization_result: + # Convert MediaPipe Image back to NumPy (HWC, uint8) + stylized_np = stylization_result.numpy_view() + # Convert to float tensor (HWC, 0-1) + output_image_tensor = torch.from_numpy(stylized_np).float().div(255.0) + else: + # Handle cases where stylization fails (e.g., no face detected) + # Return original image tensor for this batch item + output_image_tensor = img_tensor + + batch_results.append(output_image_tensor) + + output_batch_tensor = torch.stack(batch_results, dim=0) + return output_batch_tensor \ No newline at end of file diff --git a/src/mediapipe_vision/gesture_recognition/__init__.py b/src/mediapipe_vision/gesture_recognition/__init__.py new file mode 100644 index 0000000..81fdcae --- /dev/null +++ b/src/mediapipe_vision/gesture_recognition/__init__.py @@ -0,0 +1 @@ +"""Gesture Recognition implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/gesture_recognition/detector.py b/src/mediapipe_vision/gesture_recognition/detector.py new file mode 100644 index 0000000..200692a --- /dev/null +++ b/src/mediapipe_vision/gesture_recognition/detector.py @@ -0,0 +1,102 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List +# Import new types +from ..types import GestureRecognitionResult, GestureCategory +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +class GestureRecognizer: + """Recognizes hand gestures using MediaPipe GestureRecognizer.""" + + def __init__(self, model_path: str): + if not model_path: + raise ValueError("A valid model_path must be provided.") + self.model_path = model_path + self._detector_instance = None + self._current_options = None + self._timestamp_provider = None # Added + + def _initialize_detector(self, num_hands: int, min_detection_confidence: float, + min_tracking_confidence: float, min_presence_confidence: float, + running_mode: str, delegate: str): # Added running_mode + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO # Added + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + # Note: GestureRecognizerOptions has min_tracking_confidence, useful for VIDEO mode + options = vision.GestureRecognizerOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + num_hands=num_hands, + min_hand_detection_confidence=min_detection_confidence, + min_tracking_confidence=min_tracking_confidence, + min_hand_presence_confidence=min_presence_confidence + # Add other relevant VIDEO mode parameters if needed (e.g., canned_gestures_classifier_options) + ) + self._current_options = options + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.GestureRecognizer.create_from_options(options) + + def recognize(self, image: torch.Tensor, num_hands: int = 2, min_detection_confidence: float = 0.5, + min_tracking_confidence: float = 0.5, min_presence_confidence: float = 0.5, + running_mode: str = "video", delegate: str = 'cpu') -> List[List[GestureRecognitionResult]]: # Added running_mode + """Recognizes hand gestures in the input image tensor.""" + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Add running_mode to tuple check + new_options_tuple = (num_hands, min_detection_confidence, min_tracking_confidence, + min_presence_confidence, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.num_hands, + self._current_options.min_hand_detection_confidence, + self._current_options.min_tracking_confidence, + self._current_options.min_hand_presence_confidence, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + # Pass new params to initializer + self._detector_instance = self._initialize_detector(num_hands, min_detection_confidence, + min_tracking_confidence, min_presence_confidence, + running_mode, delegate) # Pass running_mode + + batch_size = image.shape[0] + batch_results = [] + # Determine the correct recognition function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + recognize_func = self._detector_instance.recognize_for_video if is_video_mode else self._detector_instance.recognize + + for i in range(batch_size): + img_tensor = image[i] + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + recognition_result = recognize_func(mp_image, timestamp_ms) + else: + recognition_result = recognize_func(mp_image) + + current_image_gestures = [] + if recognition_result and recognition_result.gestures: # Added check for recognition_result + for hand_idx, hand_gestures in enumerate(recognition_result.gestures): + gesture_categories = [GestureCategory(index=cat.index, score=cat.score, display_name=cat.display_name, category_name=cat.category_name) for cat in hand_gestures] + handedness = None + if recognition_result.handedness and hand_idx < len(recognition_result.handedness): + handedness_cats = recognition_result.handedness[hand_idx] + if handedness_cats: handedness = handedness_cats[0].display_name + current_image_gestures.append(GestureRecognitionResult(gestures=gesture_categories, handedness=handedness)) + batch_results.append(current_image_gestures) + + # self._detector_instance.close() # Close handled on re-init + return batch_results \ No newline at end of file diff --git a/src/mediapipe_vision/hand_landmark/__init__.py b/src/mediapipe_vision/hand_landmark/__init__.py new file mode 100644 index 0000000..fd70627 --- /dev/null +++ b/src/mediapipe_vision/hand_landmark/__init__.py @@ -0,0 +1 @@ +"""Hand Landmark Detection implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/hand_landmark/detector.py b/src/mediapipe_vision/hand_landmark/detector.py new file mode 100644 index 0000000..2b3eeb0 --- /dev/null +++ b/src/mediapipe_vision/hand_landmark/detector.py @@ -0,0 +1,131 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List, Tuple, Optional +# Import new types +from ..types import LandmarkPoint, HandLandmarksResult +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +class HandLandmarkDetector: + """Detects hand landmarks using MediaPipe HandLandmarker.""" + + def __init__(self, model_path: str): + """Initialize the detector with the model path. + + Args: + model_path: Path to the MediaPipe HandLandmarker .task file. + """ + if not model_path: + raise ValueError("A valid model_path must be provided.") + # Verify file exists? Optional, MediaPipe might handle this. + + self.model_path = model_path + self._detector_instance = None + self._current_options = None + self._timestamp_provider = None # Added + + def _initialize_detector(self, num_hands: int, min_detection_confidence: float, + min_presence_confidence: float, min_tracking_confidence: float, + running_mode: str, delegate: str): # Added running_mode + """Initializes the HandLandmarker detector.""" + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO # Added + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + options = vision.HandLandmarkerOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + num_hands=num_hands, + min_hand_detection_confidence=min_detection_confidence, + # min_hand_presence_confidence and min_tracking_confidence are for VIDEO/LIVE_STREAM + min_hand_presence_confidence=min_presence_confidence, + min_tracking_confidence=min_tracking_confidence + ) + self._current_options = options + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.HandLandmarker.create_from_options(options) + + def detect(self, image: torch.Tensor, num_hands: int = 2, min_detection_confidence: float = 0.5, + min_presence_confidence: float = 0.5, min_tracking_confidence: float = 0.5, + running_mode: str = "video", delegate: str = 'cpu') -> List[List[HandLandmarksResult]]: # Added running_mode + """Detects hand landmarks in the input image tensor. + + Returns: + A list (batch) of lists (hands per image) of HandLandmarksResult objects. + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Add running_mode to tuple check + new_options_tuple = (num_hands, min_detection_confidence, + min_presence_confidence, min_tracking_confidence, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.num_hands, + self._current_options.min_hand_detection_confidence, + self._current_options.min_hand_presence_confidence, + self._current_options.min_tracking_confidence, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + # Pass new params to initializer + self._detector_instance = self._initialize_detector(num_hands, min_detection_confidence, + min_presence_confidence, min_tracking_confidence, + running_mode, delegate) # Pass running_mode + + batch_size = image.shape[0] + batch_results = [] + # Determine the correct detection function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + detect_func = self._detector_instance.detect_for_video if is_video_mode else self._detector_instance.detect + + for i in range(batch_size): + img_tensor = image[i] # HWC + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + detection_result = detect_func(mp_image, timestamp_ms) + else: + detection_result = detect_func(mp_image) + + current_image_results = [] + if detection_result and detection_result.hand_landmarks: # Added check for detection_result + for hand_idx, hand_landmarks_mp in enumerate(detection_result.hand_landmarks): + + landmarks = [ + LandmarkPoint(index=lm_idx, x=lm.x, y=lm.y, z=lm.z) + for lm_idx, lm in enumerate(hand_landmarks_mp) + ] + + world_landmarks = None + if detection_result.hand_world_landmarks and hand_idx < len(detection_result.hand_world_landmarks): + world_landmarks = [ + LandmarkPoint(index=lm_idx, x=lm.x, y=lm.y, z=lm.z) + for lm_idx, lm in enumerate(detection_result.hand_world_landmarks[hand_idx]) + ] + + handedness = None + if detection_result.handedness and hand_idx < len(detection_result.handedness): + handedness_cats = detection_result.handedness[hand_idx] + if handedness_cats: handedness = handedness_cats[0].display_name + + current_image_results.append(HandLandmarksResult( + landmarks=landmarks, + world_landmarks=world_landmarks, + handedness=handedness + )) + + batch_results.append(current_image_results) + + # self._detector_instance.close() # Close handled on re-init + return batch_results \ No newline at end of file diff --git a/src/mediapipe_vision/holistic_landmark/__init__.py b/src/mediapipe_vision/holistic_landmark/__init__.py new file mode 100644 index 0000000..12faee9 --- /dev/null +++ b/src/mediapipe_vision/holistic_landmark/__init__.py @@ -0,0 +1,3 @@ +"""Holistic landmark detection module using MediaPipe Legacy API.""" + +from .detector import HolisticLandmarkDetector \ No newline at end of file diff --git a/src/mediapipe_vision/holistic_landmark/detector.py b/src/mediapipe_vision/holistic_landmark/detector.py new file mode 100644 index 0000000..5acb471 --- /dev/null +++ b/src/mediapipe_vision/holistic_landmark/detector.py @@ -0,0 +1,241 @@ +"""Holistic landmark detector using MediaPipe Legacy Solutions API. + +This implementation specifically handles the MediaPipe Holistic solution +which is currently only available through the legacy API, not the Task API. +""" + +import mediapipe as mp +import numpy as np +import torch +import cv2 +from typing import List, Tuple, Optional, Dict, Any + +# Import needed types +from ..types import LandmarkPoint, HolisticLandmarksResult +from ..utils.timestamp_provider import TimestampProvider + +class HolisticLandmarkDetector: + """Detects holistic landmarks combining face, pose and hand tracking. + + This detector uses the legacy MediaPipe Solutions API rather than the Task API + since Holistic is not yet available in the Task API format. + """ + + def __init__(self, model_path: Optional[str] = None): + """Initialize the detector. + + Args: + model_path: Unused parameter to maintain API compatibility with other detectors. + The holistic solution doesn't use a model path as it uses the built-in models. + """ + # Model path is ignored for legacy API - it's for API compatibility only + self._detector_instance = None + self._current_options = None + self._timestamp_provider = TimestampProvider() + + def _initialize_detector(self, + min_detection_confidence: float, + min_tracking_confidence: float, + model_complexity: int, + enable_segmentation: bool, + refine_face_landmarks: bool, + static_image_mode: bool) -> mp.solutions.holistic.Holistic: + """Initializes the Holistic detector with the appropriate parameters. + + Args: + min_detection_confidence: Minimum confidence for detection to be considered + min_tracking_confidence: Minimum confidence to maintain tracking + model_complexity: 0, 1, or 2 determining model complexity + enable_segmentation: Whether to generate segmentation masks + refine_face_landmarks: Whether to use refined face landmarks (more details around eyes/lips) + static_image_mode: If True, treats input as independent images (slower but more accurate) + + Returns: + Initialized Holistic detector instance + """ + # Store options as a dictionary for parameter comparison + self._current_options = { + 'min_detection_confidence': min_detection_confidence, + 'min_tracking_confidence': min_tracking_confidence, + 'model_complexity': model_complexity, + 'enable_segmentation': enable_segmentation, + 'refine_face_landmarks': refine_face_landmarks, + 'static_image_mode': static_image_mode + } + + # Create the holistic solution instance with specified options + return mp.solutions.holistic.Holistic( + static_image_mode=static_image_mode, + model_complexity=model_complexity, + enable_segmentation=enable_segmentation, + refine_face_landmarks=refine_face_landmarks, + min_detection_confidence=min_detection_confidence, + min_tracking_confidence=min_tracking_confidence + ) + + def detect(self, image: torch.Tensor, + min_detection_confidence: float = 0.5, + min_tracking_confidence: float = 0.5, + model_complexity: int = 1, + enable_segmentation: bool = False, + refine_face_landmarks: bool = False, + static_image_mode: bool = False) -> Tuple[List[HolisticLandmarksResult], Optional[List[torch.Tensor]]]: + """Detects holistic landmarks in the input image tensor. + + Args: + image: Input image tensor in BHWC format + min_detection_confidence: Minimum confidence for detection (0.0-1.0) + min_tracking_confidence: Minimum confidence for tracking (0.0-1.0) + model_complexity: Complexity of the pose landmark model (0, 1, or 2) + enable_segmentation: Whether to output segmentation masks + refine_face_landmarks: Whether to use refined face landmarks + static_image_mode: If True, treats input as independent images + + Returns: + Tuple containing: + - holistic_landmarks_batch: List of HolisticLandmarksResult objects for each image + - segmentation_masks_batch: List of segmentation masks (if requested) + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Create a parameters tuple for comparison + new_options = { + 'min_detection_confidence': min_detection_confidence, + 'min_tracking_confidence': min_tracking_confidence, + 'model_complexity': model_complexity, + 'enable_segmentation': enable_segmentation, + 'refine_face_landmarks': refine_face_landmarks, + 'static_image_mode': static_image_mode + } + + # Initialize or update detector if needed + if self._detector_instance is None or self._current_options != new_options: + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + self._detector_instance = self._initialize_detector( + min_detection_confidence, + min_tracking_confidence, + model_complexity, + enable_segmentation, + refine_face_landmarks, + static_image_mode + ) + + batch_size = image.shape[0] + batch_holistic_landmarks = [] + batch_segmentation_masks = [] if enable_segmentation else None + + for i in range(batch_size): + img_tensor = image[i] # HWC + # Convert to numpy with proper scaling and datatype + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + + # Process the image with MediaPipe Holistic + holistic_results = self._detector_instance.process( + cv2.cvtColor(np_image, cv2.COLOR_BGR2RGB) + ) + + # Convert results to our standardized format + holistic_result = self._convert_to_landmark_result(holistic_results) + batch_holistic_landmarks.append(holistic_result) + + # Handle segmentation mask if requested + if enable_segmentation and holistic_results.segmentation_mask is not None: + mask_np = holistic_results.segmentation_mask + mask_tensor = torch.from_numpy(mask_np).float() # HW + if batch_segmentation_masks is not None: + batch_segmentation_masks.append(mask_tensor) + + return batch_holistic_landmarks, batch_segmentation_masks + + def _convert_to_landmark_result(self, holistic_results: Any) -> HolisticLandmarksResult: + """Converts MediaPipe Holistic results to standardized HolisticLandmarksResult. + + Args: + holistic_results: Raw results from mp.solutions.holistic + + Returns: + Standardized HolisticLandmarksResult containing all landmarks + """ + # Convert face landmarks + face_landmarks = None + if holistic_results.face_landmarks: + face_landmarks = [ + LandmarkPoint( + index=idx, + x=landmark.x, + y=landmark.y, + z=landmark.z, + visibility=getattr(landmark, 'visibility', None) + ) + for idx, landmark in enumerate(holistic_results.face_landmarks.landmark) + ] + + # Convert pose landmarks + pose_landmarks = None + if holistic_results.pose_landmarks: + pose_landmarks = [ + LandmarkPoint( + index=idx, + x=landmark.x, + y=landmark.y, + z=landmark.z, + visibility=landmark.visibility + ) + for idx, landmark in enumerate(holistic_results.pose_landmarks.landmark) + ] + + # Convert pose world landmarks + pose_world_landmarks = None + if holistic_results.pose_world_landmarks: + pose_world_landmarks = [ + LandmarkPoint( + index=idx, + x=landmark.x, + y=landmark.y, + z=landmark.z, + visibility=landmark.visibility + ) + for idx, landmark in enumerate(holistic_results.pose_world_landmarks.landmark) + ] + + # Convert left hand landmarks + left_hand_landmarks = None + if holistic_results.left_hand_landmarks: + left_hand_landmarks = [ + LandmarkPoint( + index=idx, + x=landmark.x, + y=landmark.y, + z=landmark.z + ) + for idx, landmark in enumerate(holistic_results.left_hand_landmarks.landmark) + ] + + # Convert right hand landmarks + right_hand_landmarks = None + if holistic_results.right_hand_landmarks: + right_hand_landmarks = [ + LandmarkPoint( + index=idx, + x=landmark.x, + y=landmark.y, + z=landmark.z + ) + for idx, landmark in enumerate(holistic_results.right_hand_landmarks.landmark) + ] + + return HolisticLandmarksResult( + face_landmarks=face_landmarks, + pose_landmarks=pose_landmarks, + pose_world_landmarks=pose_world_landmarks, + left_hand_landmarks=left_hand_landmarks, + right_hand_landmarks=right_hand_landmarks + ) + + def close(self): + """Releases resources used by the detector.""" + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + self._detector_instance = None \ No newline at end of file diff --git a/src/mediapipe_vision/image_classification/__init__.py b/src/mediapipe_vision/image_classification/__init__.py new file mode 100644 index 0000000..b839c10 --- /dev/null +++ b/src/mediapipe_vision/image_classification/__init__.py @@ -0,0 +1 @@ +"""Image Classification implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/image_embedding/__init__.py b/src/mediapipe_vision/image_embedding/__init__.py new file mode 100644 index 0000000..cf29562 --- /dev/null +++ b/src/mediapipe_vision/image_embedding/__init__.py @@ -0,0 +1 @@ +"""Image Embedding implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/image_embedding/detector.py b/src/mediapipe_vision/image_embedding/detector.py new file mode 100644 index 0000000..2a1c5f1 --- /dev/null +++ b/src/mediapipe_vision/image_embedding/detector.py @@ -0,0 +1,86 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List, Optional +# Import new types +from ..types import ImageEmbedderResult +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +class ImageEmbedder: + """Generates image embeddings using MediaPipe ImageEmbedder.""" + + def __init__(self, model_path: str): + if not model_path: + raise ValueError("A valid model_path must be provided.") + self.model_path = model_path + self._detector_instance = None + self._current_options = None + self._timestamp_provider = None # Added + + def _initialize_detector(self, l2_normalize: bool, quantize: bool, + running_mode: str, delegate: str): # Added running_mode + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO # Added + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + options = vision.ImageEmbedderOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + l2_normalize=l2_normalize, + quantize=quantize + ) + self._current_options = options + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.ImageEmbedder.create_from_options(options) + + def embed(self, image: torch.Tensor, l2_normalize: bool = True, quantize: bool = False, + running_mode: str = "video", delegate: str = 'cpu') -> List[List[ImageEmbedderResult]]: # Added running_mode + """Generates embeddings for the input image tensor(s).""" + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Add running_mode to tuple check + new_options_tuple = (l2_normalize, quantize, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.l2_normalize, + self._current_options.quantize, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + # ImageEmbedder doesn't seem to have close(), so just replace instance + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + self._detector_instance = self._initialize_detector(l2_normalize, quantize, running_mode, delegate) + + batch_size = image.shape[0] + batch_results = [] + # Determine the correct embedding function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + embed_func = self._detector_instance.embed_for_video if is_video_mode else self._detector_instance.embed + + for i in range(batch_size): + img_tensor = image[i] + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + embedding_result = embed_func(mp_image, timestamp_ms) + else: + embedding_result = embed_func(mp_image) + + current_image_embeddings = [] + if embedding_result and embedding_result.embeddings: # Added check for embedding_result + for emb in embedding_result.embeddings: + result = ImageEmbedderResult(float_embedding=list(emb.embedding) if not quantize else None, quantized_embedding=bytes(emb.embedding) if quantize else None, head_index=emb.head_index, head_name=emb.head_name) + current_image_embeddings.append(result) + batch_results.append(current_image_embeddings) + + return batch_results \ No newline at end of file diff --git a/src/mediapipe_vision/image_segmentation/__init__.py b/src/mediapipe_vision/image_segmentation/__init__.py new file mode 100644 index 0000000..87f49bb --- /dev/null +++ b/src/mediapipe_vision/image_segmentation/__init__.py @@ -0,0 +1 @@ +"""Image Segmentation implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/image_segmentation/segmenter.py b/src/mediapipe_vision/image_segmentation/segmenter.py new file mode 100644 index 0000000..9d4cc8c --- /dev/null +++ b/src/mediapipe_vision/image_segmentation/segmenter.py @@ -0,0 +1,194 @@ +"""Image Segmentation implementation using MediaPipe. + +This module contains the implementation of MediaPipe Image Segmentation functionality. +""" + +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.vision import ImageSegmenter +import platform # Needed for OS check +import logging +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +logger = logging.getLogger(__name__) + +class ImageSegmenter: + """Performs image segmentation using MediaPipe ImageSegmenter. + Adapted from ComfyUI-Stream-Pack implementation. + """ + + def __init__(self, model_path: str): + """Initialize the segmenter with the model path. + + Args: + model_path: Path to the MediaPipe ImageSegmenter .tflite or .task file. + """ + if not model_path: + raise ValueError("A valid model_path must be provided.") + + self.model_path = model_path + # Keep track of the initialized segmenter instance and its config + self._detector_instance = None + self.current_config = None + self.delegate = None # Store delegate used + self._timestamp_provider = None # Added + + def _initialize_segmenter( + self, + output_confidence_masks: bool, + output_category_mask: bool, + running_mode: str, delegate_mode="cpu"): + """Initializes the ImageSegmenter or returns existing if config matches. + Handles GPU delegate selection. + """ + # Return type removed from signature as it's handled internally + new_config = (output_confidence_masks, output_category_mask, running_mode, delegate_mode) + + # Re-initialize if config changed or not initialized + if self._detector_instance is None or self.current_config != new_config: + if self._detector_instance: + logger.info("Closing existing ImageSegmenter due to config change.") + try: + self._detector_instance.close() + except Exception as e: + logger.warning(f"Error closing previous segmenter: {e}") + self._detector_instance = None + + logger.info(f"Initializing ImageSegmenter: model='{self.model_path}', conf_mask={output_confidence_masks}, cat_mask={output_category_mask}, mode={running_mode}, delegate={delegate_mode}") + + # Configure BaseOptions with delegate + use_gpu = (delegate_mode.lower() == "gpu") + if use_gpu and platform.system().lower() == "windows": + logger.warning("GPU delegate is not supported on Windows for Python MediaPipe Tasks. Falling back to CPU.") + use_gpu = False + delegate_mode = "cpu" + + delegate = python.BaseOptions.Delegate.GPU if use_gpu else python.BaseOptions.Delegate.CPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate) + + try: + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO + options = vision.ImageSegmenterOptions( + base_options=base_options, + running_mode=mode_enum, + output_confidence_masks=output_confidence_masks, + output_category_mask=output_category_mask + ) + self._detector_instance = vision.ImageSegmenter.create_from_options(options) + self.current_config = new_config + self.delegate = delegate_mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + logger.info("ImageSegmenter initialized successfully.") + except Exception as e: + logger.error(f"Failed to create ImageSegmenter: {e}") + # Raise error to prevent using a failed instance + raise RuntimeError(f"Failed to initialize MediaPipe ImageSegmenter: {e}") + else: + # logger.debug("Reusing existing ImageSegmenter instance.") # Optional: for debugging + pass + + # No explicit return needed, instance is stored in self._detector_instance + + def segment(self, image: torch.Tensor, output_confidence_masks: bool = True, output_category_mask: bool = False, + running_mode: str = "video", delegate_mode="cpu"): + """Segments the input image tensor. + + Args: + image: Input image tensor (BHWC, RGB, 0-1 float). + NOTE: This implementation currently only supports batch size 1 for simplicity. + output_confidence_masks: Whether to output confidence masks (float, 0-1). + output_category_mask: Whether to output a category mask (uint8). + running_mode: Processing mode ("image" or "video"). + delegate_mode: Computation delegate ('cpu' or 'gpu'). + + Returns: + A tuple containing: + - confidence_masks_batch: List (batch) of lists (mask per category) of confidence masks (Torch tensors, HW) or None. + - category_mask_batch: List (batch) of category masks (Torch tensor, HW) or None. + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + # if image.shape[0] != 1: # Temporarily removed batch size 1 restriction + # logger.warning("ImageSegmenter currently processes batch > 1 sequentially. Performance may vary.") + # raise ValueError("Input tensor must be in BHWC format with batch size 1.") + if not output_confidence_masks and not output_category_mask: + raise ValueError("At least one output type (confidence or category mask) must be enabled.") + + # Initialize (or get existing) segmenter instance + # Initialization now happens within the function if needed + self._initialize_segmenter(output_confidence_masks, output_category_mask, running_mode, delegate_mode) + if not self._detector_instance: + # Initialization failed, return None or raise error + logger.error("Segmenter instance is not available after initialization attempt.") + # Return structure matching expected output format (list per batch item) + return [None] * image.shape[0], [None] * image.shape[0] + + batch_size = image.shape[0] + batch_results_confidence = [] if output_confidence_masks else None + batch_results_category = [] if output_category_mask else None + + # Determine the correct segmentation function based on mode + is_video_mode = self.current_config[2] == "video" + segment_func = self._detector_instance.segment_for_video if is_video_mode else self._detector_instance.segment + + for i in range(batch_size): + img_tensor = image[i] # HWC + # Convert image format + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + # Perform segmentation + segmentation_result = None + try: + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + segmentation_result = segment_func(mp_image, timestamp_ms) + else: + segmentation_result = segment_func(mp_image) + except Exception as e: + logger.error(f"Error during segmentation for image {i}: {e}") + # Append None results for this image + if output_confidence_masks: batch_results_confidence.append(None) + if output_category_mask: batch_results_category.append(None) + continue # Skip to the next image + + # Process results for the current image + current_image_confidence_masks = None + current_image_category_mask = None + + if output_confidence_masks: + if segmentation_result and segmentation_result.confidence_masks: + current_image_confidence_masks = [] + for mask in segmentation_result.confidence_masks: + mask_np = mask.numpy_view() + mask_tensor = torch.from_numpy(mask_np).float() # Keep as HW + current_image_confidence_masks.append(mask_tensor) + batch_results_confidence.append(current_image_confidence_masks) + + if output_category_mask: + if segmentation_result and segmentation_result.category_mask: + mask_np = segmentation_result.category_mask.numpy_view() + # Category mask is uint8, convert to long tensor + current_image_category_mask = torch.from_numpy(mask_np).long() # Keep as HW + batch_results_category.append(current_image_category_mask) + + return batch_results_confidence, batch_results_category + + def close(self): + """Closes the segmenter instance if it exists.""" + if self._detector_instance: + logger.info("Closing ImageSegmenter instance.") + try: + self._detector_instance.close() + except Exception as e: + logger.warning(f"Error closing segmenter instance: {e}") + self._detector_instance = None + self.current_config = None + self.delegate = None + + def __del__(self): + # Ensure resources are released when the object is destroyed + self.close() \ No newline at end of file diff --git a/src/mediapipe_vision/interactive_segmentation/__init__.py b/src/mediapipe_vision/interactive_segmentation/__init__.py new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/src/mediapipe_vision/interactive_segmentation/__init__.py @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/mediapipe_vision/interactive_segmentation/detector.py b/src/mediapipe_vision/interactive_segmentation/detector.py new file mode 100644 index 0000000..c9c1774 --- /dev/null +++ b/src/mediapipe_vision/interactive_segmentation/detector.py @@ -0,0 +1,113 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.vision.interactive_segmenter import ( + InteractiveSegmenter, +) +from mediapipe.tasks.python.vision import interactive_segmenter +from mediapipe.tasks.python.components.containers import keypoint + +from typing import List, Optional +from ..types import PointOfInterest +from ..utils.timestamp_provider import TimestampProvider + +import logging +logger = logging.getLogger(__name__) + +NormalizedKeypoint = keypoint.NormalizedKeypoint + +class InteractiveSegmenterProcessor: + """Performs interactive image segmentation using MediaPipe.""" + + def __init__(self, model_path: str): + if not model_path: + raise ValueError("A valid model_path must be provided.") + self.model_path = model_path + self.detector_instance = None + self.current_options = None + self._timestamp_provider = None + + def _initialize_processor(self, output_category_mask: bool, output_confidence_mask: bool): + base_options = python.BaseOptions(model_asset_path=self.model_path) + options = interactive_segmenter.InteractiveSegmenterOptions( + base_options=base_options, + output_category_mask=output_category_mask, + output_confidence_masks=output_confidence_mask + ) + self.current_options = (output_category_mask, output_confidence_mask) + self._timestamp_provider = TimestampProvider() + return interactive_segmenter.InteractiveSegmenter.create_from_options(options) + + def segment(self, image: torch.Tensor, points_of_interest: List[PointOfInterest], + output_category_mask: bool = True, output_confidence_mask: bool = False) -> List[Optional[torch.Tensor]]: + """Performs interactive segmentation based on points of interest. + Iterates through points, generates mask for each, and combines them. + + Args: + image: Input image tensor (BHWC). + points_of_interest: List of PointOfInterest objects (normalized coords). + output_category_mask: If True, outputs a category mask. + output_confidence_mask: If True, outputs confidence masks. + + Returns: + A list (batch) containing a single mask tensor (HW) or None per image. + Priority is given to category mask if both outputs requested. + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + if not points_of_interest: + raise ValueError("At least one point_of_interest must be provided.") + + batch_size = image.shape[0] + batch_results_combined = [] + + new_options = (output_category_mask, output_confidence_mask) + if self.detector_instance is None or self.current_options != new_options: + if self.detector_instance and hasattr(self.detector_instance, 'close'): + self.detector_instance.close() + self.detector_instance = self._initialize_processor(output_category_mask, output_confidence_mask) + + for i in range(batch_size): + img_tensor = image[i] # HWC + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + individual_masks_for_image = [] + + for point in points_of_interest: + roi_keypoint_single = NormalizedKeypoint(x=point.x, y=point.y, label=point.label) + roi = interactive_segmenter.RegionOfInterest( + format=interactive_segmenter.RegionOfInterest.Format.KEYPOINT, + keypoint=roi_keypoint_single + ) + + segmentation_result = self.detector_instance.segment(mp_image, roi) + + current_point_mask = None + if output_category_mask and segmentation_result.category_mask: + mask_np = segmentation_result.category_mask.numpy_view() + current_point_mask = torch.from_numpy(mask_np).float() + elif output_confidence_mask and segmentation_result.confidence_masks: + if segmentation_result.confidence_masks: + mask_np = segmentation_result.confidence_masks[0].numpy_view() + current_point_mask = torch.from_numpy(mask_np).float() + + if current_point_mask is not None: + individual_masks_for_image.append(current_point_mask) + else: + logger.warning(f"Segmentation failed for point {point} on image {i}. Skipping point.") + combined_mask_for_image = None + if not individual_masks_for_image: + h, w = img_tensor.shape[0], img_tensor.shape[1] + combined_mask_for_image = torch.zeros((h, w), dtype=torch.float32, device=image.device) + logger.warning(f"No successful segmentations for any points on image {i}. Returning zero mask.") + elif len(individual_masks_for_image) == 1: + combined_mask_for_image = individual_masks_for_image[0] + else: + mask_stack = torch.stack(individual_masks_for_image, dim=0) + combined_mask_for_image = torch.max(mask_stack, dim=0).values + + batch_results_combined.append(combined_mask_for_image) + return batch_results_combined \ No newline at end of file diff --git a/src/mediapipe_vision/model_loader.py b/src/mediapipe_vision/model_loader.py new file mode 100644 index 0000000..de8b42d --- /dev/null +++ b/src/mediapipe_vision/model_loader.py @@ -0,0 +1,415 @@ +"""Model loader implementation for MediaPipe Vision tasks. + +Handles model definition, download, and path retrieval. +""" + +import os +import logging +import urllib.request +import folder_paths # ComfyUI path helper +from typing import Dict, Any, Optional, List +import traceback + +# Configure logging +# logging.basicConfig(level=logging.INFO) # Avoid reconfiguring root logger +logger = logging.getLogger(__name__) + +# --- Model Definitions --- +# Central dictionary mapping task types and variants to model details +# Structure: { task_type: { variant_name: { url: ..., filename: ... } } } +# Task types should match the keys used elsewhere (e.g., detector class validation) +# Variant names are displayed in the loader node UI +# Filenames should be unique within their task type directory +# URLs point to the official MediaPipe model files (.task or .tflite) + +MEDIAPIPE_MODELS = { + "face_detector": { + "short_range": { + "url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/latest/blaze_face_short_range.tflite", + "filename": "blaze_face_short_range.tflite", + "description": "Optimized for detecting faces at close range, ideal for selfie-style images and near-field face detection." + }, + "full_range_sparse": { + "url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_back_camera/float16/latest/blaze_face_back_camera.tflite", + "filename": "blaze_face_full_range_sparse.tflite", + "description": "Designed for detecting faces at various distances, suitable for group photos and wider-angle shots." + } + }, + "face_landmarker": { + "default": { + "url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task", + "filename": "face_landmarker.task", + "description": "Standard face landmark detection model that locates key facial points for tracking and analysis." + }, + "with_blendshapes": { # If a separate model exists + "url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker_v2_with_blendshapes/float16/latest/face_landmarker_v2_with_blendshapes.task", + "filename": "face_landmarker_v2_with_blendshapes.task", + "description": "Advanced face landmark model that includes blendshape coefficients for facial expression analysis." + } + }, + "hand_landmarker": { + "default": { # Often includes world landmarks + "url": "https://storage.googleapis.com/mediapipe-models/hand_landmarker/hand_landmarker/float16/latest/hand_landmarker.task", + "filename": "hand_landmarker.task", + "description": "Detects hand landmarks for tracking finger positions and hand gestures in 2D and 3D space." + } + }, + "pose_landmarker": { + "lite": { + "url": "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_lite/float16/latest/pose_landmarker_lite.task", + "filename": "pose_landmarker_lite.task", + "description": "Lightweight pose landmark model for faster inference with slightly reduced accuracy." + }, + "full": { + "url": "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_full/float16/latest/pose_landmarker_full.task", + "filename": "pose_landmarker_full.task", + "description": "Balance of performance and accuracy for detecting body pose landmarks in typical use cases." + }, + "heavy": { + "url": "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_heavy/float16/latest/pose_landmarker_heavy.task", + "filename": "pose_landmarker_heavy.task", + "description": "Higher accuracy pose detection model for more precise landmark tracking at the cost of performance." + } + }, + "object_detector": { + "efficientdet_lite0": { + "url": "https://storage.googleapis.com/mediapipe-models/object_detector/efficientdet_lite0/float16/latest/efficientdet_lite0.tflite", + "filename": "efficientdet_lite0.tflite", + "description": "Lightweight object detection model that balances speed and accuracy for real-time applications." + }, + "efficientdet_lite2": { + "url": "https://storage.googleapis.com/mediapipe-models/object_detector/efficientdet_lite2/float16/latest/efficientdet_lite2.tflite", + "filename": "efficientdet_lite2.tflite", + "description": "Medium-sized object detection model with improved accuracy over lite0 while maintaining reasonable performance." + }, + "ssd_mobilenet_v2": { + "url": "https://storage.googleapis.com/mediapipe-models/object_detector/ssd_mobilenet_v2/float32/latest/ssd_mobilenet_v2.tflite", + "filename": "ssd_mobilenet_v2.tflite", + "description": "Single Shot Detector with MobileNetV2 backbone for efficient object detection tasks." + } + }, + "image_segmenter": { + "deeplab_v3": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/deeplab_v3/float32/latest/deeplab_v3.tflite", + "filename": "deeplab_v3.tflite", + "description": "General-purpose semantic segmentation model that can segment images into different object categories." + }, + "selfie_segmenter_landscape": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter_landscape/float16/latest/selfie_segmenter_landscape.tflite", + "filename": "selfie_segmenter_landscape.tflite", + "description": "Optimized for landscape-oriented images to accurately separate people from backgrounds." + }, + "selfie_segmenter_general": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter/float16/latest/selfie_segmenter.tflite", + "filename": "selfie_segmenter.tflite", + "description": "General-purpose person segmentation model that works across different orientations and scenarios." + }, + "hair_segmenter": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/hair_segmenter/float32/latest/hair_segmenter.tflite", + "filename": "hair_segmenter.tflite", + "description": "Specialized segmentation model for isolating hair in portrait images with high precision." + }, + "selfie_multiclass": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_multiclass_256x256/float32/latest/selfie_multiclass_256x256.tflite", + "filename": "selfie_multiclass_256x256.tflite", + "description": "Multi-class segmentation model that can separate people into different body parts and clothing items." + } + }, + "gesture_recognizer": { + "default": { + "url": "https://storage.googleapis.com/mediapipe-models/gesture_recognizer/gesture_recognizer/float16/latest/gesture_recognizer.task", + "filename": "gesture_recognizer.task", + "description": "Detects and classifies hand gestures such as thumbs up, victory sign, and pointing gestures." + } + }, + # "holistic_landmarker": { + # "lite": { + # "url": "https://storage.googleapis.com/mediapipe-models/holistic_landmarker/holistic_landmarker_lite/holistic_landmarker_lite.task", + # "filename": "holistic_landmarker_lite.task" + # }, + # "full": { + # "url": "https://storage.googleapis.com/mediapipe-models/holistic_landmarker/holistic_landmarker_full/holistic_landmarker_full.task", + # "filename": "holistic_landmarker_full.task" + # } + # } + # Add other tasks like image_classification etc. here + "image_embedder": { + "mobilenet_v3_small": { + "url": "https://storage.googleapis.com/mediapipe-models/image_embedder/mobilenet_v3_small/float32/1/mobilenet_v3_small.tflite", + "filename": "mobilenet_v3_small.tflite", + "description": "Converts images into feature vectors (embeddings) for similarity comparison and classification tasks." + }, + "efficientnet_lite0": { + "url": "https://storage.googleapis.com/mediapipe-models/image_embedder/efficientnet_lite0/float32/latest/efficientnet_lite0.tflite", + "filename": "efficientnet_lite0.tflite", + "description": "EfficientNet Lite0-based embedder providing robust image embeddings with a balance of accuracy and efficiency." + } + }, + # Placeholder for Interactive Segmenter - Typically uses a general segmentation model + "interactive_segmenter": { + "magic_touch": { + "url": "https://storage.googleapis.com/mediapipe-models/interactive_segmenter/magic_touch/float32/latest/magic_touch.tflite", + "filename": "magic_touch.tflite", + "description": "Interactive segmentation model that segments objects in an image based on a user-provided point of interest." + }, + "default": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter/float16/latest/selfie_segmenter.tflite", + "filename": "selfie_segmenter_interactive.tflite", + "description": "Enables user-guided segmentation by providing points or regions to indicate foreground objects." + } + }, + "face_stylizer": { + "color_sketch": { + "url": "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_sketch.task", + "filename": "face_stylizer_color_sketch.task", + "description": "Transforms faces into colorful sketch-like artistic renderings with clean lines and vibrant colors." + }, + "color_ink": { + "url": "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_color_ink.task", + "filename": "face_stylizer_color_ink.task", + "description": "Applies a color ink effect to faces with flowing brush-like strokes and dynamic color blending." + }, + "oil_painting": { + "url": "https://storage.googleapis.com/mediapipe-models/face_stylizer/blaze_face_stylizer/float32/latest/face_stylizer_oil_painting.task", + "filename": "face_stylizer_oil_painting.task", + "description": "Renders faces in classic oil painting style with textured brush strokes and rich color tones." + } + }, + "image_classifier": { + "efficientnet_lite0": { + "url": "https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/latest/efficientnet_lite0.tflite", + "filename": "efficientnet_lite0.tflite", + "description": "EfficientNet-Lite0 model for general-purpose image classification tasks with optimized performance." + }, + "efficientnet_lite2": { + "url": "https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite2/float32/latest/efficientnet_lite2.tflite", + "filename": "efficientnet_lite2.tflite", + "description": "EfficientNet-Lite2 model offering higher accuracy for image classification tasks at the cost of increased computation." + } + }, + "face_mesh": { + "default": { + "url": "https://storage.googleapis.com/mediapipe-models/face_mesh/face_mesh/float16/latest/face_mesh.tflite", + "filename": "face_mesh.tflite", + "description": "High-fidelity 3D face landmark model estimating 468 landmarks for detailed facial geometry analysis." + }, + "attention": { + "url": "https://storage.googleapis.com/mediapipe-models/face_mesh/face_mesh_attention/float16/latest/face_mesh_attention.tflite", + "filename": "face_mesh_attention.tflite", + "description": "Enhanced face mesh model with attention mechanism for improved accuracy around eyes and lips." + } + } +} + +# --- Utility Functions --- + +def get_mediapipe_model_dir(task_type: str) -> str: + """Gets the dedicated directory for a specific MediaPipe task type within ComfyUI models.""" + base_path = None + try: + # Attempt to get the specific 'mediapipe' path defined in ComfyUI config + mediapipe_paths = folder_paths.get_folder_paths("mediapipe") + if mediapipe_paths and os.path.isdir(mediapipe_paths[0]): + base_path = mediapipe_paths[0] + logger.debug(f"Using specific MediaPipe model path: {base_path}") + else: + logger.debug("No valid specific 'mediapipe' path found or defined.") + except (KeyError, IndexError, TypeError) as e: + logger.debug(f"Could not retrieve specific 'mediapipe' path ({e}). Falling back to default.") + + # If specific path wasn't found or valid, use the main models directory + if base_path is None: + try: + # Ensure models_dir exists + if hasattr(folder_paths, 'models_dir') and os.path.isdir(folder_paths.models_dir): + base_path = os.path.join(folder_paths.models_dir, "mediapipe") + logger.debug(f"Using fallback MediaPipe model path: {base_path}") + else: + raise RuntimeError("ComfyUI models directory ('models_dir') not found or invalid.") + except Exception as e: + logger.error(f"Error determining fallback MediaPipe directory: {e}") + raise RuntimeError("Could not determine a valid directory for MediaPipe models.") from e + + # Construct the task-specific directory path + task_dir = os.path.join(base_path, task_type) + + # Ensure the final task directory exists + try: + os.makedirs(task_dir, exist_ok=True) + except OSError as e: + logger.error(f"Failed to create MediaPipe task directory {task_dir}: {e}") + # Propagate error as directory creation is critical + raise RuntimeError(f"Failed to create required directory: {task_dir}") from e + + return task_dir + +def _download_url_to_file(url: str, save_path: str): + """Downloads a file with progress indication.""" + logger.info(f"Downloading model from {url} to {save_path}...") + try: + with urllib.request.urlopen(url) as response, open(save_path, 'wb') as out_file: + total_size_header = response.getheader('Content-Length') + total_size = int(total_size_header) if total_size_header else None + bytes_downloaded = 0 + block_size = 8192 + last_print_bytes = 0 + print_interval = 1 * 1024 * 1024 # Print every 1MB + + if total_size: + logger.info(f" File size: {total_size / (1024*1024):.2f} MB") + else: + logger.warning(" File size unknown.") + + while True: + buffer = response.read(block_size) + if not buffer: + break + out_file.write(buffer) + bytes_downloaded += len(buffer) + + # Progress reporting (less frequent) + if bytes_downloaded - last_print_bytes > print_interval or (total_size and bytes_downloaded == total_size): + progress_str = f" Downloaded: {bytes_downloaded / (1024*1024):.2f} MB" + if total_size: + progress = (bytes_downloaded / total_size) * 100 + progress_str += f" / {total_size / (1024*1024):.2f} MB ({progress:.1f}%)" + # Use print with carriage return for inline update + print(progress_str, end=' \r') + last_print_bytes = bytes_downloaded + + print() # Newline after download finishes + logger.info(f"Download complete: {save_path}") + return True + except Exception as e: + logger.error(f"Error downloading model: {e}") + logger.error(traceback.format_exc()) + # Clean up potentially corrupted file + if os.path.exists(save_path): + try: + os.remove(save_path) + logger.info(f"Removed incomplete download: {save_path}") + except Exception as rm_err: + logger.error(f"Error removing incomplete download {save_path}: {rm_err}") + return False + +def get_model_path(task_type: str, model_variant: str) -> Optional[str]: + """Gets the full path to the model file, downloading if necessary.""" + if task_type not in MEDIAPIPE_MODELS: + logger.error(f"Unknown MediaPipe task type: '{task_type}'") + return None + if model_variant not in MEDIAPIPE_MODELS[task_type]: + logger.error(f"Unknown model variant '{model_variant}' for task '{task_type}'") + # Log available variants for the task + available = list(MEDIAPIPE_MODELS[task_type].keys()) + logger.info(f"Available variants for {task_type}: {available}") + return None + + model_details = MEDIAPIPE_MODELS[task_type][model_variant] + model_filename = model_details["filename"] + model_url = model_details["url"] + + # Get the specific directory for this task + try: + model_dir = get_mediapipe_model_dir(task_type) + except Exception as e: + logger.error(f"Cannot determine model directory for {task_type}: {e}") + return None + + model_path = os.path.join(model_dir, model_filename) + + # Check and download + if not os.path.exists(model_path): + logger.info(f"Model not found locally at {model_path}. Attempting download.") + if not _download_url_to_file(model_url, model_path): + return None # Download failed + else: + logger.debug(f"Found model locally: {model_path}") + + return model_path + +# --- Public Functions for Node Wrapper --- + +def get_available_tasks() -> List[str]: + """Get a list of available MediaPipe Vision task types from the definition.""" + return list(MEDIAPIPE_MODELS.keys()) + +def get_available_models(task_type: str) -> List[str]: + """Get a list of available model variants for a specific task.""" + if task_type in MEDIAPIPE_MODELS: + return list(MEDIAPIPE_MODELS[task_type].keys()) + else: + logger.warning(f"Task type '{task_type}' not found in model definitions.") + return [] + +def get_model_description(task_type: str, model_variant: str) -> str: + """Get the description for a specific model variant. + + Args: + task_type: The MediaPipe task type + model_variant: The specific model variant + + Returns: + The description string if found, or a default message if not available + """ + if task_type in MEDIAPIPE_MODELS and model_variant in MEDIAPIPE_MODELS[task_type]: + return MEDIAPIPE_MODELS[task_type][model_variant].get( + "description", "No description available" + ) + return "Model description not available" + +# --- Model Loader Class (Simplified) --- + +class MediaPipeModelLoader: + """Helper class to manage loading state and info. + Used temporarily by the loader node to get model info. + """ + + def __init__(self): + self.model_path = None + self.task_type = None + self.model_variant = None + self.model_loaded = False + self.model_info = {} + + def load_model(self, task_type: str, model_variant: str) -> bool: + """Sets model info and triggers path retrieval (incl. download).""" + logger.debug(f"MediaPipeModelLoader: Loading {task_type}/{model_variant}") + self.task_type = task_type + self.model_variant = model_variant + self.model_path = get_model_path(task_type, model_variant) + + if self.model_path and os.path.exists(self.model_path): + self.model_loaded = True + self.model_info = { + 'task_type': self.task_type, + 'model_variant': self.model_variant, + 'model_path': self.model_path, + 'description': get_model_description(task_type, model_variant) + } + logger.debug(f"Model info set: {self.model_info}") + return True + else: + logger.error(f"Failed to get or validate model path for {task_type}/{model_variant}") + self.model_loaded = False + self.model_info = {} + return False + + def get_model_info(self) -> Dict[str, Any]: + """Get information about the loaded model.""" + # Ensure info is consistent with loaded state + if self.model_loaded: + # Add the description to the model info + if self.task_type and self.model_variant: + description = get_model_description(self.task_type, self.model_variant) + self.model_info['description'] = description + return self.model_info + else: + # Return minimal info or empty dict if not loaded + return { + 'task_type': self.task_type, + 'model_variant': self.model_variant, + 'model_path': None # Indicate path is not valid/loaded + } + +# Removed original get_model_path, download_model etc. from global scope +# They are now integrated into the new get_model_path function. \ No newline at end of file diff --git a/src/mediapipe_vision/object_detection/__init__.py b/src/mediapipe_vision/object_detection/__init__.py new file mode 100644 index 0000000..f1dde9e --- /dev/null +++ b/src/mediapipe_vision/object_detection/__init__.py @@ -0,0 +1 @@ +"""Object Detection implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/object_detection/detector.py b/src/mediapipe_vision/object_detection/detector.py new file mode 100644 index 0000000..d5514e7 --- /dev/null +++ b/src/mediapipe_vision/object_detection/detector.py @@ -0,0 +1,120 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List +# Import new types +from ..types import ObjectDetectionResult, ObjectDetectionCategory, BoundingBox +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +class ObjectDetector: + """Detects objects using MediaPipe ObjectDetector.""" + + def __init__(self, model_path: str): + """Initialize the detector with the model path. + + Args: + model_path: Path to the MediaPipe ObjectDetector .tflite file. + """ + if not model_path: + raise ValueError("A valid model_path must be provided.") + + self.model_path = model_path + self._detector_instance = None + self._current_options = None + self._timestamp_provider = None # Added + + def _initialize_detector(self, score_threshold: float, max_results: int, + running_mode: str, delegate: str): # Added running_mode + """Initializes the ObjectDetector.""" + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO # Added + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + options = vision.ObjectDetectorOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + score_threshold=score_threshold, + max_results=max_results + ) + self._current_options = options + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.ObjectDetector.create_from_options(options) + + def detect(self, image: torch.Tensor, score_threshold: float = 0.5, max_results: int = 5, + running_mode: str = "video", delegate: str = 'cpu') -> List[List[ObjectDetectionResult]]: # Added running_mode + """Detects objects in the input image tensor. + + Returns: + A list (batch) of lists (detections per image) of ObjectDetectionResult objects. + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Add running_mode to tuple check + new_options_tuple = (score_threshold, max_results, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.score_threshold, + self._current_options.max_results, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + self._detector_instance = self._initialize_detector(score_threshold, max_results, running_mode, delegate) + + batch_size = image.shape[0] + batch_results = [] + # Determine the correct detection function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + detect_func = self._detector_instance.detect_for_video if is_video_mode else self._detector_instance.detect + + for i in range(batch_size): + img_tensor = image[i] # HWC + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + detection_result = detect_func(mp_image, timestamp_ms) + else: + detection_result = detect_func(mp_image) + + current_image_detections = [] + if detection_result and detection_result.detections: # Added check for detection_result + for detection in detection_result.detections: + bbox_mp = detection.bounding_box + categories_mp = detection.categories + + bbox = BoundingBox( + origin_x=bbox_mp.origin_x, + origin_y=bbox_mp.origin_y, + width=bbox_mp.width, + height=bbox_mp.height + ) + + categories = [ + ObjectDetectionCategory( + index=cat.index, + score=cat.score, + display_name=cat.display_name, + category_name=cat.category_name + ) + for cat in categories_mp + ] + + current_image_detections.append(ObjectDetectionResult( + bounding_box=bbox, + categories=categories + )) + + batch_results.append(current_image_detections) + + # self._detector_instance.close() # Close handled on re-init + return batch_results \ No newline at end of file diff --git a/src/mediapipe_vision/pose_landmark/__init__.py b/src/mediapipe_vision/pose_landmark/__init__.py new file mode 100644 index 0000000..2816aed --- /dev/null +++ b/src/mediapipe_vision/pose_landmark/__init__.py @@ -0,0 +1 @@ +"""Pose Landmark Detection implementation using MediaPipe.""" \ No newline at end of file diff --git a/src/mediapipe_vision/pose_landmark/detector.py b/src/mediapipe_vision/pose_landmark/detector.py new file mode 100644 index 0000000..ae49bc6 --- /dev/null +++ b/src/mediapipe_vision/pose_landmark/detector.py @@ -0,0 +1,148 @@ +import mediapipe as mp +import numpy as np +import torch +from mediapipe.tasks import python +from mediapipe.tasks.python import vision +from mediapipe.tasks.python.core.base_options import BaseOptions +from typing import List, Tuple, Optional +# Import new types +from ..types import LandmarkPoint, PoseLandmarksResult +from ..utils.timestamp_provider import TimestampProvider # Import TimestampProvider + +class PoseLandmarkDetector: + """Detects pose landmarks in an image using MediaPipe PoseLandmarker.""" + + def __init__(self, model_path: str): + """Initialize the detector with the model path. + + Args: + model_path: Path to the MediaPipe PoseLandmarker .task file. + """ + if not model_path: + raise ValueError("A valid model_path must be provided.") + + self.model_path = model_path + self._detector_instance = None + self._current_options = None + self._timestamp_provider = None # Added + + def _initialize_detector(self, num_poses: int, min_detection_confidence: float, + min_presence_confidence: float, min_tracking_confidence: float, + output_segmentation_masks: bool, + running_mode: str, delegate: str) -> vision.PoseLandmarker: # Added running_mode + """Initializes the PoseLandmarker detector.""" + mode_enum = vision.RunningMode.IMAGE if running_mode == "image" else vision.RunningMode.VIDEO # Added + delegate_enum = BaseOptions.Delegate.CPU if delegate.lower() == 'cpu' else BaseOptions.Delegate.GPU + base_options = python.BaseOptions(model_asset_path=self.model_path, delegate=delegate_enum) + options = vision.PoseLandmarkerOptions( + base_options=base_options, + running_mode=mode_enum, # Use enum mode + num_poses=num_poses, + min_pose_detection_confidence=min_detection_confidence, + min_pose_presence_confidence=min_presence_confidence, + min_tracking_confidence=min_tracking_confidence, + output_segmentation_masks=output_segmentation_masks + ) + self._current_options = options + # Only create timestamp provider for VIDEO mode + self._timestamp_provider = TimestampProvider() if mode_enum == vision.RunningMode.VIDEO else None + return vision.PoseLandmarker.create_from_options(options) + + def detect(self, image: torch.Tensor, num_poses: int = 1, min_detection_confidence: float = 0.5, + min_presence_confidence: float = 0.5, min_tracking_confidence: float = 0.5, + output_segmentation_masks: bool = False, + running_mode: str = "video", delegate: str = 'cpu') -> Tuple[List[List[PoseLandmarksResult]], Optional[List[List[torch.Tensor]]]]: # Added running_mode + """Detects pose landmarks in the input image tensor. + + Returns: + A tuple containing: + - pose_landmarks_batch: List (batch) of lists (poses) of PoseLandmarksResult objects. + - segmentation_masks_batch: List (batch) of lists (poses) of segmentation masks (HW FloatTensor) (if requested). + """ + if image.dim() != 4: + raise ValueError("Input tensor must be in BHWC format.") + + # Add running_mode to tuple check + new_options_tuple = (num_poses, min_detection_confidence, min_presence_confidence, + min_tracking_confidence, output_segmentation_masks, running_mode, delegate.lower()) + current_options_tuple = None + if self._current_options: + current_options_tuple = ( + self._current_options.num_poses, + self._current_options.min_pose_detection_confidence, + self._current_options.min_pose_presence_confidence, + self._current_options.min_tracking_confidence, + self._current_options.output_segmentation_masks, + "image" if self._current_options.running_mode == vision.RunningMode.IMAGE else "video", # Map enum back to string + 'cpu' if self._current_options.base_options.delegate == BaseOptions.Delegate.CPU else 'gpu' + ) + + if self._detector_instance is None or new_options_tuple != current_options_tuple: + if self._detector_instance and hasattr(self._detector_instance, 'close'): + self._detector_instance.close() + # Pass new params to initializer + self._detector_instance = self._initialize_detector(num_poses, min_detection_confidence, + min_presence_confidence, min_tracking_confidence, + output_segmentation_masks, running_mode, delegate) # Pass running_mode + + batch_size = image.shape[0] + batch_results_landmarks = [] + batch_results_masks = [] if output_segmentation_masks else None + + # Determine the correct detection function based on mode + is_video_mode = self._current_options.running_mode == vision.RunningMode.VIDEO + detect_func = self._detector_instance.detect_for_video if is_video_mode else self._detector_instance.detect + + for i in range(batch_size): + img_tensor = image[i] # HWC + np_image = (img_tensor.cpu().numpy() * 255).astype(np.uint8) + mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=np_image) + + if is_video_mode: + timestamp_ms = self._timestamp_provider.next() + detection_result = detect_func(mp_image, timestamp_ms) + else: + detection_result = detect_func(mp_image) + + current_image_landmarks = [] + current_image_masks = [] if output_segmentation_masks else None + + if detection_result and detection_result.pose_landmarks: # Added check for detection_result + for pose_idx, pose_landmarks_mp in enumerate(detection_result.pose_landmarks): + landmarks = [ + LandmarkPoint(index=lm_idx, x=lm.x, y=lm.y, z=lm.z, + visibility=getattr(lm, 'visibility', None), # Use getattr for safety + presence=getattr(lm, 'presence', None)) + for lm_idx, lm in enumerate(pose_landmarks_mp) + ] + + world_landmarks = None + if detection_result.pose_world_landmarks and pose_idx < len(detection_result.pose_world_landmarks): + world_landmarks = [ + LandmarkPoint(index=lm_idx, x=lm.x, y=lm.y, z=lm.z, + visibility=getattr(lm, 'visibility', None), + presence=getattr(lm, 'presence', None)) + for lm_idx, lm in enumerate(detection_result.pose_world_landmarks[pose_idx]) + ] + + current_image_landmarks.append(PoseLandmarksResult( + landmarks=landmarks, + world_landmarks=world_landmarks + )) + + # Handle segmentation masks separately as they are not indexed per pose in the result + if output_segmentation_masks and detection_result.segmentation_masks: + # MediaPipe returns one mask per image if output_segmentation_masks is True + # We store it as a list associated with the image, not per pose + # Assuming only one mask is relevant per image, might need adjustment if multiple masks are returned + mask_mp = detection_result.segmentation_masks[0] # Get the first mask + mask_np = mask_mp.numpy_view() + mask_tensor = torch.from_numpy(mask_np).float() # HW + current_image_masks = [mask_tensor] # Store as a list for consistency with return type + + batch_results_landmarks.append(current_image_landmarks) + if output_segmentation_masks: + batch_results_masks.append(current_image_masks) + + # self._detector_instance.close() # Close handled on re-init + return batch_results_landmarks, batch_results_masks \ No newline at end of file diff --git a/src/mediapipe_vision/types.py b/src/mediapipe_vision/types.py new file mode 100644 index 0000000..fa304ba --- /dev/null +++ b/src/mediapipe_vision/types.py @@ -0,0 +1,150 @@ +from typing import List, Optional, NamedTuple, Tuple +import numpy as np # Added numpy for matrix type + +# Define a structure for a single landmark point +class LandmarkPoint(NamedTuple): + index: int + x: float + y: float + z: float + visibility: Optional[float] = None # Available in Pose landmarks + presence: Optional[float] = None # Available in Pose landmarks + +# Define container structures for the output of each landmark task +# These will be returned by the respective detector nodes + +class FaceLandmarksResult(NamedTuple): + landmarks: List[LandmarkPoint] + # Add other face-specific results if needed later (e.g., bounding box) + +class HandLandmarksResult(NamedTuple): + landmarks: List[LandmarkPoint] + world_landmarks: Optional[List[LandmarkPoint]] # Keep world landmarks optional for now + handedness: Optional[str] # 'Left', 'Right' + +class PoseLandmarksResult(NamedTuple): + landmarks: List[LandmarkPoint] + world_landmarks: Optional[List[LandmarkPoint]] + # Segmentation mask info could potentially go here if tightly coupled + +# We might add more types later for detections, segmentations etc. +# For now, focus is on landmarks. + +# Define the list types that will be used for batching +# These will be the types used in node RETURN_TYPES/INPUT_TYPES strings +FACE_LANDMARKS_LIST = List[List[FaceLandmarksResult]] # Batch[FacesPerImage[Result]] +HAND_LANDMARKS_LIST = List[List[HandLandmarksResult]] # Batch[HandsPerImage[Result]] +POSE_LANDMARKS_LIST = List[List[PoseLandmarksResult]] # Batch[PosesPerImage[Result]] + +# --- Blendshape Result --- +class Blendshape(NamedTuple): + index: Optional[int] + score: float + category_name: str # e.g., mouthSmileLeft, eyeBlinkRight + display_name: Optional[str] + +# --- Common Types --- +class BoundingBox(NamedTuple): + origin_x: int + origin_y: int + width: int + height: int + +# --- Face Detection Result --- +class FaceKeypoint(NamedTuple): + label: Optional[str] # e.g., 'nose_tip', 'left_eye' + x: float + y: float + +class FaceDetectionResult(NamedTuple): + bounding_box: BoundingBox + keypoints: Optional[List[FaceKeypoint]] + score: Optional[float] # Confidence score for the detection + +# --- Object Detection Result --- +class ObjectDetectionCategory(NamedTuple): + index: Optional[int] + score: float + display_name: Optional[str] + category_name: Optional[str] + +class ObjectDetectionResult(NamedTuple): + bounding_box: BoundingBox + categories: List[ObjectDetectionCategory] + +# --- Batch List Types for Nodes --- +# Define the list types that will be used for batching +# These will be the types used in node RETURN_TYPES/INPUT_TYPES strings +FACE_LANDMARKS = List[List[FaceLandmarksResult]] # Batch[FacesPerImage[Result]] +HAND_LANDMARKS = List[List[HandLandmarksResult]] # Batch[HandsPerImage[Result]] +POSE_LANDMARKS = List[List[PoseLandmarksResult]] # Batch[PosesPerImage[Result]] +OBJECT_DETECTIONS = List[List[ObjectDetectionResult]] # Batch[DetectionsPerImage[Result]] +FACE_DETECTIONS = List[List[FaceDetectionResult]] # Batch[DetectionsPerImage[Result]] + +# --- Gesture Recognition Result --- +class GestureCategory(NamedTuple): + index: Optional[int] + score: float + display_name: Optional[str] + category_name: Optional[str] + +class GestureRecognitionResult(NamedTuple): + gestures: List[GestureCategory] # Top gesture(s) recognized for a hand + handedness: Optional[str] # Which hand this gesture belongs to + +# Define Batch List Type +GESTURE_RECOGNITIONS = List[List[GestureRecognitionResult]] # Batch[Hands[Gestures]] + +# --- Image Embedding Result --- +class EmbeddingEntry(NamedTuple): + index: int + score: float + display_name: Optional[str] + category_name: Optional[str] + +class ImageEmbedderResult(NamedTuple): + float_embedding: Optional[List[float]] + quantized_embedding: Optional[bytes] + head_index: int + head_name: Optional[str] + +# Define Batch List Type +IMAGE_EMBEDDINGS = List[List[ImageEmbedderResult]] # Batch[EmbeddingsPerHead[Result]] + +# --- Interactive Segmentation Input/Result --- +class PointOfInterest(NamedTuple): + x: float + y: float + label: Optional[str] = None # Optional label for the point + +# Result is typically a mask, potentially multiple if categories are involved +# Using existing MASK type might suffice, or define a specific one if needed. + +# --- Holistic Landmark Result --- +class HolisticLandmarksResult(NamedTuple): + face_landmarks: Optional[List[LandmarkPoint]] # Only one face per person + pose_landmarks: Optional[List[LandmarkPoint]] + pose_world_landmarks: Optional[List[LandmarkPoint]] + left_hand_landmarks: Optional[List[LandmarkPoint]] + right_hand_landmarks: Optional[List[LandmarkPoint]] + # Pose segmentation mask could also be included here + +# Define Batch List Type +HOLISTIC_LANDMARKS = List[HolisticLandmarksResult] # Batch[ResultPerPerson] + +# ======================================= +# --- Batch List Types for Node I/O --- +# ======================================= +FACE_LANDMARKS = List[List[FaceLandmarksResult]] # Batch[FacesPerImage[Result]] +HAND_LANDMARKS = List[List[HandLandmarksResult]] # Batch[HandsPerImage[Result]] +POSE_LANDMARKS = List[List[PoseLandmarksResult]] # Batch[PosesPerImage[Result]] +OBJECT_DETECTIONS = List[List[ObjectDetectionResult]] # Batch[DetectionsPerImage[Result]] +FACE_DETECTIONS = List[List[FaceDetectionResult]] # Batch[DetectionsPerImage[Result]] +GESTURE_RECOGNITIONS = List[List[GestureRecognitionResult]] # Batch[Hands[Gestures]] +IMAGE_EMBEDDINGS = List[List[ImageEmbedderResult]] # Batch[EmbeddingsPerHead[Result]] +HOLISTIC_LANDMARKS = List[HolisticLandmarksResult] # Batch[ResultPerPerson] + +# New Types - Defined AFTER Blendshape class +# Updated names to match FaceLandmarker output convention +BLENDSHAPES_LIST = List[List[List[Blendshape]]] # Batch[FacesPerImage[BlendshapeList[Blendshape]]] +TRANSFORM_MATRIX_LIST = List[List[np.ndarray]] # Batch[FacesPerImage[Matrix]] \ No newline at end of file diff --git a/src/mediapipe_vision/utils/__init__.py b/src/mediapipe_vision/utils/__init__.py new file mode 100644 index 0000000..5c7b5fd --- /dev/null +++ b/src/mediapipe_vision/utils/__init__.py @@ -0,0 +1,12 @@ +"""Utility functions for MediaPipe Vision.""" + +from .download_utils import download_model +from .image_utils import convert_to_cv2, convert_to_tensor +from .delta_utils import calculate_euclidean_delta, scale_value + +__all__ = [ + "convert_to_cv2", + "convert_to_tensor", + "calculate_euclidean_delta", + "scale_value" +] \ No newline at end of file diff --git a/src/mediapipe_vision/utils/comfy_utils.py b/src/mediapipe_vision/utils/comfy_utils.py new file mode 100644 index 0000000..b1c1f39 --- /dev/null +++ b/src/mediapipe_vision/utils/comfy_utils.py @@ -0,0 +1,11 @@ +"""Utilities specific to ComfyUI integration.""" + +class AlwaysEqualProxy(str): + """Helper class to allow connecting multiple specific input types to a single input node. + Borrowed from https://github.com/theUpsider/ComfyUI-Logic + """ + def __eq__(self, _): + return True + + def __ne__(self, _): + return False \ No newline at end of file diff --git a/src/mediapipe_vision/utils/delta_utils.py b/src/mediapipe_vision/utils/delta_utils.py new file mode 100644 index 0000000..efbbf47 --- /dev/null +++ b/src/mediapipe_vision/utils/delta_utils.py @@ -0,0 +1,35 @@ +import math +from typing import Optional + +from ..types import LandmarkPoint # Assuming LandmarkPoint is in src/types.py + +def calculate_euclidean_delta(p1: Optional[LandmarkPoint], p2: Optional[LandmarkPoint]) -> Optional[float]: + """Calculates the Euclidean distance between two LandmarkPoint objects.""" + if p1 is None or p2 is None: + return None # Cannot calculate delta if one point is missing + + delta_x = p1.x - p2.x + delta_y = p1.y - p2.y + delta_z = p1.z - p2.z + + distance = math.sqrt(delta_x**2 + delta_y**2 + delta_z**2) + return distance + +def scale_value(value: Optional[float], + delta_min: float, delta_max: float, + output_min: float, output_max: float, + clamp: bool = True) -> Optional[float]: + """Linearly scales a value from one range to another.""" + if value is None: + return None + if delta_max == delta_min: # Avoid division by zero + return output_min if value <= delta_min else output_max + + # Scale + scaled = output_min + (value - delta_min) * (output_max - output_min) / (delta_max - delta_min) + + # Clamp + if clamp: + scaled = max(output_min, min(output_max, scaled)) + + return scaled \ No newline at end of file diff --git a/src/mediapipe_vision/utils/download_utils.py b/src/mediapipe_vision/utils/download_utils.py new file mode 100644 index 0000000..4a87889 --- /dev/null +++ b/src/mediapipe_vision/utils/download_utils.py @@ -0,0 +1,156 @@ +"""Utilities for downloading MediaPipe models.""" + +import os +import requests +import logging +from tqdm import tqdm +from typing import Dict, Optional, Any, Tuple + +from .model_utils import MEDIAPIPE_MODELS, get_model_path + +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +def download_model(task_type: str, model_variant: str) -> Optional[str]: + """Download a MediaPipe model for a specific task and variant. + + Args: + task_type: The task category (e.g., 'face_mesh', 'pose_detection') + model_variant: The specific model variant (e.g., 'standard', 'lite') + + Returns: + Path to the downloaded model file, or None if download failed + """ + # Check if the task and variant exist + if task_type not in MEDIAPIPE_MODELS: + logger.error(f"Task '{task_type}' not found in available models.") + return None + + if model_variant not in MEDIAPIPE_MODELS[task_type]: + logger.error(f"Model variant '{model_variant}' not found for task '{task_type}'.") + return None + + # Get model details + model_info = MEDIAPIPE_MODELS[task_type][model_variant] + url = model_info["url"] + filename = model_info["filename"] + + # Get the full path for the model + output_path = get_model_path(task_type, filename) + + # If model already exists, return the path + if os.path.exists(output_path): + logger.info(f"Using existing model: {output_path}") + return output_path + + # Download the model + logger.info(f"Downloading {task_type}/{model_variant} model from {url}...") + try: + # Ensure parent directory exists + os.makedirs(os.path.dirname(output_path), exist_ok=True) + + # Stream the download with progress bar + response = requests.get(url, stream=True) + response.raise_for_status() + + # Get content length for progress bar if available + total_size = int(response.headers.get('content-length', 0)) + block_size = 8192 # 8 KB + + with open(output_path, 'wb') as f: + with tqdm(total=total_size, unit='B', unit_scale=True, desc=f"{task_type}/{model_variant}") as pbar: + for chunk in response.iter_content(chunk_size=block_size): + if chunk: + f.write(chunk) + pbar.update(len(chunk)) + + logger.info(f"Successfully downloaded {task_type}/{model_variant} to {output_path}") + return output_path + + except Exception as e: + logger.error(f"Error downloading {task_type}/{model_variant}: {str(e)}") + + # Clean up partial download if it exists + if os.path.exists(output_path): + try: + os.remove(output_path) + except: + pass + + return None + + +def get_model_options(task_type: Optional[str] = None) -> Dict[str, Any]: + """Get available model options for a specific task or all tasks. + + Args: + task_type: The task category to get options for, or None for all tasks + + Returns: + Dictionary of available models and variants + """ + if task_type is None: + # Return all tasks and their variants + return {task: list(variants.keys()) for task, variants in MEDIAPIPE_MODELS.items()} + + # Return variants for specific task + if task_type in MEDIAPIPE_MODELS: + return {task_type: list(MEDIAPIPE_MODELS[task_type].keys())} + + # Task not found + return {} + + +def get_all_task_types() -> list: + """Get a list of all available task types. + + Returns: + List of task type strings + """ + return list(MEDIAPIPE_MODELS.keys()) + + +def get_model_variants(task_type: str) -> list: + """Get a list of all available model variants for a specific task. + + Args: + task_type: The task category + + Returns: + List of model variant strings, or empty list if task not found + """ + if task_type in MEDIAPIPE_MODELS: + return list(MEDIAPIPE_MODELS[task_type].keys()) + return [] + + +def get_model_info(task_type: str, model_variant: str) -> Tuple[Optional[str], Optional[Dict[str, Any]]]: + """Get information about a specific model. + + Args: + task_type: The task category + model_variant: The specific model variant + + Returns: + Tuple containing: + - Path to the model file (downloaded if needed) + - Dictionary with model metadata (or None if task/variant not found) + """ + # Check if the task and variant exist + if task_type not in MEDIAPIPE_MODELS or model_variant not in MEDIAPIPE_MODELS[task_type]: + return None, None + + # Get model details + model_info = MEDIAPIPE_MODELS[task_type][model_variant].copy() + + # Download the model if needed and get the path + model_path = download_model(task_type, model_variant) + if not model_path: + return None, None + + # Add the model path to the info + model_info["model_path"] = model_path + + return model_path, model_info \ No newline at end of file diff --git a/src/mediapipe_vision/utils/image_utils.py b/src/mediapipe_vision/utils/image_utils.py new file mode 100644 index 0000000..9def0b3 --- /dev/null +++ b/src/mediapipe_vision/utils/image_utils.py @@ -0,0 +1,44 @@ +import torch +import numpy as np +import cv2 + +def convert_to_cv2(tensor: torch.Tensor) -> list: + """Converts a ComfyUI IMAGE tensor (BHWC, float32, 0-1) to a list of cv2 images (BGR, uint8).""" + if tensor.ndim != 4 or tensor.shape[3] != 3: + raise ValueError(f"Input tensor must be BHWC with 3 channels, got shape: {tensor.shape}") + + # Convert entire batch to numpy, scale to 0-255, and convert to uint8 + images_np = tensor.cpu().numpy() + images_np = (images_np * 255).clip(0, 255).astype(np.uint8) + + # Convert RGB to BGR for cv2 + cv2_images = [cv2.cvtColor(img, cv2.COLOR_RGB2BGR) for img in images_np] + return cv2_images + +def convert_to_tensor(cv2_images) -> torch.Tensor: + """Converts cv2 image(s) (BGR, uint8) to a ComfyUI IMAGE tensor (BHWC, float32, 0-1). + + Args: + cv2_images: A single cv2 image or a list of cv2 images + """ + # Handle both single image and list of images + if not isinstance(cv2_images, list): + cv2_images = [cv2_images] + + # Process each image + np_images = [] + for cv2_image in cv2_images: + # Convert BGR to RGB + rgb_image = cv2.cvtColor(cv2_image, cv2.COLOR_BGR2RGB) + + # Scale to 0-1 + image_np = rgb_image.astype(np.float32) / 255.0 + np_images.append(image_np) + + # Stack all images into a batch + batch_np = np.stack(np_images, axis=0) + + # Convert to tensor (already has batch dimension) + tensor = torch.from_numpy(batch_np) + + return tensor \ No newline at end of file diff --git a/src/mediapipe_vision/utils/mask_utils.py b/src/mediapipe_vision/utils/mask_utils.py new file mode 100644 index 0000000..3a80c74 --- /dev/null +++ b/src/mediapipe_vision/utils/mask_utils.py @@ -0,0 +1,26 @@ +# --- Helper Function --- +import torch +import numpy as np +import cv2 +from typing import List, Tuple +import logging + +logger = logging.getLogger(__name__) + +def create_mask_from_points(height: int, width: int, points: List[Tuple[int, int]], device='cpu') -> torch.Tensor: + """Creates a binary mask tensor from a list of points using convex hull.""" + mask = np.zeros((height, width), dtype=np.uint8) + if len(points) < 3: + logger.warning(f"Cannot create mask from {len(points)} points (need >= 3 for convex hull). Returning empty mask.") + return torch.from_numpy(mask).float().unsqueeze(0).to(device) + + try: + np_points = np.array(points, dtype=np.int32) + hull = cv2.convexHull(np_points) + cv2.fillPoly(mask, [hull], 1) + except Exception as e: + logger.error(f"Error creating mask polygon: {e}") + return torch.from_numpy(mask).float().unsqueeze(0).to(device) + + mask_tensor = torch.from_numpy(mask).float().unsqueeze(0).to(device) + return mask_tensor \ No newline at end of file diff --git a/src/mediapipe_vision/utils/misc_utils.py b/src/mediapipe_vision/utils/misc_utils.py new file mode 100644 index 0000000..5de35cc --- /dev/null +++ b/src/mediapipe_vision/utils/misc_utils.py @@ -0,0 +1,29 @@ +# src/utils/misc_utils.py +import mediapipe as mp +import logging +from typing import List + +logger = logging.getLogger(__name__) + +def get_blendshape_categories() -> List[str]: + """Returns the list of standard blendshape category names from MediaPipe.""" + # Define blendshape categories directly + # This is based on the MediaPipe standard blendshapes + standard_blendshapes = [ + "browDownLeft", "browDownRight", "browInnerUp", "browOuterUpLeft", + "browOuterUpRight", "cheekPuff", "cheekSquintLeft", "cheekSquintRight", + "eyeBlinkLeft", "eyeBlinkRight", "eyeLookDownLeft", "eyeLookDownRight", + "eyeLookInLeft", "eyeLookInRight", "eyeLookOutLeft", "eyeLookOutRight", + "eyeLookUpLeft", "eyeLookUpRight", "eyeSquintLeft", "eyeSquintRight", + "eyeWideLeft", "eyeWideRight", "jawForward", "jawLeft", "jawOpen", + "jawRight", "mouthClose", "mouthDimpleLeft", "mouthDimpleRight", + "mouthFrownLeft", "mouthFrownRight", "mouthFunnel", "mouthLeft", + "mouthLowerDownLeft", "mouthLowerDownRight", "mouthPressLeft", + "mouthPressRight", "mouthPucker", "mouthRight", "mouthRollLower", + "mouthRollUpper", "mouthShrugLower", "mouthShrugUpper", "mouthSmileLeft", + "mouthSmileRight", "mouthStretchLeft", "mouthStretchRight", "mouthUpperUpLeft", + "mouthUpperUpRight", "noseSneerLeft", "noseSneerRight" + ] + + logger.info("Using predefined list of standard blendshape categories.") + return standard_blendshapes \ No newline at end of file diff --git a/src/mediapipe_vision/utils/model_utils.py b/src/mediapipe_vision/utils/model_utils.py new file mode 100644 index 0000000..499d75f --- /dev/null +++ b/src/mediapipe_vision/utils/model_utils.py @@ -0,0 +1,148 @@ +"""Utilities for managing MediaPipe Vision models.""" + +import os +import logging +from typing import Dict, Any, Optional + +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# Import ComfyUI's folder_paths to use the models directory +try: + import folder_paths + HAS_COMFY_PATHS = True +except ImportError: + logger.warning("ComfyUI folder_paths module not available. Using local paths.") + HAS_COMFY_PATHS = False + + +def get_mediapipe_models_directory() -> str: + """Get the directory where MediaPipe models are stored. + + Uses ComfyUI's models directory structure when available. + + Returns: + Path to the MediaPipe models directory + """ + if HAS_COMFY_PATHS: + base_path = folder_paths.models_dir + mediapipe_dir = os.path.join(base_path, "mediapipe", "vision") + else: + # Fallback to local path + base_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + mediapipe_dir = os.path.join(base_path, "models") + + # Create the directory if it doesn't exist + os.makedirs(mediapipe_dir, exist_ok=True) + return mediapipe_dir + + +def get_model_path(model_type: str, model_name: str) -> str: + """Get the path for a specific MediaPipe Vision model. + + Args: + model_type: Type/category of model (e.g., 'face_mesh', 'pose') + model_name: Name of the specific model file + + Returns: + Full path to the model file + """ + models_dir = get_mediapipe_models_directory() + model_type_dir = os.path.join(models_dir, model_type) + os.makedirs(model_type_dir, exist_ok=True) + + return os.path.join(model_type_dir, model_name) + + +# Model information dictionary with URLs and files for each model type +# Using a nested dictionary structure to organize by task +MEDIAPIPE_MODELS = { + "face_detection": { + "short_range": { + "url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.task", + "filename": "blaze_face_short_range.task" + }, + "full_range": { + "url": "https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face/float16/1/blaze_face.task", + "filename": "blaze_face.task" + } + }, + "face_mesh": { + "standard": { + "url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task", + "filename": "face_landmarker.task", + "description": "Detects face landmarks and facial features (468 points)." + }, + "attention": { + "url": "https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/2/face_landmarker.task", + "filename": "face_landmarker_v2.task", + "description": "Improved version with better accuracy for face landmarks." + } + }, + "hand_tracking": { + "standard": { + "url": "https://storage.googleapis.com/mediapipe-models/hand_landmarker/hand_landmarker/float16/1/hand_landmarker.task", + "filename": "hand_landmarker.task", + "description": "Detects hand landmarks (21 points per hand)." + } + }, + "pose_detection": { + "lite": { + "url": "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_lite/float16/1/pose_landmarker_lite.task", + "filename": "pose_landmarker_lite.task", + "description": "Lightweight pose detection model (33 points)." + }, + "full": { + "url": "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_full/float16/1/pose_landmarker_full.task", + "filename": "pose_landmarker_full.task", + "description": "Full pose detection model with high accuracy." + }, + "heavy": { + "url": "https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_heavy/float16/1/pose_landmarker_heavy.task", + "filename": "pose_landmarker_heavy.task", + "description": "Most accurate pose detection model." + } + }, + "image_segmentation": { + "selfie": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter/float16/1/selfie_segmenter.task", + "filename": "selfie_segmenter.task", + "description": "Segments people from background." + }, + "selfie_landscape": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_segmenter_landscape/float16/1/selfie_segmenter_landscape.task", + "filename": "selfie_segmenter_landscape.task", + "description": "Optimized for landscape orientation." + }, + "multiclass": { + "url": "https://storage.googleapis.com/mediapipe-models/image_segmenter/selfie_multiclass_256x256/float32/1/selfie_multiclass_256x256.task", + "filename": "selfie_multiclass_256x256.task", + "description": "Segments multiple body parts (face, hair, clothes, etc.)." + } + }, + "object_detection": { + "efficientdet_lite0": { + "url": "https://storage.googleapis.com/mediapipe-models/object_detector/efficientdet_lite0/float16/1/efficientdet_lite0.task", + "filename": "efficientdet_lite0.task", + "description": "General object detection (80 classes)." + }, + "efficientdet_lite2": { + "url": "https://storage.googleapis.com/mediapipe-models/object_detector/efficientdet_lite2/float16/1/efficientdet_lite2.task", + "filename": "efficientdet_lite2.task", + "description": "Higher accuracy object detection." + } + }, + "image_classification": { + "efficientnet_lite0": { + "url": "https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite0/float32/1/efficientnet_lite0.task", + "filename": "efficientnet_lite0.task", + "description": "General image classification (1000 classes)." + }, + "efficientnet_lite4": { + "url": "https://storage.googleapis.com/mediapipe-models/image_classifier/efficientnet_lite4/float32/2/efficientnet_lite4.task", + "filename": "efficientnet_lite4.task", + "description": "Higher accuracy image classification." + } + } +} \ No newline at end of file diff --git a/src/mediapipe_vision/utils/timestamp_provider.py b/src/mediapipe_vision/utils/timestamp_provider.py new file mode 100644 index 0000000..871c1bb --- /dev/null +++ b/src/mediapipe_vision/utils/timestamp_provider.py @@ -0,0 +1,21 @@ +import time + +class TimestampProvider: + """ + Provides real-time, monotonic timestamps in milliseconds. + + MediaPipe's RunningMode.VIDEO requires strictly increasing timestamp_ms values. + Using time.time() alone can result in duplicates during tight loops, which causes + MediaPipe to skip or freeze frames. This class ensures timestamps are always + increasing while staying aligned with real elapsed time. + """ + def __init__(self): + self._start_time = time.time() + self._last_timestamp = 0 + + def next(self) -> int: + now = int((time.time() - self._start_time) * 1000) + if now <= self._last_timestamp: + now = self._last_timestamp + 1 + self._last_timestamp = now + return now \ No newline at end of file From 460a93cf91a990671aacb61902c71191bc908d97 Mon Sep 17 00:00:00 2001 From: RyanOnTheInside <7623207+ryanontheinside@users.noreply.github.com> Date: Sat, 19 Apr 2025 16:09:20 -0400 Subject: [PATCH 2/3] update examples --- examples/broccoli.png | Bin 0 -> 392370 bytes .../{ => control_nodes}/BROCCOLI_GAME.json | 0 .../{ => control_nodes}/FPS_Monitor_API.json | 0 .../FPS_Monitor_WORKFLOW.json | 0 .../hand_tracking_mask_resizer.json | 2 +- examples/{ => control_nodes}/mask_string.json | 2 +- .../{ => control_nodes}/motioncontrol.json | 0 .../motioncontrol_example_API.json | 2 +- .../on_off_example_api.json | 0 .../prompt_updating_WORKFLOW.json | 0 .../shape_resize_example_API.json | 0 .../shape_resize_example_WORKFLOW.json | 0 .../similarity_filter_example_api.json | 0 .../{ => control_nodes}/simple_comfy_api.json | 0 examples/dead_inside_512.png | Bin 273136 -> 0 bytes examples/harold.png | Bin 0 -> 294914 bytes .../mediapipe_vision/blendshape_control.json | 191 + .../mediapipe_vision/head_pose_control.json | 192 + examples/mediapipe_vision/nodes.json | 3900 +++++++++++++++++ ...epthanything-face-api_JAW_CONTROL API.json | 355 ++ ...thanything-face-api_PITCH_CONTROL API.json | 325 ++ examples/mediapipe_vision/tempdelete.json | 271 ++ 22 files changed, 5237 insertions(+), 3 deletions(-) create mode 100644 examples/broccoli.png rename examples/{ => control_nodes}/BROCCOLI_GAME.json (100%) rename examples/{ => control_nodes}/FPS_Monitor_API.json (100%) rename examples/{ => control_nodes}/FPS_Monitor_WORKFLOW.json (100%) rename examples/{ => control_nodes}/hand_tracking_mask_resizer.json (98%) rename examples/{ => control_nodes}/mask_string.json (98%) rename examples/{ => control_nodes}/motioncontrol.json (100%) rename examples/{ => control_nodes}/motioncontrol_example_API.json (98%) rename examples/{ => control_nodes}/on_off_example_api.json (100%) rename examples/{ => control_nodes}/prompt_updating_WORKFLOW.json (100%) rename examples/{ => control_nodes}/shape_resize_example_API.json (100%) rename examples/{ => control_nodes}/shape_resize_example_WORKFLOW.json (100%) rename examples/{ => control_nodes}/similarity_filter_example_api.json (100%) rename examples/{ => control_nodes}/simple_comfy_api.json (100%) delete mode 100644 examples/dead_inside_512.png create mode 100644 examples/harold.png create mode 100644 examples/mediapipe_vision/blendshape_control.json create mode 100644 examples/mediapipe_vision/head_pose_control.json create mode 100644 examples/mediapipe_vision/nodes.json create mode 100644 examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_JAW_CONTROL API.json create mode 100644 examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_PITCH_CONTROL API.json create mode 100644 examples/mediapipe_vision/tempdelete.json diff --git a/examples/broccoli.png b/examples/broccoli.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0e9bd27f0a56237b15b69538e381e06637a84c GIT binary patch literal 392370 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

>MD`NZ`o@ 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

%W?Qw1$Mv4g7F{*y_{2hB!Q%m2G>~u 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

C;1Yzy7BrzYP~0zw5%pb&E00oR+#J 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�>SrxcGpU7g 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 z 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

!&yUny@Bn>KhLwg?byCF4tmu)n&s&c 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 a2_E399Csqx_rNH?|DCXQw&JgaPxwEv5ezH< literal 0 HcmV?d00001 diff --git a/examples/BROCCOLI_GAME.json b/examples/control_nodes/BROCCOLI_GAME.json similarity index 100% rename from examples/BROCCOLI_GAME.json rename to examples/control_nodes/BROCCOLI_GAME.json diff --git a/examples/FPS_Monitor_API.json b/examples/control_nodes/FPS_Monitor_API.json similarity index 100% rename from examples/FPS_Monitor_API.json rename to examples/control_nodes/FPS_Monitor_API.json diff --git a/examples/FPS_Monitor_WORKFLOW.json b/examples/control_nodes/FPS_Monitor_WORKFLOW.json similarity index 100% rename from examples/FPS_Monitor_WORKFLOW.json rename to examples/control_nodes/FPS_Monitor_WORKFLOW.json diff --git a/examples/hand_tracking_mask_resizer.json b/examples/control_nodes/hand_tracking_mask_resizer.json similarity index 98% rename from examples/hand_tracking_mask_resizer.json rename to examples/control_nodes/hand_tracking_mask_resizer.json index 202ef14..5cefd47 100644 --- a/examples/hand_tracking_mask_resizer.json +++ b/examples/control_nodes/hand_tracking_mask_resizer.json @@ -99,7 +99,7 @@ }, "23": { "inputs": { - "image": "dead_inside_512.png", + "image": "harold.png", "upload": "image" }, "class_type": "LoadImage", diff --git a/examples/mask_string.json b/examples/control_nodes/mask_string.json similarity index 98% rename from examples/mask_string.json rename to examples/control_nodes/mask_string.json index 818ad85..596065c 100644 --- a/examples/mask_string.json +++ b/examples/control_nodes/mask_string.json @@ -1,7 +1,7 @@ { "57": { "inputs": { - "image": "dead_inside_512.png", + "image": "harold.png", "upload": "image" }, "class_type": "LoadImage" diff --git a/examples/motioncontrol.json b/examples/control_nodes/motioncontrol.json similarity index 100% rename from examples/motioncontrol.json rename to examples/control_nodes/motioncontrol.json diff --git a/examples/motioncontrol_example_API.json b/examples/control_nodes/motioncontrol_example_API.json similarity index 98% rename from examples/motioncontrol_example_API.json rename to examples/control_nodes/motioncontrol_example_API.json index 93b4097..98953fb 100644 --- a/examples/motioncontrol_example_API.json +++ b/examples/control_nodes/motioncontrol_example_API.json @@ -207,7 +207,7 @@ }, "39": { "inputs": { - "image": "dead_inside_512.png", + "image": "harold.png", "upload": "image" }, "class_type": "LoadImage", diff --git a/examples/on_off_example_api.json b/examples/control_nodes/on_off_example_api.json similarity index 100% rename from examples/on_off_example_api.json rename to examples/control_nodes/on_off_example_api.json diff --git a/examples/prompt_updating_WORKFLOW.json b/examples/control_nodes/prompt_updating_WORKFLOW.json similarity index 100% rename from examples/prompt_updating_WORKFLOW.json rename to examples/control_nodes/prompt_updating_WORKFLOW.json diff --git a/examples/shape_resize_example_API.json b/examples/control_nodes/shape_resize_example_API.json similarity index 100% rename from examples/shape_resize_example_API.json rename to examples/control_nodes/shape_resize_example_API.json diff --git a/examples/shape_resize_example_WORKFLOW.json b/examples/control_nodes/shape_resize_example_WORKFLOW.json similarity index 100% rename from examples/shape_resize_example_WORKFLOW.json rename to examples/control_nodes/shape_resize_example_WORKFLOW.json diff --git a/examples/similarity_filter_example_api.json b/examples/control_nodes/similarity_filter_example_api.json similarity index 100% rename from examples/similarity_filter_example_api.json rename to examples/control_nodes/similarity_filter_example_api.json diff --git a/examples/simple_comfy_api.json b/examples/control_nodes/simple_comfy_api.json similarity index 100% rename from examples/simple_comfy_api.json rename to examples/control_nodes/simple_comfy_api.json diff --git a/examples/dead_inside_512.png b/examples/dead_inside_512.png deleted file mode 100644 index 581b855b56532f50b2a242186a2b4b7368af077a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273136 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

F|@`7`1TN0S*R^bnmMe;l^E{ixr&`Fs?)2yPh? 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

)+KyGJP(QUBB=>4i3wHb( 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 &bbIAQ4-yJ^r1xSn-3a)FI&p+yU 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 z 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 literal 0 HcmV?d00001 diff --git a/examples/mediapipe_vision/blendshape_control.json b/examples/mediapipe_vision/blendshape_control.json new file mode 100644 index 0000000..646ce59 --- /dev/null +++ b/examples/mediapipe_vision/blendshape_control.json @@ -0,0 +1,191 @@ +{ + "1": { + "inputs": { + "image": "broccoli.png", + "upload": "image" + }, + "class_type": "LoadImage", + "_meta": { + "title": "Load Image" + } + }, + "3": { + "inputs": { + "num_faces": 1, + "min_face_detection_confidence": 0.5, + "min_face_presence_confidence": 0.5, + "min_tracking_confidence": 0.5, + "output_blendshapes": true, + "output_transform_matrix": true, + "running_mode": "video", + "delegate": "cpu", + "image": [ + "6", + 0 + ], + "model_info": [ + "4", + 0 + ] + }, + "class_type": "MediaPipeFaceLandmarker", + "_meta": { + "title": "Face Landmarker (MediaPipe)" + } + }, + "4": { + "inputs": { + "model_variant": "default" + }, + "class_type": "MediaPipeFaceLandmarkerModelLoader", + "_meta": { + "title": "Load Face Landmarker Model (MediaPipe)" + } + }, + "6": { + "inputs": { + "image": "harold.png", + "upload": "image" + }, + "class_type": "PrimaryInputLoadImage", + "_meta": { + "title": "PrimaryInputLoadImage" + } + }, + "7": { + "inputs": { + "x": 0, + "y": 0, + "resize_source": false, + "destination": [ + "6", + 0 + ], + "source": [ + "1", + 0 + ], + "mask": [ + "18", + 0 + ] + }, + "class_type": "ImageCompositeMasked", + "_meta": { + "title": "ImageCompositeMasked" + } + }, + "8": { + "inputs": { + "value": [ + "21", + 0 + ], + "width": 512, + "height": 512 + }, + "class_type": "SolidMask", + "_meta": { + "title": "SolidMask" + } + }, + "15": { + "inputs": { + "part_name": "FACE_OVAL", + "face_landmarks": [ + "16", + 0 + ], + "image_for_dimensions": [ + "6", + 0 + ] + }, + "class_type": "MaskFromFaceLandmarks", + "_meta": { + "title": "Mask From Face Landmarks (MediaPipe)" + } + }, + "16": { + "inputs": { + "num_faces": 1, + "min_face_detection_confidence": 0.5, + "min_face_presence_confidence": 0.5, + "min_tracking_confidence": 0.5, + "output_blendshapes": true, + "output_transform_matrix": true, + "running_mode": "video", + "delegate": "cpu", + "image": [ + "6", + 0 + ], + "model_info": [ + "17", + 0 + ] + }, + "class_type": "MediaPipeFaceLandmarker", + "_meta": { + "title": "Face Landmarker (MediaPipe)" + } + }, + "17": { + "inputs": { + "model_variant": "default" + }, + "class_type": "MediaPipeFaceLandmarkerModelLoader", + "_meta": { + "title": "Load Face Landmarker Model (MediaPipe)" + } + }, + "18": { + "inputs": { + "x": 0, + "y": 0, + "operation": "subtract", + "destination": [ + "8", + 0 + ], + "source": [ + "15", + 0 + ] + }, + "class_type": "MaskComposite", + "_meta": { + "title": "MaskComposite" + } + }, + "21": { + "inputs": { + "blendshape_name": "jawOpen", + "score_min": 0, + "score_max": 1, + "output_min_float": 0, + "output_max_float": 1, + "clamp": true, + "blendshapes": [ + "3", + 1 + ] + }, + "class_type": "BlendshapeControlFloat", + "_meta": { + "title": "Blendshape Control (Float)" + } + }, + "25": { + "inputs": { + "images": [ + "7", + 0 + ] + }, + "class_type": "PreviewImage", + "_meta": { + "title": "Preview Image" + } + } +} \ No newline at end of file diff --git a/examples/mediapipe_vision/head_pose_control.json b/examples/mediapipe_vision/head_pose_control.json new file mode 100644 index 0000000..a430b10 --- /dev/null +++ b/examples/mediapipe_vision/head_pose_control.json @@ -0,0 +1,192 @@ +{ + "1": { + "inputs": { + "image": "broccoli.png", + "upload": "image" + }, + "class_type": "LoadImage", + "_meta": { + "title": "Load Image" + } + }, + "2": { + "inputs": { + "filename_prefix": "ComfyUI", + "images": [ + "7", + 0 + ] + }, + "class_type": "SaveImage", + "_meta": { + "title": "Save Image" + } + }, + "3": { + "inputs": { + "num_faces": 1, + "min_face_detection_confidence": 0.5, + "min_face_presence_confidence": 0.5, + "min_tracking_confidence": 0.5, + "output_blendshapes": true, + "output_transform_matrix": true, + "running_mode": "video", + "delegate": "cpu", + "image": [ + "6", + 0 + ], + "model_info": [ + "4", + 0 + ] + }, + "class_type": "MediaPipeFaceLandmarker", + "_meta": { + "title": "Face Landmarker (MediaPipe)" + } + }, + "4": { + "inputs": { + "model_variant": "default" + }, + "class_type": "MediaPipeFaceLandmarkerModelLoader", + "_meta": { + "title": "Load Face Landmarker Model (MediaPipe)" + } + }, + "5": { + "inputs": { + "component": "roll", + "value_min": 0, + "value_max": 60, + "output_min_float": 0, + "output_max_float": 1, + "clamp": true, + "face_transform_matrices": [ + "3", + 2 + ] + }, + "class_type": "HeadPoseControlFloat", + "_meta": { + "title": "Head Pose Control (Float)" + } + }, + "6": { + "inputs": { + "image": "harold.png", + "upload": "image" + }, + "class_type": "PrimaryInputLoadImage", + "_meta": { + "title": "PrimaryInputLoadImage" + } + }, + "7": { + "inputs": { + "x": 0, + "y": 0, + "resize_source": false, + "destination": [ + "6", + 0 + ], + "source": [ + "1", + 0 + ], + "mask": [ + "18", + 0 + ] + }, + "class_type": "ImageCompositeMasked", + "_meta": { + "title": "ImageCompositeMasked" + } + }, + "8": { + "inputs": { + "value": [ + "5", + 0 + ], + "width": 512, + "height": 512 + }, + "class_type": "SolidMask", + "_meta": { + "title": "SolidMask" + } + }, + "15": { + "inputs": { + "part_name": "FACE_OVAL", + "face_landmarks": [ + "16", + 0 + ], + "image_for_dimensions": [ + "6", + 0 + ] + }, + "class_type": "MaskFromFaceLandmarks", + "_meta": { + "title": "Mask From Face Landmarks (MediaPipe)" + } + }, + "16": { + "inputs": { + "num_faces": 1, + "min_face_detection_confidence": 0.5, + "min_face_presence_confidence": 0.5, + "min_tracking_confidence": 0.5, + "output_blendshapes": true, + "output_transform_matrix": true, + "running_mode": "video", + "delegate": "cpu", + "image": [ + "6", + 0 + ], + "model_info": [ + "17", + 0 + ] + }, + "class_type": "MediaPipeFaceLandmarker", + "_meta": { + "title": "Face Landmarker (MediaPipe)" + } + }, + "17": { + "inputs": { + "model_variant": "default" + }, + "class_type": "MediaPipeFaceLandmarkerModelLoader", + "_meta": { + "title": "Load Face Landmarker Model (MediaPipe)" + } + }, + "18": { + "inputs": { + "x": 0, + "y": 0, + "operation": "subtract", + "destination": [ + "8", + 0 + ], + "source": [ + "15", + 0 + ] + }, + "class_type": "MaskComposite", + "_meta": { + "title": "MaskComposite" + } + } +} \ No newline at end of file diff --git a/examples/mediapipe_vision/nodes.json b/examples/mediapipe_vision/nodes.json new file mode 100644 index 0000000..40897a2 --- /dev/null +++ b/examples/mediapipe_vision/nodes.json @@ -0,0 +1,3900 @@ +{ + "last_node_id": 127, + "last_link_id": 234, + "nodes": [ + { + "id": 40, + "type": "StringControl", + "pos": [ + -570, + -1000 + ], + "size": [ + 400, + 200 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "STRING", + "type": "STRING", + "links": [ + 36 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "StringControl" + }, + "widgets_values": [ + true, + "input/harold.png\ninput/harold1.png", + 30, + "sine" + ] + }, + { + "id": 52, + "type": "PreviewImage", + "pos": [ + 4787.8994140625, + -1135.477294921875 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 46, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 65 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 51, + "type": "Reroute", + "pos": [ + 3522.8232421875, + -1149.0965576171875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 60 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 64 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 50, + "type": "Reroute", + "pos": [ + 1116.38720703125, + -82.26616668701172 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 59 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 62, + 63, + 67, + 202 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 43, + "type": "VisualizeFaceDetections", + "pos": [ + 1928.974365234375, + -227.67933654785156 + ], + "size": [ + 466.1999816894531, + 198 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "face_detections", + "type": "FACE_DETECTIONS", + "link": 204 + }, + { + "name": "image", + "type": "IMAGE", + "link": 62 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 46 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VisualizeFaceDetections" + }, + "widgets_values": [ + "#00FF00", + 2, + "#FF0000", + 2, + "#FFFFFF", + "#00FF00" + ] + }, + { + "id": 38, + "type": "VisualizeFaceDetections", + "pos": [ + 1785.216552734375, + 59.228858947753906 + ], + "size": [ + 466.1999816894531, + 198 + ], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + { + "name": "face_detections", + "type": "FACE_DETECTIONS", + "link": 205 + }, + { + "name": "image", + "type": "IMAGE", + "link": 63 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 49 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VisualizeFaceDetections" + }, + "widgets_values": [ + "#00FF00", + 2, + "#FF0000", + 2, + "#FFFFFF", + "#00FF00" + ] + }, + { + "id": 37, + "type": "MediaPipeFaceDetectorModelLoader", + "pos": [ + 1168.4222412109375, + 126.43444061279297 + ], + "size": [ + 453.5999755859375, + 58 + ], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "FACE_DETECTOR_MODEL_INFO", + "links": [ + 203 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceDetectorModelLoader" + }, + "widgets_values": [ + "short_range" + ] + }, + { + "id": 54, + "type": "MaskToImage", + "pos": [ + 2823.83349609375, + 236.96612548828125 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 66, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 68 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 69 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 55, + "type": "PreviewImage", + "pos": [ + 3156.212646484375, + 108.36740112304688 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 76, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 69 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 45, + "type": "PreviewImage", + "pos": [ + 2860.00048828125, + -80.99016571044922 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 65, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 49 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 44, + "type": "PreviewImage", + "pos": [ + 3136.671875, + -251.58612060546875 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 64, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 46 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 53, + "type": "FaceDetectionToMask", + "pos": [ + 2311.00048828125, + 137.5205535888672 + ], + "size": [ + 428.4000244140625, + 246 + ], + "flags": {}, + "order": 45, + "mode": 0, + "inputs": [ + { + "name": "face_detections", + "type": "FACE_DETECTIONS", + "link": 206 + }, + { + "name": "reference_image", + "type": "IMAGE", + "shape": 7, + "link": 67 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 68 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "FaceDetectionToMask" + }, + "widgets_values": [ + 512, + 512, + "Bounding Box", + "All Faces", + 0, + 5, + false, + 0 + ] + }, + { + "id": 63, + "type": "PreviewImage", + "pos": [ + 4837.84130859375, + -72.36376953125 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 49, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 216 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 68, + "type": "MediaPipeInteractiveSegmenterModelLoader", + "pos": [ + 3690.7041015625, + -353.17822265625 + ], + "size": [ + 554.4000244140625, + 58 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "INTERACTIVE_SEGMENTER_MODEL_INFO", + "links": [ + 81 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeInteractiveSegmenterModelLoader" + }, + "widgets_values": [ + "default" + ] + }, + { + "id": 67, + "type": "MediaPipeInteractiveSegmenter", + "pos": [ + 4478.521484375, + -496.81298828125 + ], + "size": [ + 415.8000183105469, + 200 + ], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 80 + }, + { + "name": "model_info", + "type": "INTERACTIVE_SEGMENTER_MODEL_INFO", + "link": 81 + } + ], + "outputs": [ + { + "name": "mask", + "type": "MASK", + "links": [ + 82 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeInteractiveSegmenter" + }, + "widgets_values": [ + "[[0.5, 0.5]]", + true, + false + ] + }, + { + "id": 69, + "type": "MaskToImage", + "pos": [ + 4977.34912109375, + -530.977294921875 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 48, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 82 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 83 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 61, + "type": "Reroute", + "pos": [ + 3638.88623046875, + 110.7275390625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 86 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 80, + 214 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 71, + "type": "MediaPipeObjectDetectorModelLoader", + "pos": [ + 1237.703125, + 887.36865234375 + ], + "size": [ + 478.8000183105469, + 58 + ], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "OBJECT_DETECTOR_MODEL_INFO", + "links": [ + 219 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeObjectDetectorModelLoader" + }, + "widgets_values": [ + "efficientdet_lite0" + ] + }, + { + "id": 74, + "type": "VisualizeObjectDetections", + "pos": [ + 2224.48828125, + 728.12890625 + ], + "size": [ + 491.4000244140625, + 150 + ], + "flags": {}, + "order": 47, + "mode": 0, + "inputs": [ + { + "name": "object_detections", + "type": "OBJECT_DETECTIONS", + "link": 220 + }, + { + "name": "image", + "type": "IMAGE", + "link": 89 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 90 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VisualizeObjectDetections" + }, + "widgets_values": [ + "#FF0000", + 2, + "#FFFFFF", + "#FF0000" + ] + }, + { + "id": 75, + "type": "PreviewImage", + "pos": [ + 2812.71875, + 728.55078125 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 67, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 90 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 73, + "type": "Reroute", + "pos": [ + 1205.9326171875, + 712.0458984375 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 85 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 89, + 218 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 78, + "type": "MediaPipeImageEmbedderModelLoader", + "pos": [ + 3286.76904296875, + 932.028076171875 + ], + "size": [ + 466.1999816894531, + 58 + ], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "IMAGE_EMBEDDER_MODEL_INFO", + "links": [ + 222, + 225 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeImageEmbedderModelLoader" + }, + "widgets_values": [ + "mobilenet_v3_small" + ] + }, + { + "id": 81, + "type": "LoadImage", + "pos": [ + 3481.492431640625, + 655.551513671875 + ], + "size": [ + 210, + 314 + ], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 224 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "broccoli.png", + "image" + ] + }, + { + "id": 82, + "type": "ReshapeMediaPipeEmbedding", + "pos": [ + 4604.0107421875, + 899.858154296875 + ], + "size": [ + 529.199951171875, + 58 + ], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + { + "name": "image_embeddings", + "type": "IMAGE_EMBEDDINGS", + "link": 227 + } + ], + "outputs": [ + { + "name": "CONDITIONING", + "type": "CONDITIONING", + "links": null + } + ], + "properties": { + "Node name for S&R": "ReshapeMediaPipeEmbedding" + }, + "widgets_values": [ + 768 + ] + }, + { + "id": 76, + "type": "Reroute", + "pos": [ + 3280.8232421875, + 729.87158203125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 91 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 221 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 85, + "type": "PoseLandmarkDeltaIntControl", + "pos": [ + 4072.0244140625, + -1987.2060546875 + ], + "size": [ + 390.5999755859375, + 202 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "POSE_LANDMARKS", + "link": 231 + } + ], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "PoseLandmarkDeltaIntControl" + }, + "widgets_values": [ + 0, + 1, + 0, + 0.1, + 0, + 100, + true + ] + }, + { + "id": 89, + "type": "VisualizePoseLandmarks", + "pos": [ + 4044.52587890625, + -2835.999755859375 + ], + "size": [ + 453.5999755859375, + 222 + ], + "flags": {}, + "order": 55, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "POSE_LANDMARKS", + "link": 233 + }, + { + "name": "image", + "type": "IMAGE", + "link": 106 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 107 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VisualizePoseLandmarks" + }, + "widgets_values": [ + true, + "#00FFFF", + 3, + true, + "#FFFFFF", + 2, + 0.5 + ] + }, + { + "id": 91, + "type": "PreviewImage", + "pos": [ + 4549.4755859375, + -2821.939697265625 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 71, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 107 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 87, + "type": "PoseLandmarkDeltaTrigger", + "pos": [ + 4092.0244140625, + -1707.2060546875 + ], + "size": [ + 340.20001220703125, + 130 + ], + "flags": {}, + "order": 54, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "POSE_LANDMARKS", + "link": 232 + } + ], + "outputs": [ + { + "name": "BOOLEAN", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "PoseLandmarkDeltaTrigger" + }, + "widgets_values": [ + 0, + 1, + 0.05, + "Above" + ] + }, + { + "id": 86, + "type": "PoseLandmarkDeltaFloatControl", + "pos": [ + 4082.0244140625, + -2267.2060546875 + ], + "size": [ + 415.8000183105469, + 202 + ], + "flags": {}, + "order": 52, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "POSE_LANDMARKS", + "link": 230 + } + ], + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": null + } + ], + "properties": { + "Node name for S&R": "PoseLandmarkDeltaFloatControl" + }, + "widgets_values": [ + 0, + 1, + 0, + 0.1, + 0, + 1, + true + ] + }, + { + "id": 90, + "type": "Reroute", + "pos": [ + 2982.07080078125, + -2901.057373046875 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 100 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 106, + 108, + 228 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 88, + "type": "MaskFromPoseLandmarks", + "pos": [ + 4080.11865234375, + -2509.3623046875 + ], + "size": [ + 453.5999755859375, + 102 + ], + "flags": {}, + "order": 56, + "mode": 0, + "inputs": [ + { + "name": "pose_landmarks", + "type": "POSE_LANDMARKS", + "link": 234 + }, + { + "name": "image_for_dimensions", + "type": "IMAGE", + "link": 108 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 110 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskFromPoseLandmarks" + }, + "widgets_values": [ + "FULL_BODY", + 0.5 + ] + }, + { + "id": 92, + "type": "MaskToImage", + "pos": [ + 4572.4521484375, + -2536.19482421875 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 72, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 110 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 111 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 93, + "type": "PreviewImage", + "pos": [ + 4580.5595703125, + -2447.0078125 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 78, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 111 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 46, + "type": "HeadPoseControlFloat", + "pos": [ + 1321.5677490234375, + -2959.764404296875 + ], + "size": [ + 367.79998779296875, + 178 + ], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [ + { + "name": "face_transform_matrices", + "type": "TRANSFORM_MATRIX_LIST", + "link": 166 + } + ], + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": null + } + ], + "properties": { + "Node name for S&R": "HeadPoseControlFloat" + }, + "widgets_values": [ + "yaw", + -60, + 60, + 0, + 1, + true + ] + }, + { + "id": 26, + "type": "BlendshapeControlFloat", + "pos": [ + 1363.3553466796875, + -2587.24951171875 + ], + "size": [ + 327.5999755859375, + 178 + ], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [ + { + "name": "blendshapes", + "type": "BLENDSHAPES_LIST", + "link": 165 + } + ], + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": null + } + ], + "properties": { + "Node name for S&R": "BlendshapeControlFloat" + }, + "widgets_values": [ + "mouthSmileLeft", + 0, + 1, + 0, + 1, + true + ] + }, + { + "id": 27, + "type": "BlendshapeControlInt", + "pos": [ + 1796.6112060546875, + -2601.131591796875 + ], + "size": [ + 315, + 178 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "blendshapes", + "type": "BLENDSHAPES_LIST", + "link": 164 + } + ], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "BlendshapeControlInt" + }, + "widgets_values": [ + "mouthSmileLeft", + 0, + 1, + 0, + 100, + true + ] + }, + { + "id": 47, + "type": "HeadPoseControlInt", + "pos": [ + 1799.7708740234375, + -2947.479736328125 + ], + "size": [ + 342.5999755859375, + 178 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "face_transform_matrices", + "type": "TRANSFORM_MATRIX_LIST", + "link": 167 + } + ], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "HeadPoseControlInt" + }, + "widgets_values": [ + "yaw", + -60, + 60, + 0, + 100, + true + ] + }, + { + "id": 48, + "type": "HeadPoseTrigger", + "pos": [ + 2209.87939453125, + -2935.62744140625 + ], + "size": [ + 393, + 106 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "face_transform_matrices", + "type": "TRANSFORM_MATRIX_LIST", + "link": 168 + } + ], + "outputs": [ + { + "name": "BOOLEAN", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "HeadPoseTrigger" + }, + "widgets_values": [ + "yaw", + 30, + "Above" + ] + }, + { + "id": 28, + "type": "BlendshapeTrigger", + "pos": [ + 2249.17578125, + -2586.435791015625 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + { + "name": "blendshapes", + "type": "BLENDSHAPES_LIST", + "link": 163 + } + ], + "outputs": [ + { + "name": "BOOLEAN", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "BlendshapeTrigger" + }, + "widgets_values": [ + "jawOpen", + 0.5, + "Above" + ] + }, + { + "id": 29, + "type": "FaceLandmarkDeltaIntControl", + "pos": [ + 1803.5064697265625, + -2283.11962890625 + ], + "size": [ + 390.5999755859375, + 202 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "FACE_LANDMARKS", + "link": 158 + } + ], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "FaceLandmarkDeltaIntControl" + }, + "widgets_values": [ + 8, + 1, + 0, + 0.1, + 0, + 100, + true + ] + }, + { + "id": 30, + "type": "FaceLandmarkDeltaFloatControl", + "pos": [ + 1301.773193359375, + -2286.06884765625 + ], + "size": [ + 415.8000183105469, + 202 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "FACE_LANDMARKS", + "link": 159 + } + ], + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": null + } + ], + "properties": { + "Node name for S&R": "FaceLandmarkDeltaFloatControl" + }, + "widgets_values": [ + 8, + 1, + 0, + 0.1, + 0, + 1, + true + ] + }, + { + "id": 31, + "type": "FaceLandmarkDeltaTrigger", + "pos": [ + 2266.641357421875, + -2287.66796875 + ], + "size": [ + 340.20001220703125, + 130 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "FACE_LANDMARKS", + "link": 160 + } + ], + "outputs": [ + { + "name": "BOOLEAN", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "FaceLandmarkDeltaTrigger" + }, + "widgets_values": [ + 8, + 1, + 0.05, + "Above" + ] + }, + { + "id": 97, + "type": "HandLandmarkDeltaFloatControl", + "pos": [ + 1816.272216796875, + -1193.5794677734375 + ], + "size": [ + 415.8000183105469, + 202 + ], + "flags": {}, + "order": 58, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "HAND_LANDMARKS", + "link": 210 + } + ], + "outputs": [ + { + "name": "FLOAT", + "type": "FLOAT", + "links": null + } + ], + "properties": { + "Node name for S&R": "HandLandmarkDeltaFloatControl" + }, + "widgets_values": [ + 8, + 1, + 0, + 0.1, + 0, + 1, + true + ] + }, + { + "id": 101, + "type": "Reroute", + "pos": [ + 1173.419921875, + -877.196533203125 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 113 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 118, + 121, + 207 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 100, + "type": "VisualizeHandLandmarks", + "pos": [ + 2333.40673828125, + -949.8047485351562 + ], + "size": [ + 453.5999755859375, + 198 + ], + "flags": {}, + "order": 61, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "HAND_LANDMARKS", + "link": 213 + }, + { + "name": "image", + "type": "IMAGE", + "link": 121 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 122 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VisualizeHandLandmarks" + }, + "widgets_values": [ + true, + "#FF0000", + 3, + true, + "#00FF00", + 2 + ] + }, + { + "id": 102, + "type": "PreviewImage", + "pos": [ + 2950.0205078125, + -889.323974609375 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 74, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 122 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 103, + "type": "MaskToImage", + "pos": [ + 2438.6865234375, + -554.8757934570312 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 73, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 123 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 124 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 104, + "type": "PreviewImage", + "pos": [ + 2835.56494140625, + -566.7672729492188 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 79, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 124 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 98, + "type": "HandLandmarkDeltaTrigger", + "pos": [ + 2336.273193359375, + -1143.5794677734375 + ], + "size": [ + 340.20001220703125, + 130 + ], + "flags": {}, + "order": 59, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "HAND_LANDMARKS", + "link": 211 + } + ], + "outputs": [ + { + "name": "BOOLEAN", + "type": "BOOLEAN", + "links": null + } + ], + "properties": { + "Node name for S&R": "HandLandmarkDeltaTrigger" + }, + "widgets_values": [ + 8, + 1, + 0.05, + "Above" + ] + }, + { + "id": 96, + "type": "HandLandmarkDeltaIntControl", + "pos": [ + 1354.150634765625, + -1166.822021484375 + ], + "size": [ + 390.5999755859375, + 202 + ], + "flags": {}, + "order": 57, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "HAND_LANDMARKS", + "link": 209 + } + ], + "outputs": [ + { + "name": "INT", + "type": "INT", + "links": null + } + ], + "properties": { + "Node name for S&R": "HandLandmarkDeltaIntControl" + }, + "widgets_values": [ + 8, + 1, + 0, + 0.1, + 0, + 100, + true + ] + }, + { + "id": 32, + "type": "MediaPipeFaceLandmarkerModelLoader", + "pos": [ + 1183.16552734375, + -1580.005859375 + ], + "size": [ + 478.8000183105469, + 58 + ], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "FACE_LANDMARKER_MODEL_INFO", + "links": [ + 157 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceLandmarkerModelLoader" + }, + "widgets_values": [ + "default" + ] + }, + { + "id": 80, + "type": "CompareMediaPipeEmbeddings", + "pos": [ + 4614.1572265625, + 731.35791015625 + ], + "size": [ + 456, + 46 + ], + "flags": {}, + "order": 51, + "mode": 0, + "inputs": [ + { + "name": "image_embeddings_1", + "type": "IMAGE_EMBEDDINGS", + "link": 223 + }, + { + "name": "image_embeddings_2", + "type": "IMAGE_EMBEDDINGS", + "link": 226 + } + ], + "outputs": [ + { + "name": "cosine_similarity", + "type": "FLOAT", + "links": [ + 130 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "CompareMediaPipeEmbeddings" + }, + "widgets_values": [] + }, + { + "id": 64, + "type": "MaskToImage", + "pos": [ + 4682.78076171875, + 300.948486328125 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 69, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 78 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 79 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 70, + "type": "PreviewImage", + "pos": [ + 5208.041015625, + -435.859130859375 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 68, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 83 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 94, + "type": "MediaPipeHandLandmarkerModelLoader", + "pos": [ + 1216.9791259765625, + -702.7271728515625 + ], + "size": [ + 478.8000183105469, + 58 + ], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "HAND_LANDMARKER_MODEL_INFO", + "links": [ + 208 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeHandLandmarkerModelLoader" + }, + "widgets_values": [ + "default" + ] + }, + { + "id": 42, + "type": "Reroute", + "pos": [ + 1125.7535400390625, + -1993.64306640625 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 37 + } + ], + "outputs": [ + { + "name": "", + "type": "IMAGE", + "links": [ + 50, + 155, + 156 + ], + "slot_index": 0 + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 121, + "type": "MediaPipeFaceDetector", + "pos": [ + 1335.4642333984375, + -71.19683074951172 + ], + "size": [ + 330, + 126 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 202 + }, + { + "name": "model_info", + "type": "FACE_DETECTOR_MODEL_INFO", + "link": 203 + } + ], + "outputs": [ + { + "name": "face_detections", + "type": "FACE_DETECTIONS", + "links": [ + 204, + 205, + 206 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceDetector" + }, + "widgets_values": [ + "video", + "cpu", + 0.5 + ] + }, + { + "id": 122, + "type": "MediaPipeHandLandmarker", + "pos": [ + 1786.3441162109375, + -824.6129150390625 + ], + "size": [ + 340.20001220703125, + 198 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 207 + }, + { + "name": "model_info", + "type": "HAND_LANDMARKER_MODEL_INFO", + "link": 208 + } + ], + "outputs": [ + { + "name": "landmarks", + "type": "HAND_LANDMARKS", + "links": [ + 209, + 210, + 211, + 212, + 213 + ] + }, + { + "name": "handedness", + "type": "HANDEDNESS_LIST", + "links": null + } + ], + "properties": { + "Node name for S&R": "MediaPipeHandLandmarker" + }, + "widgets_values": [ + "video", + "cpu", + 2, + 0.5, + 0.5, + 0.5 + ] + }, + { + "id": 99, + "type": "MaskFromHandLandmarks", + "pos": [ + 1916.052734375, + -571.8310546875 + ], + "size": [ + 453.5999755859375, + 78 + ], + "flags": {}, + "order": 60, + "mode": 0, + "inputs": [ + { + "name": "hand_landmarks", + "type": "HAND_LANDMARKS", + "link": 212 + }, + { + "name": "image_for_dimensions", + "type": "IMAGE", + "link": 118 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 123 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskFromHandLandmarks" + }, + "widgets_values": [ + "INDEX_FINGER" + ] + }, + { + "id": 56, + "type": "PreviewImage", + "pos": [ + 2407.46728515625, + -2021.7723388671875 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 63, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 70 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 124, + "type": "MediaPipeObjectDetector", + "pos": [ + 1766.8740234375, + 766.07568359375 + ], + "size": [ + 355.20001220703125, + 150 + ], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 218 + }, + { + "name": "model_info", + "type": "OBJECT_DETECTOR_MODEL_INFO", + "link": 219 + } + ], + "outputs": [ + { + "name": "object_detections", + "type": "OBJECT_DETECTIONS", + "links": [ + 220 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeObjectDetector" + }, + "widgets_values": [ + "video", + "cpu", + 0.5, + 5 + ] + }, + { + "id": 125, + "type": "MediaPipeImageEmbedder", + "pos": [ + 4141.470703125, + 627.309326171875 + ], + "size": [ + 342.5999755859375, + 150 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 221 + }, + { + "name": "model_info", + "type": "IMAGE_EMBEDDER_MODEL_INFO", + "link": 222 + } + ], + "outputs": [ + { + "name": "image_embeddings", + "type": "IMAGE_EMBEDDINGS", + "links": [ + 223 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeImageEmbedder" + }, + "widgets_values": [ + "video", + "cpu", + true, + false + ] + }, + { + "id": 126, + "type": "MediaPipeImageEmbedder", + "pos": [ + 4148.90234375, + 816.08251953125 + ], + "size": [ + 342.5999755859375, + 150 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 224 + }, + { + "name": "model_info", + "type": "IMAGE_EMBEDDER_MODEL_INFO", + "link": 225 + } + ], + "outputs": [ + { + "name": "image_embeddings", + "type": "IMAGE_EMBEDDINGS", + "links": [ + 226, + 227 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeImageEmbedder" + }, + "widgets_values": [ + "video", + "cpu", + true, + false + ] + }, + { + "id": 83, + "type": "MediaPipePoseLandmarkerModelLoader", + "pos": [ + 2943.3779296875, + -2776.290771484375 + ], + "size": [ + 478.8000183105469, + 58 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "POSE_LANDMARKER_MODEL_INFO", + "links": [ + 229 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipePoseLandmarkerModelLoader" + }, + "widgets_values": [ + "lite" + ] + }, + { + "id": 127, + "type": "MediaPipePoseLandmarker", + "pos": [ + 3474.68359375, + -2891.202880859375 + ], + "size": [ + 367.79998779296875, + 222 + ], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 228 + }, + { + "name": "model_info", + "type": "POSE_LANDMARKER_MODEL_INFO", + "link": 229 + } + ], + "outputs": [ + { + "name": "landmarks", + "type": "POSE_LANDMARKS", + "links": [ + 230, + 231, + 232, + 233, + 234 + ] + }, + { + "name": "segmentation_masks", + "type": "MASK_LIST", + "links": null + } + ], + "properties": { + "Node name for S&R": "MediaPipePoseLandmarker" + }, + "widgets_values": [ + "video", + "cpu", + 1, + 0.5, + 0.5, + 0.5, + false + ] + }, + { + "id": 109, + "type": "Display Any (rgthree)", + "pos": [ + 4972.6396484375, + 587.21630859375 + ], + "size": [ + 264.5999755859375, + 76 + ], + "flags": {}, + "order": 70, + "mode": 0, + "inputs": [ + { + "name": "source", + "type": "*", + "dir": 3, + "link": 130 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "Display Any (rgthree)" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 123, + "type": "MediaPipeImageSegmenter", + "pos": [ + 4109.8662109375, + -41.962646484375 + ], + "size": [ + 380.4000244140625, + 194 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 214 + }, + { + "name": "model_info", + "type": "IMAGE_SEGMENTER_MODEL_INFO", + "link": 215 + } + ], + "outputs": [ + { + "name": "mask", + "type": "MASK", + "links": null + }, + { + "name": "visualization", + "type": "IMAGE", + "links": [ + 216 + ] + }, + { + "name": "multiclass_segments", + "type": "MP_INT_MASK", + "links": [ + 217 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeImageSegmenter" + }, + "widgets_values": [ + "video", + false, + 0.5, + true, + "cpu" + ] + }, + { + "id": 39, + "type": "MediaPipeFaceStylizerModelLoader", + "pos": [ + 3394.4873046875, + -974.9320068359375 + ], + "size": [ + 453.5999755859375, + 58 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "FACE_STYLIZER_MODEL_INFO", + "links": [ + 58 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceStylizerModelLoader" + }, + "widgets_values": [ + "oil_painting" + ] + }, + { + "id": 49, + "type": "MediaPipeFaceStylizer", + "pos": [ + 3923.8837890625, + -1144.127685546875 + ], + "size": [ + 317.4000244140625, + 46 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 64 + }, + { + "name": "model_info", + "type": "FACE_STYLIZER_MODEL_INFO", + "link": 58 + } + ], + "outputs": [ + { + "name": "stylized_image", + "type": "IMAGE", + "links": [ + 65 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceStylizer" + }, + "widgets_values": [] + }, + { + "id": 60, + "type": "SelectMediaPipeSegment", + "pos": [ + 4172.90283203125, + 249.534423828125 + ], + "size": [ + 315, + 58 + ], + "flags": {}, + "order": 50, + "mode": 0, + "inputs": [ + { + "name": "multiclass_segments", + "type": "MP_INT_MASK", + "link": 217 + } + ], + "outputs": [ + { + "name": "mask", + "type": "MASK", + "links": [ + 78 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "SelectMediaPipeSegment" + }, + "widgets_values": [ + "Clothes" + ] + }, + { + "id": 65, + "type": "PreviewImage", + "pos": [ + 5144.09375, + 101.558349609375 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 77, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 79 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 41, + "type": "LoadImageFromPath_", + "pos": [ + -120, + -980 + ], + "size": [ + 365.4000244140625, + 78 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "name": "image_path", + "type": "STRING", + "widget": { + "name": "image_path" + }, + "link": 36 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 37, + 59, + 60, + 85, + 86, + 91, + 100, + 113 + ], + "slot_index": 0 + }, + { + "name": "MASK", + "type": "MASK", + "links": null + } + ], + "properties": { + "Node name for S&R": "LoadImageFromPath_" + }, + "widgets_values": [ + "" + ] + }, + { + "id": 34, + "type": "VisualizeFaceLandmarks", + "pos": [ + 1801.8282470703125, + -1981.50439453125 + ], + "size": [ + 453.5999755859375, + 198 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "landmarks", + "type": "FACE_LANDMARKS", + "link": 162 + }, + { + "name": "image", + "type": "IMAGE", + "link": 50 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 70 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "VisualizeFaceLandmarks" + }, + "widgets_values": [ + false, + "#FFFF00", + 1, + true, + "#00FF00", + 1 + ] + }, + { + "id": 113, + "type": "MediaPipeFaceLandmarker", + "pos": [ + 1321.041748046875, + -1996.5054931640625 + ], + "size": [ + 367.79998779296875, + 266 + ], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 156 + }, + { + "name": "model_info", + "type": "FACE_LANDMARKER_MODEL_INFO", + "link": 157 + } + ], + "outputs": [ + { + "name": "landmarks", + "type": "FACE_LANDMARKS", + "links": [ + 158, + 159, + 160, + 161, + 162 + ] + }, + { + "name": "blendshapes", + "type": "BLENDSHAPES_LIST", + "links": [ + 163, + 164, + 165 + ] + }, + { + "name": "transform_matrices", + "type": "TRANSFORM_MATRIX_LIST", + "links": [ + 166, + 167, + 168 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeFaceLandmarker" + }, + "widgets_values": [ + "video", + "cpu", + 1, + 0.5, + 0.5, + 0.5, + false, + false + ] + }, + { + "id": 35, + "type": "MaskFromFaceLandmarks", + "pos": [ + 1814.287353515625, + -1685.970458984375 + ], + "size": [ + 453.5999755859375, + 78 + ], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + { + "name": "face_landmarks", + "type": "FACE_LANDMARKS", + "link": 161 + }, + { + "name": "image_for_dimensions", + "type": "IMAGE", + "link": 155 + } + ], + "outputs": [ + { + "name": "MASK", + "type": "MASK", + "links": [ + 71 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskFromFaceLandmarks" + }, + "widgets_values": [ + "FACE_OVAL" + ] + }, + { + "id": 58, + "type": "PreviewImage", + "pos": [ + 2419.91796875, + -1674.52880859375 + ], + "size": [ + 210, + 246 + ], + "flags": {}, + "order": 75, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 72 + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 57, + "type": "MaskToImage", + "pos": [ + 1942.169677734375, + -1535.5372314453125 + ], + "size": [ + 264.5999755859375, + 26 + ], + "flags": {}, + "order": 62, + "mode": 0, + "inputs": [ + { + "name": "mask", + "type": "MASK", + "link": 71 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 72 + ], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "MaskToImage" + }, + "widgets_values": [] + }, + { + "id": 62, + "type": "MediaPipeImageSegmenterModelLoader", + "pos": [ + 3594.82177734375, + 248.67236328125 + ], + "size": [ + 478.8000183105469, + 58 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "model_info", + "type": "IMAGE_SEGMENTER_MODEL_INFO", + "links": [ + 215 + ] + } + ], + "properties": { + "Node name for S&R": "MediaPipeImageSegmenterModelLoader" + }, + "widgets_values": [ + "deeplab_v3" + ] + }, + { + "id": 66, + "type": "Note", + "pos": [ + -100.45005798339844, + -1177.2310791015625 + ], + "size": [ + 316.45147705078125, + 113.60551452636719 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "each group in this workflow simply showcases some of each of the mediapipe vision tasks\n\nthis entrypoint serves as a way to quickly cycle through test images\n\nthere are more nodes, too\n" + ], + "color": "#432", + "bgcolor": "#653" + } + ], + "links": [ + [ + 36, + 40, + 0, + 41, + 0, + "STRING" + ], + [ + 37, + 41, + 0, + 42, + 0, + "*" + ], + [ + 46, + 43, + 0, + 44, + 0, + "IMAGE" + ], + [ + 49, + 38, + 0, + 45, + 0, + "IMAGE" + ], + [ + 50, + 42, + 0, + 34, + 1, + "IMAGE" + ], + [ + 58, + 39, + 0, + 49, + 1, + "FACE_STYLIZER_MODEL_INFO" + ], + [ + 59, + 41, + 0, + 50, + 0, + "*" + ], + [ + 60, + 41, + 0, + 51, + 0, + "*" + ], + [ + 62, + 50, + 0, + 43, + 1, + "IMAGE" + ], + [ + 63, + 50, + 0, + 38, + 1, + "IMAGE" + ], + [ + 64, + 51, + 0, + 49, + 0, + "IMAGE" + ], + [ + 65, + 49, + 0, + 52, + 0, + "IMAGE" + ], + [ + 67, + 50, + 0, + 53, + 1, + "IMAGE" + ], + [ + 68, + 53, + 0, + 54, + 0, + "MASK" + ], + [ + 69, + 54, + 0, + 55, + 0, + "IMAGE" + ], + [ + 70, + 34, + 0, + 56, + 0, + "IMAGE" + ], + [ + 71, + 35, + 0, + 57, + 0, + "MASK" + ], + [ + 72, + 57, + 0, + 58, + 0, + "IMAGE" + ], + [ + 78, + 60, + 0, + 64, + 0, + "MASK" + ], + [ + 79, + 64, + 0, + 65, + 0, + "IMAGE" + ], + [ + 80, + 61, + 0, + 67, + 0, + "IMAGE" + ], + [ + 81, + 68, + 0, + 67, + 1, + "INTERACTIVE_SEGMENTER_MODEL_INFO" + ], + [ + 82, + 67, + 0, + 69, + 0, + "MASK" + ], + [ + 83, + 69, + 0, + 70, + 0, + "IMAGE" + ], + [ + 85, + 41, + 0, + 73, + 0, + "*" + ], + [ + 86, + 41, + 0, + 61, + 0, + "*" + ], + [ + 89, + 73, + 0, + 74, + 1, + "IMAGE" + ], + [ + 90, + 74, + 0, + 75, + 0, + "IMAGE" + ], + [ + 91, + 41, + 0, + 76, + 0, + "*" + ], + [ + 100, + 41, + 0, + 90, + 0, + "*" + ], + [ + 106, + 90, + 0, + 89, + 1, + "IMAGE" + ], + [ + 107, + 89, + 0, + 91, + 0, + "IMAGE" + ], + [ + 108, + 90, + 0, + 88, + 1, + "IMAGE" + ], + [ + 110, + 88, + 0, + 92, + 0, + "MASK" + ], + [ + 111, + 92, + 0, + 93, + 0, + "IMAGE" + ], + [ + 113, + 41, + 0, + 101, + 0, + "*" + ], + [ + 118, + 101, + 0, + 99, + 1, + "IMAGE" + ], + [ + 121, + 101, + 0, + 100, + 1, + "IMAGE" + ], + [ + 122, + 100, + 0, + 102, + 0, + "IMAGE" + ], + [ + 123, + 99, + 0, + 103, + 0, + "MASK" + ], + [ + 124, + 103, + 0, + 104, + 0, + "IMAGE" + ], + [ + 130, + 80, + 0, + 109, + 0, + "*" + ], + [ + 155, + 42, + 0, + 35, + 1, + "IMAGE" + ], + [ + 156, + 42, + 0, + 113, + 0, + "IMAGE" + ], + [ + 157, + 32, + 0, + 113, + 1, + "FACE_LANDMARKER_MODEL_INFO" + ], + [ + 158, + 113, + 0, + 29, + 0, + "FACE_LANDMARKS" + ], + [ + 159, + 113, + 0, + 30, + 0, + "FACE_LANDMARKS" + ], + [ + 160, + 113, + 0, + 31, + 0, + "FACE_LANDMARKS" + ], + [ + 161, + 113, + 0, + 35, + 0, + "FACE_LANDMARKS" + ], + [ + 162, + 113, + 0, + 34, + 0, + "FACE_LANDMARKS" + ], + [ + 163, + 113, + 1, + 28, + 0, + "BLENDSHAPES_LIST" + ], + [ + 164, + 113, + 1, + 27, + 0, + "BLENDSHAPES_LIST" + ], + [ + 165, + 113, + 1, + 26, + 0, + "BLENDSHAPES_LIST" + ], + [ + 166, + 113, + 2, + 46, + 0, + "TRANSFORM_MATRIX_LIST" + ], + [ + 167, + 113, + 2, + 47, + 0, + "TRANSFORM_MATRIX_LIST" + ], + [ + 168, + 113, + 2, + 48, + 0, + "TRANSFORM_MATRIX_LIST" + ], + [ + 202, + 50, + 0, + 121, + 0, + "IMAGE" + ], + [ + 203, + 37, + 0, + 121, + 1, + "FACE_DETECTOR_MODEL_INFO" + ], + [ + 204, + 121, + 0, + 43, + 0, + "FACE_DETECTIONS" + ], + [ + 205, + 121, + 0, + 38, + 0, + "FACE_DETECTIONS" + ], + [ + 206, + 121, + 0, + 53, + 0, + "FACE_DETECTIONS" + ], + [ + 207, + 101, + 0, + 122, + 0, + "IMAGE" + ], + [ + 208, + 94, + 0, + 122, + 1, + "HAND_LANDMARKER_MODEL_INFO" + ], + [ + 209, + 122, + 0, + 96, + 0, + "HAND_LANDMARKS" + ], + [ + 210, + 122, + 0, + 97, + 0, + "HAND_LANDMARKS" + ], + [ + 211, + 122, + 0, + 98, + 0, + "HAND_LANDMARKS" + ], + [ + 212, + 122, + 0, + 99, + 0, + "HAND_LANDMARKS" + ], + [ + 213, + 122, + 0, + 100, + 0, + "HAND_LANDMARKS" + ], + [ + 214, + 61, + 0, + 123, + 0, + "IMAGE" + ], + [ + 215, + 62, + 0, + 123, + 1, + "IMAGE_SEGMENTER_MODEL_INFO" + ], + [ + 216, + 123, + 1, + 63, + 0, + "IMAGE" + ], + [ + 217, + 123, + 2, + 60, + 0, + "MP_INT_MASK" + ], + [ + 218, + 73, + 0, + 124, + 0, + "IMAGE" + ], + [ + 219, + 71, + 0, + 124, + 1, + "OBJECT_DETECTOR_MODEL_INFO" + ], + [ + 220, + 124, + 0, + 74, + 0, + "OBJECT_DETECTIONS" + ], + [ + 221, + 76, + 0, + 125, + 0, + "IMAGE" + ], + [ + 222, + 78, + 0, + 125, + 1, + "IMAGE_EMBEDDER_MODEL_INFO" + ], + [ + 223, + 125, + 0, + 80, + 0, + "IMAGE_EMBEDDINGS" + ], + [ + 224, + 81, + 0, + 126, + 0, + "IMAGE" + ], + [ + 225, + 78, + 0, + 126, + 1, + "IMAGE_EMBEDDER_MODEL_INFO" + ], + [ + 226, + 126, + 0, + 80, + 1, + "IMAGE_EMBEDDINGS" + ], + [ + 227, + 126, + 0, + 82, + 0, + "IMAGE_EMBEDDINGS" + ], + [ + 228, + 90, + 0, + 127, + 0, + "IMAGE" + ], + [ + 229, + 83, + 0, + 127, + 1, + "POSE_LANDMARKER_MODEL_INFO" + ], + [ + 230, + 127, + 0, + 86, + 0, + "POSE_LANDMARKS" + ], + [ + 231, + 127, + 0, + 85, + 0, + "POSE_LANDMARKS" + ], + [ + 232, + 127, + 0, + 87, + 0, + "POSE_LANDMARKS" + ], + [ + 233, + 127, + 0, + 89, + 0, + "POSE_LANDMARKS" + ], + [ + 234, + 127, + 0, + 88, + 0, + "POSE_LANDMARKS" + ] + ], + "groups": [ + { + "id": 1, + "title": "Face Landmarks", + "bounding": [ + 1112.767578125, + -3058.08984375, + 1614.098876953125, + 1708.677001953125 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 2, + "title": "Face Detection", + "bounding": [ + 1128.9884033203125, + -322.09527587890625, + 2307.21630859375, + 801.5276489257812 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 3, + "title": "Face Stylize", + "bounding": [ + 3391.75732421875, + -1339.853515625, + 1798.9869384765625, + 622.46240234375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 4, + "title": "Segmentation", + "bounding": [ + 3587.64306640625, + -151.009765625, + 1760.5277099609375, + 580.0074462890625 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 5, + "title": "Interactive segment", + "bounding": [ + 3629.76806640625, + -627.390869140625, + 1717.811279296875, + 432.5592041015625 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 6, + "title": "Object detection", + "bounding": [ + 1161.28759765625, + 560.583984375, + 1891.02197265625, + 441.2040100097656 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 7, + "title": "Imagge embeddings", + "bounding": [ + 3274.877197265625, + 541.097412109375, + 1920.7506103515625, + 484.3106689453125 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 8, + "title": "Pose", + "bounding": [ + 2912.09228515625, + -3002.70556640625, + 2004.864013671875, + 1494.8070068359375 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + }, + { + "id": 9, + "title": "Hand", + "bounding": [ + 1118.06591796875, + -1320.0504150390625, + 2076.681640625, + 944.205322265625 + ], + "color": "#3f789e", + "font_size": 24, + "flags": {} + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.17715610000000037, + "offset": [ + 1753.5062116558781, + 3235.2171386537375 + ] + }, + "VHS_latentpreview": false, + "VHS_latentpreviewrate": 0, + "VHS_MetadataImage": true, + "VHS_KeepIntermediate": true + }, + "version": 0.4 +} \ No newline at end of file diff --git a/examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_JAW_CONTROL API.json b/examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_JAW_CONTROL API.json new file mode 100644 index 0000000..e3e0220 --- /dev/null +++ b/examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_JAW_CONTROL API.json @@ -0,0 +1,355 @@ +{ + "2": { + "inputs": { + "engine": "depth_anything_vitl14-fp16.engine", + "images": [ + "26", + 0 + ] + }, + "class_type": "DepthAnythingTensorrt", + "_meta": { + "title": "Depth Anything Tensorrt" + } + }, + "3": { + "inputs": { + "unet_name": "static-dreamshaper8_SD15_$stat-b-1-h-512-w-512_00001_.engine", + "model_type": "SD15" + }, + "class_type": "TensorRTLoader", + "_meta": { + "title": "TensorRT Loader" + } + }, + "5": { + "inputs": { + "text": "beautiful pencil sketch, masterpiece ", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "6": { + "inputs": { + "text": "", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "7": { + "inputs": { + "seed": 1015121320147877, + "steps": 2, + "cfg": 1, + "sampler_name": "lcm", + "scheduler": "normal", + "denoise": 1, + "model": [ + "41", + 0 + ], + "positive": [ + "9", + 0 + ], + "negative": [ + "9", + 1 + ], + "latent_image": [ + "16", + 0 + ] + }, + "class_type": "KSampler", + "_meta": { + "title": "KSampler" + } + }, + "8": { + "inputs": { + "control_net_name": "control_v11f1p_sd15_depth_fp16.safetensors" + }, + "class_type": "ControlNetLoader", + "_meta": { + "title": "Load ControlNet Model" + } + }, + "9": { + "inputs": { + "strength": 0.7000000000000002, + "start_percent": 0, + "end_percent": 1, + "positive": [ + "49", + 0 + ], + "negative": [ + "6", + 0 + ], + "control_net": [ + "10", + 0 + ], + "image": [ + "2", + 0 + ] + }, + "class_type": "ControlNetApplyAdvanced", + "_meta": { + "title": "Apply ControlNet" + } + }, + "10": { + "inputs": { + "backend": "inductor", + "fullgraph": false, + "mode": "reduce-overhead", + "controlnet": [ + "8", + 0 + ] + }, + "class_type": "TorchCompileLoadControlNet", + "_meta": { + "title": "TorchCompileLoadControlNet" + } + }, + "11": { + "inputs": { + "vae_name": "taesd" + }, + "class_type": "VAELoader", + "_meta": { + "title": "Load VAE" + } + }, + "13": { + "inputs": { + "backend": "inductor", + "fullgraph": true, + "mode": "reduce-overhead", + "compile_encoder": true, + "compile_decoder": true, + "vae": [ + "11", + 0 + ] + }, + "class_type": "TorchCompileLoadVAE", + "_meta": { + "title": "TorchCompileLoadVAE" + } + }, + "14": { + "inputs": { + "samples": [ + "7", + 0 + ], + "vae": [ + "13", + 0 + ] + }, + "class_type": "VAEDecode", + "_meta": { + "title": "VAE Decode" + } + }, + "15": { + "inputs": { + "images": [ + "14", + 0 + ] + }, + "class_type": "PreviewImage", + "_meta": { + "title": "Preview Image" + } + }, + "16": { + "inputs": { + "width": 512, + "height": 512, + "batch_size": 1 + }, + "class_type": "EmptyLatentImage", + "_meta": { + "title": "Empty Latent Image" + } + }, + "18": { + "inputs": { + "stop_at_clip_layer": -2, + "clip": [ + "36", + 0 + ] + }, + "class_type": "CLIPSetLastLayer", + "_meta": { + "title": "CLIP Set Last Layer" + } + }, + "20": { + "inputs": { + "control_net_name": "control_v2p_sd15_mediapipe_face.safetensors" + }, + "class_type": "ControlNetLoader", + "_meta": { + "title": "Load ControlNet Model" + } + }, + "21": { + "inputs": { + "backend": "inductor", + "fullgraph": false, + "mode": "reduce-overhead", + "controlnet": [ + "20", + 0 + ] + }, + "class_type": "TorchCompileLoadControlNet", + "_meta": { + "title": "TorchCompileLoadControlNet" + } + }, + "26": { + "inputs": { + "image": "harold.png" + }, + "class_type": "LoadImage", + "_meta": { + "title": "Load Image" + } + }, + "36": { + "inputs": { + "clip_name": "CLIPText/model.fp16.safetensors", + "type": "stable_diffusion", + "device": "default" + }, + "class_type": "CLIPLoader", + "_meta": { + "title": "Load CLIP" + } + }, + "41": { + "inputs": { + "use_feature_injection": false, + "feature_injection_strength": 0.8000000000000002, + "feature_similarity_threshold": 0.9800000000000002, + "feature_cache_interval": 4, + "feature_bank_max_frames": 4, + "model": [ + "3", + 0 + ] + }, + "class_type": "FeatureBankAttentionProcessor", + "_meta": { + "title": "Feature Bank Attention Processor" + } + }, + "42": { + "inputs": { + "running_mode": "video", + "delegate": "gpu", + "max_results": 1, + "min_confidence": 0.5, + "min_presence_confidence": 0.5, + "min_tracking_confidence": 1, + "output_blendshapes": "cpu", + "output_transform_matrix": false, + "image": [ + "26", + 0 + ], + "model_info": [ + "44", + 0 + ] + }, + "class_type": "MediaPipeFaceLandmarker", + "_meta": { + "title": "Face Landmarker (MediaPipe)" + } + }, + "44": { + "inputs": { + "model_variant": "default" + }, + "class_type": "MediaPipeFaceLandmarkerModelLoader", + "_meta": { + "title": "Load Face Landmarker Model (MediaPipe)" + } + }, + "48": { + "inputs": { + "blendshape_name": "jawOpen", + "score_min": 0, + "score_max": 1, + "output_min_float": 0, + "output_max_float": 1, + "clamp": true, + "blendshapes": [ + "42", + 1 + ] + }, + "class_type": "BlendshapeControlFloat", + "_meta": { + "title": "Blendshape Control (Float)" + } + }, + "49": { + "inputs": { + "conditioning_to_strength": [ + "48", + 0 + ], + "conditioning_to": [ + "5", + 0 + ], + "conditioning_from": [ + "50", + 0 + ] + }, + "class_type": "ConditioningAverage", + "_meta": { + "title": "ConditioningAverage" + } + }, + "50": { + "inputs": { + "text": "beautiful image of broccoli, everything is broccoli", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + } +} \ No newline at end of file diff --git a/examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_PITCH_CONTROL API.json b/examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_PITCH_CONTROL API.json new file mode 100644 index 0000000..c9927b3 --- /dev/null +++ b/examples/mediapipe_vision/sd15-multi-cnet-depthanything-face-api_PITCH_CONTROL API.json @@ -0,0 +1,325 @@ +{ + "2": { + "inputs": { + "engine": "depth_anything_vitl14-fp16.engine", + "images": [ + "26", + 0 + ] + }, + "class_type": "DepthAnythingTensorrt", + "_meta": { + "title": "Depth Anything Tensorrt" + } + }, + "3": { + "inputs": { + "unet_name": "static-dreamshaper8_SD15_$stat-b-1-h-512-w-512_00001_.engine", + "model_type": "SD15" + }, + "class_type": "TensorRTLoader", + "_meta": { + "title": "TensorRT Loader" + } + }, + "5": { + "inputs": { + "text": "beautiful pencil sketch, masterpiece ", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "6": { + "inputs": { + "text": "", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "7": { + "inputs": { + "seed": 1015121320147877, + "steps": 2, + "cfg": 1, + "sampler_name": "lcm", + "scheduler": "normal", + "denoise": 1, + "model": [ + "41", + 0 + ], + "positive": [ + "9", + 0 + ], + "negative": [ + "9", + 1 + ], + "latent_image": [ + "16", + 0 + ] + }, + "class_type": "KSampler", + "_meta": { + "title": "KSampler" + } + }, + "8": { + "inputs": { + "control_net_name": "control_v11f1p_sd15_depth_fp16.safetensors" + }, + "class_type": "ControlNetLoader", + "_meta": { + "title": "Load ControlNet Model" + } + }, + "9": { + "inputs": { + "strength": [ + "47", + 0 + ], + "start_percent": 0, + "end_percent": 1, + "positive": [ + "5", + 0 + ], + "negative": [ + "6", + 0 + ], + "control_net": [ + "10", + 0 + ], + "image": [ + "2", + 0 + ] + }, + "class_type": "ControlNetApplyAdvanced", + "_meta": { + "title": "Apply ControlNet" + } + }, + "10": { + "inputs": { + "backend": "inductor", + "fullgraph": false, + "mode": "reduce-overhead", + "controlnet": [ + "8", + 0 + ] + }, + "class_type": "TorchCompileLoadControlNet", + "_meta": { + "title": "TorchCompileLoadControlNet" + } + }, + "11": { + "inputs": { + "vae_name": "taesd" + }, + "class_type": "VAELoader", + "_meta": { + "title": "Load VAE" + } + }, + "13": { + "inputs": { + "backend": "inductor", + "fullgraph": true, + "mode": "reduce-overhead", + "compile_encoder": true, + "compile_decoder": true, + "vae": [ + "11", + 0 + ] + }, + "class_type": "TorchCompileLoadVAE", + "_meta": { + "title": "TorchCompileLoadVAE" + } + }, + "14": { + "inputs": { + "samples": [ + "7", + 0 + ], + "vae": [ + "13", + 0 + ] + }, + "class_type": "VAEDecode", + "_meta": { + "title": "VAE Decode" + } + }, + "15": { + "inputs": { + "images": [ + "14", + 0 + ] + }, + "class_type": "PreviewImage", + "_meta": { + "title": "Preview Image" + } + }, + "16": { + "inputs": { + "width": 512, + "height": 512, + "batch_size": 1 + }, + "class_type": "EmptyLatentImage", + "_meta": { + "title": "Empty Latent Image" + } + }, + "18": { + "inputs": { + "stop_at_clip_layer": -2, + "clip": [ + "36", + 0 + ] + }, + "class_type": "CLIPSetLastLayer", + "_meta": { + "title": "CLIP Set Last Layer" + } + }, + "20": { + "inputs": { + "control_net_name": "control_v2p_sd15_mediapipe_face.safetensors" + }, + "class_type": "ControlNetLoader", + "_meta": { + "title": "Load ControlNet Model" + } + }, + "21": { + "inputs": { + "backend": "inductor", + "fullgraph": false, + "mode": "reduce-overhead", + "controlnet": [ + "20", + 0 + ] + }, + "class_type": "TorchCompileLoadControlNet", + "_meta": { + "title": "TorchCompileLoadControlNet" + } + }, + "26": { + "inputs": { + "image": "harold.png" + }, + "class_type": "LoadImage", + "_meta": { + "title": "Load Image" + } + }, + "36": { + "inputs": { + "clip_name": "CLIPText/model.fp16.safetensors", + "type": "stable_diffusion", + "device": "default" + }, + "class_type": "CLIPLoader", + "_meta": { + "title": "Load CLIP" + } + }, + "41": { + "inputs": { + "use_feature_injection": false, + "feature_injection_strength": 0.8000000000000002, + "feature_similarity_threshold": 0.9800000000000002, + "feature_cache_interval": 4, + "feature_bank_max_frames": 4, + "model": [ + "3", + 0 + ] + }, + "class_type": "FeatureBankAttentionProcessor", + "_meta": { + "title": "Feature Bank Attention Processor" + } + }, + "42": { + "inputs": { + "running_mode": "video", + "delegate": "gpu", + "max_results": 1, + "min_confidence": 0.5, + "min_presence_confidence": 0.5, + "min_tracking_confidence": 1, + "output_blendshapes": "cpu", + "output_transform_matrix": true, + "image": [ + "26", + 0 + ], + "model_info": [ + "44", + 0 + ] + }, + "class_type": "MediaPipeFaceLandmarker", + "_meta": { + "title": "Face Landmarker (MediaPipe)" + } + }, + "44": { + "inputs": { + "model_variant": "default" + }, + "class_type": "MediaPipeFaceLandmarkerModelLoader", + "_meta": { + "title": "Load Face Landmarker Model (MediaPipe)" + } + }, + "47": { + "inputs": { + "component": "pitch", + "value_min": -60, + "value_max": 60, + "output_min_float": 0.30000000000000004, + "output_max_float": 1, + "clamp": true, + "face_transform_matrices": [ + "42", + 2 + ] + }, + "class_type": "HeadPoseControlFloat", + "_meta": { + "title": "Head Pose Control (Float)" + } + } +} \ No newline at end of file diff --git a/examples/mediapipe_vision/tempdelete.json b/examples/mediapipe_vision/tempdelete.json new file mode 100644 index 0000000..d05fabc --- /dev/null +++ b/examples/mediapipe_vision/tempdelete.json @@ -0,0 +1,271 @@ +{ + "2": { + "inputs": { + "engine": "depth_anything_vitl14-fp16.engine", + "images": [ + "26", + 0 + ] + }, + "class_type": "DepthAnythingTensorrt", + "_meta": { + "title": "Depth Anything Tensorrt" + } + }, + "3": { + "inputs": { + "unet_name": "static-dreamshaper8_SD15_$stat-b-1-h-512-w-512_00001_.engine", + "model_type": "SD15" + }, + "class_type": "TensorRTLoader", + "_meta": { + "title": "TensorRT Loader" + } + }, + "5": { + "inputs": { + "text": "beautiful pencil sketch, masterpiece ", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "6": { + "inputs": { + "text": "", + "clip": [ + "18", + 0 + ] + }, + "class_type": "CLIPTextEncode", + "_meta": { + "title": "CLIP Text Encode (Prompt)" + } + }, + "7": { + "inputs": { + "seed": 1015121320147877, + "steps": 2, + "cfg": 1, + "sampler_name": "lcm", + "scheduler": "normal", + "denoise": 1, + "model": [ + "41", + 0 + ], + "positive": [ + "9", + 0 + ], + "negative": [ + "9", + 1 + ], + "latent_image": [ + "16", + 0 + ] + }, + "class_type": "KSampler", + "_meta": { + "title": "KSampler" + } + }, + "8": { + "inputs": { + "control_net_name": "control_v11f1p_sd15_depth_fp16.safetensors" + }, + "class_type": "ControlNetLoader", + "_meta": { + "title": "Load ControlNet Model" + } + }, + "9": { + "inputs": { + "strength": 0.7000000000000002, + "start_percent": 0, + "end_percent": 1, + "positive": [ + "5", + 0 + ], + "negative": [ + "6", + 0 + ], + "control_net": [ + "10", + 0 + ], + "image": [ + "2", + 0 + ] + }, + "class_type": "ControlNetApplyAdvanced", + "_meta": { + "title": "Apply ControlNet" + } + }, + "10": { + "inputs": { + "backend": "inductor", + "fullgraph": false, + "mode": "reduce-overhead", + "controlnet": [ + "8", + 0 + ] + }, + "class_type": "TorchCompileLoadControlNet", + "_meta": { + "title": "TorchCompileLoadControlNet" + } + }, + "11": { + "inputs": { + "vae_name": "taesd" + }, + "class_type": "VAELoader", + "_meta": { + "title": "Load VAE" + } + }, + "13": { + "inputs": { + "backend": "inductor", + "fullgraph": true, + "mode": "reduce-overhead", + "compile_encoder": true, + "compile_decoder": true, + "vae": [ + "11", + 0 + ] + }, + "class_type": "TorchCompileLoadVAE", + "_meta": { + "title": "TorchCompileLoadVAE" + } + }, + "14": { + "inputs": { + "samples": [ + "7", + 0 + ], + "vae": [ + "13", + 0 + ] + }, + "class_type": "VAEDecode", + "_meta": { + "title": "VAE Decode" + } + }, + "15": { + "inputs": { + "images": [ + "14", + 0 + ] + }, + "class_type": "PreviewImage", + "_meta": { + "title": "Preview Image" + } + }, + "16": { + "inputs": { + "width": 512, + "height": 512, + "batch_size": 1 + }, + "class_type": "EmptyLatentImage", + "_meta": { + "title": "Empty Latent Image" + } + }, + "18": { + "inputs": { + "stop_at_clip_layer": -2, + "clip": [ + "36", + 0 + ] + }, + "class_type": "CLIPSetLastLayer", + "_meta": { + "title": "CLIP Set Last Layer" + } + }, + "20": { + "inputs": { + "control_net_name": "control_v2p_sd15_mediapipe_face.safetensors" + }, + "class_type": "ControlNetLoader", + "_meta": { + "title": "Load ControlNet Model" + } + }, + "21": { + "inputs": { + "backend": "inductor", + "fullgraph": false, + "mode": "reduce-overhead", + "controlnet": [ + "20", + 0 + ] + }, + "class_type": "TorchCompileLoadControlNet", + "_meta": { + "title": "TorchCompileLoadControlNet" + } + }, + "26": { + "inputs": { + "image": "harold.png" + }, + "class_type": "LoadImage", + "_meta": { + "title": "Load Image" + } + }, + "36": { + "inputs": { + "clip_name": "CLIPText/model.fp16.safetensors", + "type": "stable_diffusion", + "device": "default" + }, + "class_type": "CLIPLoader", + "_meta": { + "title": "Load CLIP" + } + }, + "41": { + "inputs": { + "use_feature_injection": false, + "feature_injection_strength": 0.8000000000000002, + "feature_similarity_threshold": 0.9800000000000002, + "feature_cache_interval": 4, + "feature_bank_max_frames": 4, + "model": [ + "3", + 0 + ] + }, + "class_type": "FeatureBankAttentionProcessor", + "_meta": { + "title": "Feature Bank Attention Processor" + } + } +} \ No newline at end of file From 776b2b394edb6147614de6bcc397d1a68f129058 Mon Sep 17 00:00:00 2001 From: RyanOnTheInside <7623207+ryanontheinside@users.noreply.github.com> Date: Sat, 19 Apr 2025 16:10:59 -0400 Subject: [PATCH 3/3] pyproj --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7c07091..c7dc8e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui_realtimenodes" description = "These nodes are for real-time applications of ComfyUI." -version = "1.2.1" +version = "1.3.0" license = {file = "LICENSE"} dependencies = ["opencv-python"]