Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b61465c06f | ||
|
|
55dd4ccef5 | ||
|
|
4401965637 | ||
|
|
d22e2fa534 | ||
|
|
8ad54e5e4f |
+1
-1
@@ -8,7 +8,7 @@
|
||||
import importlib
|
||||
import logging
|
||||
|
||||
version_code = [1, 2]
|
||||
version_code = [1, 2, 4]
|
||||
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
||||
logging.info(f"### Loading: ComfyUI-Impact-Subpack ({version_str})")
|
||||
|
||||
|
||||
+35
-6
@@ -37,6 +37,18 @@ def create_segmasks(results):
|
||||
return results
|
||||
|
||||
|
||||
# Limit the commands that can be executed through `getattr` to `ultralytics.nn.modules.head.Detect.forward`.
|
||||
def restricted_getattr(obj, name, *args):
|
||||
if name != "forward":
|
||||
logging.error(f"Access to potentially dangerous attribute '{obj.__module__}.{obj.__name__}.{name}' is blocked.\nIf you believe the use of this code is genuinely safe, please report it.\nhttps://github.com/ltdrdata/ComfyUI-Impact-Subpack/issues")
|
||||
raise RuntimeError(f"Access to potentially dangerous attribute '{obj.__module__}.{obj.__name__}.{name}' is blocked.")
|
||||
|
||||
return getattr(obj, name, *args)
|
||||
|
||||
restricted_getattr.__module__ = 'builtins'
|
||||
restricted_getattr.__name__ = 'getattr'
|
||||
|
||||
|
||||
try:
|
||||
from ultralytics import YOLO
|
||||
from ultralytics.nn.tasks import DetectionModel
|
||||
@@ -49,8 +61,13 @@ try:
|
||||
import ultralytics.utils.loss as loss_modules
|
||||
import dill._dill
|
||||
from numpy.core.multiarray import scalar
|
||||
from numpy import dtype
|
||||
from numpy.dtypes import Float64DType
|
||||
try:
|
||||
from numpy import dtype
|
||||
from numpy.dtypes import Float64DType
|
||||
except:
|
||||
logging.error("[Impact Subpack] installed 'numpy' is outdated. Please update 'numpy' to 1.26.4")
|
||||
raise Exception("[Impact Subpack] installed 'numpy' is outdated. Please update 'numpy' to 1.26.4")
|
||||
|
||||
|
||||
torch_whitelist = []
|
||||
|
||||
@@ -108,7 +125,7 @@ try:
|
||||
|
||||
torch_whitelist += [DetectionModel, aliasYOLOv10DetectionModel, SegmentationModel, IterableSimpleNamespace,
|
||||
aliasIterableSimpleNamespace, TaskAlignedAssigner, aliasTaskAlignedAssigner, aliasv10DetectLoss,
|
||||
getattr, dill._dill._load_type, scalar, dtype, Float64DType]
|
||||
restricted_getattr, dill._dill._load_type, scalar, dtype, Float64DType]
|
||||
|
||||
build_torch_whitelist()
|
||||
|
||||
@@ -120,18 +137,30 @@ except Exception as e:
|
||||
# HOTFIX: https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/754
|
||||
# importing YOLO breaking original torch.load capabilities
|
||||
def torch_wrapper(*args, **kwargs):
|
||||
return orig_torch_load(*args, **kwargs)
|
||||
if hasattr(torch.serialization, 'safe_globals'):
|
||||
return orig_torch_load(*args, **kwargs)
|
||||
else:
|
||||
logging.warning("[Impact Subpack] Your torch version is outdated, and security features cannot be applied properly.")
|
||||
kwargs['weights_only'] = False
|
||||
return orig_torch_load(*args, **kwargs)
|
||||
|
||||
torch.load = torch_wrapper
|
||||
|
||||
|
||||
def load_yolo(model_path: str):
|
||||
# https://github.com/comfyanonymous/ComfyUI/issues/5516#issuecomment-2466152838
|
||||
with torch.serialization.safe_globals(torch_whitelist):
|
||||
if hasattr(torch.serialization, 'safe_globals'):
|
||||
with torch.serialization.safe_globals(torch_whitelist):
|
||||
try:
|
||||
return YOLO(model_path)
|
||||
except ModuleNotFoundError:
|
||||
# https://github.com/ultralytics/ultralytics/issues/3856
|
||||
YOLO("yolov8n.pt")
|
||||
return YOLO(model_path)
|
||||
else:
|
||||
try:
|
||||
return YOLO(model_path)
|
||||
except ModuleNotFoundError:
|
||||
# https://github.com/ultralytics/ultralytics/issues/3856
|
||||
YOLO("yolov8n.pt")
|
||||
return YOLO(model_path)
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "comfyui-impact-subpack"
|
||||
description = "This node pack provides nodes that complement the Impact Pack, such as the UltralyticsDetectorProvider."
|
||||
version = "1.2"
|
||||
version = "1.2.4"
|
||||
license = { file = "LICENSE.txt" }
|
||||
dependencies = ["matplotlib", "ultralytics==8.3.40"]
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
matplotlib
|
||||
ultralytics==8.3.40
|
||||
numpy<2
|
||||
numpy==1.26.4
|
||||
opencv-python-headless
|
||||
Reference in New Issue
Block a user