diff --git a/nodes.py b/nodes.py index 4dc5e6e..b16ce06 100644 --- a/nodes.py +++ b/nodes.py @@ -32,6 +32,20 @@ def convert_dtype(dtype_str): script_directory = os.path.dirname(os.path.abspath(__file__)) +class OpenCLIPVisionSelect: + @classmethod + def INPUT_TYPES(s): + return {"required": { "clip_name": (folder_paths.get_filename_list("clip_vision"), ), + }} + RETURN_TYPES = ("OPENCLIPVISIONPATH",) + FUNCTION = "getpath" + + CATEGORY = "DynamiCrafterWrapper" + + def getpath(self, clip_name): + clip_path = folder_paths.get_full_path("clip_vision", clip_name) + return (clip_path,) + class DynamiCrafterModelLoader: @classmethod def INPUT_TYPES(s): @@ -48,6 +62,9 @@ class DynamiCrafterModelLoader: }), "fp8_unet": ("BOOLEAN", {"default": False}), }, + "optional": { + "opt_openclippath": ("OPENCLIPVISIONPATH",) + } } RETURN_TYPES = ("DCMODEL",) @@ -55,7 +72,7 @@ class DynamiCrafterModelLoader: FUNCTION = "loadmodel" CATEGORY = "DynamiCrafterWrapper" - def loadmodel(self, dtype, ckpt_name, fp8_unet=False): + def loadmodel(self, dtype, ckpt_name, fp8_unet=False, opt_openclippath=None): mm.soft_empty_cache() custom_config = { 'dtype': dtype, @@ -77,8 +94,14 @@ class DynamiCrafterModelLoader: else: print(f"No matching config for model: {ckpt_name}") config = OmegaConf.load(config_file) + + if opt_openclippath is not None: + print("Using open clip from: ", opt_openclippath) + config.model.params.cond_stage_config.params.version = opt_openclippath + config.model.params.img_cond_stage_config.params.version = opt_openclippath + model_config = config.pop("model", OmegaConf.create()) - model_config['params']['unet_config']['params']['use_checkpoint']=False + model_config['params']['unet_config']['params']['use_checkpoint']=False self.model = instantiate_from_config(model_config) self.model = load_model_checkpoint(self.model, model_path) self.model.eval() @@ -97,7 +120,6 @@ class DynamiCrafterModelLoader: if fp8_unet: self.model.model.diffusion_model = self.model.model.diffusion_model.to(torch.float8_e4m3fn) print(f"Model using dtype: {self.model.dtype}") - print(self.model) return (self.model,) class DynamiCrafterI2V: @@ -506,11 +528,13 @@ class DynamiCrafterBatchInterpolation: NODE_CLASS_MAPPINGS = { "DynamiCrafterI2V": DynamiCrafterI2V, "DynamiCrafterModelLoader": DynamiCrafterModelLoader, - "DynamiCrafterBatchInterpolation": DynamiCrafterBatchInterpolation + "DynamiCrafterBatchInterpolation": DynamiCrafterBatchInterpolation, + "OpenCLIPVisionSelect": OpenCLIPVisionSelect } NODE_DISPLAY_NAME_MAPPINGS = { "DynamiCrafterI2V": "DynamiCrafterI2V", "DynamiCrafterModelLoader": "DynamiCrafterModelLoader", - "DynamiCrafterBatchInterpolation": "DynamiCrafterBatchInterpolation" + "DynamiCrafterBatchInterpolation": "DynamiCrafterBatchInterpolation", + "OpenCLIPVisionSelect": "OpenCLIPVisionSelect" }