from ..utils import common_annotator_call, define_preprocessor_inputs, INPUT import comfy.model_management as model_management class Depth_Anything_Preprocessor: @classmethod def INPUT_TYPES(s): return define_preprocessor_inputs( ckpt_name=INPUT.COMBO( ["depth_anything_vitl14.pth", "depth_anything_vitb14.pth", "depth_anything_vits14.pth"] ), resolution=INPUT.RESOLUTION() ) RETURN_TYPES = ("IMAGE",) FUNCTION = "execute" CATEGORY = "ControlNet Preprocessors/Normal and Depth Estimators" def execute(self, image, ckpt_name="depth_anything_vitl14.pth", resolution=512, **kwargs): from custom_controlnet_aux.depth_anything import DepthAnythingDetector model = DepthAnythingDetector.from_pretrained(filename=ckpt_name).to(model_management.get_torch_device()) out = common_annotator_call(model, image, resolution=resolution) del model return (out, ) class Zoe_Depth_Anything_Preprocessor: @classmethod def INPUT_TYPES(s): return define_preprocessor_inputs( environment=INPUT.COMBO(["indoor", "outdoor"]), resolution=INPUT.RESOLUTION() ) RETURN_TYPES = ("IMAGE",) FUNCTION = "execute" CATEGORY = "ControlNet Preprocessors/Normal and Depth Estimators" def execute(self, image, environment="indoor", resolution=512, **kwargs): from custom_controlnet_aux.zoe import ZoeDepthAnythingDetector ckpt_name = "depth_anything_metric_depth_indoor.pt" if environment == "indoor" else "depth_anything_metric_depth_outdoor.pt" model = ZoeDepthAnythingDetector.from_pretrained(filename=ckpt_name).to(model_management.get_torch_device()) out = common_annotator_call(model, image, resolution=resolution) del model return (out, ) NODE_CLASS_MAPPINGS = { "DepthAnythingPreprocessor": Depth_Anything_Preprocessor, "Zoe_DepthAnythingPreprocessor": Zoe_Depth_Anything_Preprocessor } NODE_DISPLAY_NAME_MAPPINGS = { "DepthAnythingPreprocessor": "Depth Anything", "Zoe_DepthAnythingPreprocessor": "Zoe Depth Anything" }