Team Ai
Apppublic

hugging-apps/echo-memory

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
processors.py63 linesDownload Raw Back to controlnets
1from typing_extensions import Literal, TypeAlias2 3 4Processor_id: TypeAlias = Literal[5    "canny", "depth", "softedge", "lineart", "lineart_anime", "openpose", "normal", "tile", "none", "inpaint"6]7 8class Annotator:9    def __init__(self, processor_id: Processor_id, model_path="models/Annotators", detect_resolution=None, device='cuda', skip_processor=False):10        if not skip_processor:11            if processor_id == "canny":12                from controlnet_aux.processor import CannyDetector13                self.processor = CannyDetector()14            elif processor_id == "depth":15                from controlnet_aux.processor import MidasDetector16                self.processor = MidasDetector.from_pretrained(model_path).to(device)17            elif processor_id == "softedge":18                from controlnet_aux.processor import HEDdetector19                self.processor = HEDdetector.from_pretrained(model_path).to(device)20            elif processor_id == "lineart":21                from controlnet_aux.processor import LineartDetector22                self.processor = LineartDetector.from_pretrained(model_path).to(device)23            elif processor_id == "lineart_anime":24                from controlnet_aux.processor import LineartAnimeDetector25                self.processor = LineartAnimeDetector.from_pretrained(model_path).to(device)26            elif processor_id == "openpose":27                from controlnet_aux.processor import OpenposeDetector28                self.processor = OpenposeDetector.from_pretrained(model_path).to(device)29            elif processor_id == "normal":30                from controlnet_aux.processor import NormalBaeDetector31                self.processor = NormalBaeDetector.from_pretrained(model_path).to(device)32            elif processor_id == "tile" or processor_id == "none" or processor_id == "inpaint":33                self.processor = None34            else:35                raise ValueError(f"Unsupported processor_id: {processor_id}")36        else:37            self.processor = None38 39        self.processor_id = processor_id40        self.detect_resolution = detect_resolution41    42    def to(self,device):43        if hasattr(self.processor,"model") and hasattr(self.processor.model,"to"):44 45            self.processor.model.to(device)46 47    def __call__(self, image, mask=None):48        width, height = image.size49        if self.processor_id == "openpose":50            kwargs = {51                "include_body": True,52                "include_hand": True,53                "include_face": True54            }55        else:56            kwargs = {}57        if self.processor is not None:58            detect_resolution = self.detect_resolution if self.detect_resolution is not None else min(width, height)59            image = self.processor(image, detect_resolution=detect_resolution, image_resolution=min(width, height), **kwargs)60        image = image.resize((width, height))61        return image62 63