| import os | |
| import folder_paths | |
| from . import subcore | |
| from . import utils | |
| import logging | |
| def update_model_paths(model_path): | |
| utils.add_folder_path_and_extensions("ultralytics_bbox", [os.path.join(model_path, "ultralytics", "bbox")], folder_paths.supported_pt_extensions) | |
| utils.add_folder_path_and_extensions("ultralytics_segm", [os.path.join(model_path, "ultralytics", "segm")], folder_paths.supported_pt_extensions) | |
| utils.add_folder_path_and_extensions("ultralytics", [os.path.join(model_path, "ultralytics")], folder_paths.supported_pt_extensions) | |
| logging.info(f'[Impact Subpack] ultralytics_bbox: {", ".join(folder_paths.folder_names_and_paths["ultralytics_bbox"][0])}') | |
| logging.info(f'[Impact Subpack] ultralytics_segm: {", ".join(folder_paths.folder_names_and_paths["ultralytics_segm"][0])}') | |
| update_model_paths(folder_paths.models_dir) | |
| if 'download_model_base' in folder_paths.folder_names_and_paths: | |
| update_model_paths(folder_paths.get_folder_paths('download_model_base')[0]) | |
| class UltralyticsDetectorProvider: | |
| def INPUT_TYPES(s): | |
| bboxs = ["bbox/"+x for x in folder_paths.get_filename_list("ultralytics_bbox")] | |
| segms = ["segm/"+x for x in folder_paths.get_filename_list("ultralytics_segm")] | |
| return {"required": {"model_name": (bboxs + segms, )}} | |
| RETURN_TYPES = ("BBOX_DETECTOR", "SEGM_DETECTOR") | |
| FUNCTION = "doit" | |
| CATEGORY = "ImpactPack" | |
| def doit(self, model_name): | |
| model_path = folder_paths.get_full_path("ultralytics", model_name) | |
| if model_path is None: | |
| if model_name.startswith('bbox/'): | |
| model_path = folder_paths.get_full_path("ultralytics_bbox", model_name[5:]) | |
| elif model_name.startswith('segm/'): | |
| model_path = folder_paths.get_full_path("ultralytics_segm", model_name[5:]) | |
| if model_path is None: | |
| logging.error(f"[Impact Subpack] model file '{model_name}' is not found in one of the following directories:") | |
| cands = [] | |
| cands.extend(folder_paths.get_folder_paths("ultralytics")) | |
| if model_name.startswith('bbox/'): | |
| cands.extend(folder_paths.get_folder_paths("ultralytics_bbox")) | |
| elif model_name.startswith('segm/'): | |
| cands.extend(folder_paths.get_folder_paths("ultralytics_segm")) | |
| formatted_cands = "\n\t".join(cands) | |
| logging.error(f'\t{formatted_cands}\n') | |
| raise ValueError(f"[Impact Subpack] model file '{model_name}' is not found.") | |
| model = subcore.load_yolo(model_path) | |
| if model_name.startswith("bbox"): | |
| return subcore.UltraBBoxDetector(model), subcore.NO_SEGM_DETECTOR() | |
| else: | |
| return subcore.UltraBBoxDetector(model), subcore.UltraSegmDetector(model) | |
| NODE_CLASS_MAPPINGS = { | |
| "UltralyticsDetectorProvider": UltralyticsDetectorProvider | |
| } | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| } | |
Xet Storage Details
- Size:
- 2.95 kB
- Xet hash:
- 2545572d0506972e8a6a9830b790dab86a665ebe526cc3fa012eb877586b9596
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.