mirror of
https://github.com/vladmandic/automatic
synced 2026-09-19 17:24:32 +02:00
update dwpose installer
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import os
|
||||
from installer import setup_logging
|
||||
setup_logging()
|
||||
|
||||
|
||||
checked_ok = False
|
||||
|
||||
|
||||
def check_dependencies():
|
||||
from installer import installed, pip, log
|
||||
global checked_ok # pylint: disable=global-statement
|
||||
debug = log.trace if os.environ.get('SD_DWPOSE_DEBUG', None) is not None else lambda *args, **kwargs: None
|
||||
packages = [
|
||||
'openmim==0.3.9',
|
||||
'mmengine==0.10.4',
|
||||
'mmcv==2.1.0',
|
||||
'mmpose==1.3.1',
|
||||
'mmdet==3.3.0',
|
||||
]
|
||||
status = [installed(p, reload=False, quiet=False) for p in packages]
|
||||
status.append(False)
|
||||
debug(f'DWPose required={packages} status={status}')
|
||||
if not all(status):
|
||||
log.info(f'Installing DWPose dependencies: {[packages]}')
|
||||
cmd = 'install --upgrade --no-deps --force-reinstall '
|
||||
pkgs = ' '.join(packages)
|
||||
res = pip(cmd + pkgs, ignore=False, quiet=False)
|
||||
debug(f'DWPose pip install: {res}')
|
||||
try:
|
||||
import pkg_resources
|
||||
import imp # pylint: disable=deprecated-module
|
||||
imp.reload(pkg_resources)
|
||||
import mmcv # pylint: disable=unused-import
|
||||
import mmengine # pylint: disable=unused-import
|
||||
import mmpose # pylint: disable=unused-import
|
||||
import mmdet # pylint: disable=unused-import
|
||||
debug('DWPose import ok')
|
||||
checked_ok = True
|
||||
except Exception as e:
|
||||
log.error(f'DWPose: {e}')
|
||||
return checked_ok
|
||||
|
||||
|
||||
check_dependencies()
|
||||
@@ -9,7 +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 installer import installed, pip, log
|
||||
from modules.control.util import HWC3, resize_image
|
||||
from .draw import draw_bodypose, draw_handpose, draw_facepose
|
||||
checked_ok = False
|
||||
@@ -17,24 +17,35 @@ checked_ok = False
|
||||
|
||||
def check_dependencies():
|
||||
global checked_ok # pylint: disable=global-statement
|
||||
debug = log.trace if os.environ.get('SD_DWPOSE_DEBUG', None) is not None else lambda *args, **kwargs: None
|
||||
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'),
|
||||
'openmim==0.3.9',
|
||||
'mmengine==0.10.4',
|
||||
'mmcv==2.1.0',
|
||||
'mmpose==1.3.1',
|
||||
'mmdet==3.3.0',
|
||||
]
|
||||
packages = []
|
||||
for pkg in packages:
|
||||
if not installed(pkg[1], reload=True, quiet=True):
|
||||
install(pkg[0], pkg[1], ignore=False, no_deps=True)
|
||||
status = [installed(p, reload=False, quiet=False) for p in packages]
|
||||
debug(f'DWPose required={packages} status={status}')
|
||||
if not all(status):
|
||||
log.info(f'Installing DWPose dependencies: {[packages]}')
|
||||
cmd = 'install --upgrade --no-deps --force-reinstall '
|
||||
pkgs = ' '.join(packages)
|
||||
res = pip(cmd + pkgs, ignore=False, quiet=False)
|
||||
debug(f'DWPose pip install: {res}')
|
||||
try:
|
||||
import pkg_resources
|
||||
import imp # pylint: disable=deprecated-module
|
||||
imp.reload(pkg_resources)
|
||||
import mmcv # pylint: disable=unused-import
|
||||
import mmengine # pylint: disable=unused-import
|
||||
import mmpose # pylint: disable=unused-import
|
||||
import mmdet # pylint: disable=unused-import
|
||||
debug('DWPose import ok')
|
||||
checked_ok = True
|
||||
return True
|
||||
except Exception as e:
|
||||
log.error(f'DWPose: {e}')
|
||||
return False
|
||||
return checked_ok
|
||||
|
||||
|
||||
def draw_pose(pose, H, W):
|
||||
@@ -48,9 +59,9 @@ def draw_pose(pose, H, W):
|
||||
canvas = draw_bodypose(canvas, candidate, subset)
|
||||
canvas = draw_handpose(canvas, hands)
|
||||
canvas = draw_facepose(canvas, faces)
|
||||
|
||||
return canvas
|
||||
|
||||
|
||||
class DWposeDetector:
|
||||
def __init__(self, det_config=None, det_ckpt=None, pose_config=None, pose_ckpt=None, device="cpu"):
|
||||
self.pose_estimation = None
|
||||
|
||||
Reference in New Issue
Block a user