| import numpy as np |
| import os |
| import torch.nn as nn |
|
|
| os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" |
|
|
| import cv2 |
| import torch |
|
|
| from . import util |
| from .body import Body |
|
|
| remote_model_path = "https://huggingface.co/TencentARC/T2I-Adapter/blob/main/third-party-models/body_pose_model.pth" |
|
|
|
|
| class OpenposeInference(nn.Module): |
|
|
| def __init__(self): |
| super().__init__() |
| body_modelpath = os.path.join('models', "body_pose_model.pth") |
|
|
| if not os.path.exists(body_modelpath): |
| from basicsr.utils.download_util import load_file_from_url |
| load_file_from_url(remote_model_path, model_dir='models') |
|
|
| self.body_estimation = Body(body_modelpath) |
|
|
| def forward(self, x): |
| x = x[:, :, ::-1].copy() |
| with torch.no_grad(): |
| candidate, subset = self.body_estimation(x) |
| canvas = np.zeros_like(x) |
| canvas = util.draw_bodypose(canvas, candidate, subset) |
| canvas = cv2.cvtColor(canvas, cv2.COLOR_RGB2BGR) |
| return canvas |
|
|