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