$ hub install openpose_body_estimation==1.1.0
模型名称 | openpose_body_estimation |
---|---|
类别 | 图像-关键点检测 |
网络 | two-branch multi-stage CNN |
数据集 | MPII, COCO 2016 |
是否支持Fine-tuning | 否 |
模型大小 | 185M |
最新更新日期 | 2021-06-28 |
数据指标 | - |
人体关键点(左)、模型预测效果(右)
paddlepaddle >= 2.0.0
paddlehub >= 2.0.0
$ hub install openpose_body_estimation
$ hub run openpose_body_estimation --input_path "/PATH/TO/IMAGE"
import paddlehub as hub
model = hub.Module(name='openpose_body_estimation')
result = model.predict('/PATH/TO/IMAGE')
model.save_inference_model('/PATH/TO/SAVE/MODEL')
# PaddleHub示例图片下载方法:
# wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
def __init__(self, load_checkpoint: str = None):
def predict(self,
img,
save_path='openpose_body',
visualization=True):
def save_inference_model(save_dir):
PaddleHub Serving可以部署一个在线肢体关键点检测服务。
$ hub serving start -m openpose_body_estimation -p 8866
这样就完成了一个肢体关键点服务化API的部署,默认端口号为8866。
NOTE: 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。
配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果
import requests
import json
import cv2
import base64
import numpy as np
def cv2_to_base64(image):
data = cv2.imencode('.jpg', image)[1]
return base64.b64encode(data.tostring()).decode('utf8')
def base64_to_cv2(b64str):
data = base64.b64decode(b64str.encode('utf8'))
data = np.fromstring(data, np.uint8)
data = cv2.imdecode(data, cv2.IMREAD_COLOR)
return data
# 发送HTTP请求
org_im = cv2.imread('/PATH/TO/IMAGE')
data = {'images':[cv2_to_base64(org_im)]}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/openpose_body_estimation"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
canvas = base64_to_cv2(r.json()["results"]['data'])
cv2.imwrite('keypoint_body.png', canvas)
1.0.0
初始发布
1.1.0
更新代码格式