| | import pdb |
| |
|
| | import config |
| | from pathlib import Path |
| | import sys |
| |
|
| | PROJECT_ROOT = Path(__file__).absolute().parents[0].absolute() |
| | sys.path.insert(0, str(PROJECT_ROOT)) |
| | import os |
| |
|
| | import cv2 |
| | import einops |
| | import numpy as np |
| | import random |
| | import time |
| | import json |
| |
|
| | |
| | from preprocess.openpose.annotator.util import resize_image, HWC3 |
| | from preprocess.openpose.annotator.openpose import OpenposeDetector |
| |
|
| | import argparse |
| | from PIL import Image |
| | import torch |
| | import pdb |
| |
|
| | |
| |
|
| | class OpenPose: |
| | def __init__(self, gpu_id: int): |
| | |
| | |
| | self.preprocessor = OpenposeDetector() |
| |
|
| | def __call__(self, input_image, resolution=384): |
| | |
| | if isinstance(input_image, Image.Image): |
| | input_image = np.asarray(input_image) |
| | elif type(input_image) == str: |
| | input_image = np.asarray(Image.open(input_image)) |
| | else: |
| | raise ValueError |
| | with torch.no_grad(): |
| | input_image = HWC3(input_image) |
| | input_image = resize_image(input_image, resolution) |
| | H, W, C = input_image.shape |
| | assert (H == 512 and W == 384), 'Incorrect input image shape' |
| | pose, detected_map = self.preprocessor(input_image, hand_and_face=False) |
| |
|
| | candidate = pose['bodies']['candidate'] |
| | subset = pose['bodies']['subset'][0][:18] |
| | for i in range(18): |
| | if subset[i] == -1: |
| | candidate.insert(i, [0, 0]) |
| | for j in range(i, 18): |
| | if(subset[j]) != -1: |
| | subset[j] += 1 |
| | elif subset[i] != i: |
| | candidate.pop(i) |
| | for j in range(i, 18): |
| | if(subset[j]) != -1: |
| | subset[j] -= 1 |
| |
|
| | candidate = candidate[:18] |
| |
|
| | for i in range(18): |
| | candidate[i][0] *= 384 |
| | candidate[i][1] *= 512 |
| |
|
| | keypoints = {"pose_keypoints_2d": candidate} |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | return keypoints |
| |
|
| |
|
| | if __name__ == '__main__': |
| |
|
| | model = OpenPose() |
| | model('./images/bad_model.jpg') |
| |
|