# Add import at the top from models.wrappers.matanyone_wrapper import MatAnyOneWrapper # In your __init__ method, initialize MatAnyone def __init__(self, ...): # ... existing SAM2 initialization ... # Add MatAnyone initialization if self.use_matanyone: from matanyone.inference_core import InferenceCore # Or wherever it's located matanyone_core = InferenceCore(...) # Initialize with your config self.matanyone = MatAnyOneWrapper(matanyone_core, device=self.device) # In your process_frame or segment_frame method def process_frame(self, frame, ...): # ... existing SAM2 processing ... # Add MatAnyone refinement after SAM2 if self.use_matanyone and sam2_mask is not None: # Convert SAM2 output to tensor if needed mask_tensor = self._prepare_mask_tensor(sam2_mask) image_tensor = self._prepare_image_tensor(frame) # Load component masks if available components = None if self.component_paths: components = { 'hair': self._load_component('hair', frame_idx), 'edge': self._load_component('edge', frame_idx), # ... other components } # Refine with MatAnyone refined_mask = self.matanyone.step( image_tensor, mask_tensor, components=components ) # Convert back to numpy if needed final_mask = refined_mask.cpu().numpy().squeeze()