(self, model, preset, lora_strength=0.0, provider="CPU", ipadapter=None)
| 566 | CATEGORY = "ipadapter" |
| 567 | |
| 568 | def load_models(self, model, preset, lora_strength=0.0, provider="CPU", ipadapter=None): |
| 569 | pipeline = { "clipvision": { 'file': None, 'model': None }, "ipadapter": { 'file': None, 'model': None }, "insightface": { 'provider': None, 'model': None } } |
| 570 | if ipadapter is not None: |
| 571 | pipeline = ipadapter |
| 572 | |
| 573 | if 'insightface' not in pipeline: |
| 574 | pipeline['insightface'] = { 'provider': None, 'model': None } |
| 575 | |
| 576 | if 'ipadapter' not in pipeline: |
| 577 | pipeline['ipadapter'] = { 'file': None, 'model': None } |
| 578 | |
| 579 | if 'clipvision' not in pipeline: |
| 580 | pipeline['clipvision'] = { 'file': None, 'model': None } |
| 581 | |
| 582 | # 1. Load the clipvision model |
| 583 | clipvision_file = get_clipvision_file(preset) |
| 584 | if clipvision_file is None: |
| 585 | raise Exception("ClipVision model not found.") |
| 586 | |
| 587 | if clipvision_file != self.clipvision['file']: |
| 588 | if clipvision_file != pipeline['clipvision']['file']: |
| 589 | self.clipvision['file'] = clipvision_file |
| 590 | self.clipvision['model'] = load_clip_vision(clipvision_file) |
| 591 | print(f"\033[33mINFO: Clip Vision model loaded from {clipvision_file}\033[0m") |
| 592 | else: |
| 593 | self.clipvision = pipeline['clipvision'] |
| 594 | |
| 595 | # 2. Load the ipadapter model |
| 596 | is_sdxl = isinstance(model.model, (comfy.model_base.SDXL, comfy.model_base.SDXLRefiner, comfy.model_base.SDXL_instructpix2pix)) |
| 597 | ipadapter_file, is_insightface, lora_pattern = get_ipadapter_file(preset, is_sdxl) |
| 598 | if ipadapter_file is None: |
| 599 | raise Exception("IPAdapter model not found.") |
| 600 | |
| 601 | if ipadapter_file != self.ipadapter['file']: |
| 602 | if pipeline['ipadapter']['file'] != ipadapter_file: |
| 603 | self.ipadapter['file'] = ipadapter_file |
| 604 | self.ipadapter['model'] = ipadapter_model_loader(ipadapter_file) |
| 605 | print(f"\033[33mINFO: IPAdapter model loaded from {ipadapter_file}\033[0m") |
| 606 | else: |
| 607 | self.ipadapter = pipeline['ipadapter'] |
| 608 | |
| 609 | # 3. Load the lora model if needed |
| 610 | if lora_pattern is not None: |
| 611 | lora_file = get_lora_file(lora_pattern) |
| 612 | lora_model = None |
| 613 | if lora_file is None: |
| 614 | raise Exception("LoRA model not found.") |
| 615 | |
| 616 | if self.lora is not None: |
| 617 | if lora_file == self.lora['file']: |
| 618 | lora_model = self.lora['model'] |
| 619 | else: |
| 620 | self.lora = None |
| 621 | torch.cuda.empty_cache() |
| 622 | |
| 623 | if lora_model is None: |
| 624 | lora_model = comfy.utils.load_torch_file(lora_file, safe_load=True) |
| 625 | self.lora = { 'file': lora_file, 'model': lora_model } |
nothing calls this directly
no test coverage detected