diff --git a/CHANGELOG.md b/CHANGELOG.md index 67d38df12..1df6a537c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log for SD.Next -## Update for 2024-06-01 +## Update for 2024-06-02 - fix textual inversion loading - fix gallery mtime display @@ -14,9 +14,10 @@ - workaround for scale-by when using modernui - lock torch-directml version - improve xformers installer -- improve ultralytics installer -- improve triton installer -- improve insightface installer +- improve ultralytics installer (face-hires) +- improve triton installer (compile) +- improve insightface installer (faceip) +- improve mim installer (dwpose) - add dpm++ 1s and dpm++ 3m aliases for dpm++ 2m scheduler with different orders ## Update for 2024-05-28 diff --git a/installer.py b/installer.py index 4c268cac8..88f50e5d4 100644 --- a/installer.py +++ b/installer.py @@ -252,13 +252,14 @@ def pip(arg: str, ignore: bool = False, quiet: bool = False): # install package using pip if not already installed @lru_cache() -def install(package, friendly: str = None, ignore: bool = False, reinstall: bool = False): +def install(package, friendly: str = None, ignore: bool = False, reinstall: bool = False, no_deps: bool = False): res = '' if args.reinstall or args.upgrade: global quick_allowed # pylint: disable=global-statement quick_allowed = False if args.reinstall or reinstall or not installed(package, friendly, quiet=False): - res = pip(f"install --upgrade {package}", ignore=ignore) + deps = '' if not no_deps else '--no-deps' + res = pip(f"install --upgrade {deps} {package}", ignore=ignore) try: import imp # pylint: disable=deprecated-module imp.reload(pkg_resources) diff --git a/modules/control/proc/dwpose/__init__.py b/modules/control/proc/dwpose/__init__.py index 45039e920..4ae62c133 100644 --- a/modules/control/proc/dwpose/__init__.py +++ b/modules/control/proc/dwpose/__init__.py @@ -9,6 +9,7 @@ os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" import cv2 import numpy as np from PIL import Image +from installer import installed, install, log from modules.control.util import HWC3, resize_image from .draw import draw_bodypose, draw_handpose, draw_facepose checked_ok = False @@ -16,11 +17,17 @@ checked_ok = False def check_dependencies(): global checked_ok # pylint: disable=global-statement - from installer import installed, install, log - packages = [('openmim', 'openmim'), ('mmengine', 'mmengine'), ('mmcv', 'mmcv'), ('mmpose', 'mmpose'), ('mmdet', 'mmdet')] + packages = [ + ('openmim==0.3.9', 'openmim'), + ('mmengine==0.10.4', 'mmengine'), + ('mmcv==2.1.0', 'mmcv'), + ('mmpose==1.3.1', 'mmpose'), + ('mmdet==3.3.0', 'mmdet'), + ] + packages = [] for pkg in packages: if not installed(pkg[1], reload=True, quiet=True): - install(pkg[0], pkg[1], ignore=False) + install(pkg[0], pkg[1], ignore=False, no_deps=True) try: import mmcv # pylint: disable=unused-import checked_ok = True @@ -46,6 +53,7 @@ def draw_pose(pose, H, W): class DWposeDetector: def __init__(self, det_config=None, det_ckpt=None, pose_config=None, pose_ckpt=None, device="cpu"): + self.pose_estimation = None if not checked_ok: if not check_dependencies(): return @@ -57,6 +65,8 @@ class DWposeDetector: return self def __call__(self, input_image, detect_resolution=512, image_resolution=512, output_type="pil", min_confidence=0.3, **kwargs): + if self.pose_estimation is None: + log.error("DWPose: not loaded") input_image = cv2.cvtColor(np.array(input_image, dtype=np.uint8), cv2.COLOR_RGB2BGR) input_image = HWC3(input_image) diff --git a/wiki b/wiki index b308811ab..709796f97 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit b308811ab96e6eec771155c59bb295bebb6740df +Subproject commit 709796f9753081ebe74d723118b2482bf633fae5