diff --git a/modules/api/process.py b/modules/api/process.py index dcb3b6487..f50d58381 100644 --- a/modules/api/process.py +++ b/modules/api/process.py @@ -113,10 +113,9 @@ class APIProcess(): images = [] scores = [] with self.queue_lock: - yolo.load() - faces = yolo.predict(image) + faces = yolo.predict('face-yolo8n', image) for face in faces: - images.append(encode_pil_to_base64(face.face)) + images.append(encode_pil_to_base64(face.item)) scores.append(face.score) shared.state.end(api=False) return ResFace(images=images, scores=scores) diff --git a/modules/ipadapter.py b/modules/ipadapter.py index 0a010c41c..4b67b9bb4 100644 --- a/modules/ipadapter.py +++ b/modules/ipadapter.py @@ -36,6 +36,7 @@ ADAPTERS_SDXL = { 'Ostris Composition ViT-H SDXL': { 'name': 'ip_plus_composition_sdxl.safetensors', 'repo': 'ostris/ip-composition-adapter', 'subfolder': '' }, } ADAPTERS = { **ADAPTERS_SD15, **ADAPTERS_SDXL } +ADAPTERS_ALL = { **ADAPTERS_SD15, **ADAPTERS_SDXL } def get_adapters(): @@ -101,13 +102,12 @@ def crop_images(images, crops): try: for i in range(len(images)): if crops[i]: - from shared import yolo # pylint: disable=no-name-in-module - yolo.load() + from modules.shared import yolo # pylint: disable=no-name-in-module cropped = [] for image in images[i]: - faces = yolo.predict(image) + faces = yolo.predict('face-yolo8n', image) if len(faces) > 0: - cropped.append(faces[0].face) + cropped.append(faces[0].item) if len(cropped) == len(images[i]): images[i] = cropped else: @@ -135,7 +135,7 @@ def apply(pipe, p: processing.StableDiffusionProcessing, adapter_names=[], adapt if hasattr(p, 'ip_adapter_names'): if isinstance(p.ip_adapter_names, str): p.ip_adapter_names = [p.ip_adapter_names] - adapters = [ADAPTERS.get(adapter_name, None) for adapter_name in p.ip_adapter_names if adapter_name is not None and adapter_name.lower() != 'none'] + adapters = [ADAPTERS_ALL.get(adapter_name, None) for adapter_name in p.ip_adapter_names if adapter_name is not None and adapter_name.lower() != 'none'] adapter_names = p.ip_adapter_names else: if isinstance(adapter_names, str): diff --git a/modules/postprocess/yolo.py b/modules/postprocess/yolo.py index 44f72237e..37944ac7c 100644 --- a/modules/postprocess/yolo.py +++ b/modules/postprocess/yolo.py @@ -78,6 +78,10 @@ class YoloRestorer(Detailer): ) -> list[YoloResult]: result = [] + if isinstance(model, str): + model = self.models.get(model, None) + if model is None: + _, model = self.load(model) if model is None: return result args = { @@ -138,6 +142,7 @@ class YoloRestorer(Detailer): def load(self, model_name: str = None): from modules import modelloader + model = None self.dependencies() if model_name is None: model_name = list(self.list)[0] @@ -158,7 +163,7 @@ class YoloRestorer(Detailer): return model_name, model except Exception as e: shared.log.error(f'Load: type=Detailer name="{model_name}" error="{e}"') - return None + return None, None def restore(self, np_image, p: processing.StableDiffusionProcessing = None): if hasattr(p, 'recursion'):