Paddle Hub---基于ace2p实现人体分割

基于PaddleHub-ace2p的人体分割

项目链接:Paddle Hub—基于ace2p实现人体分割

人体解析(Human Parsing)是细粒度的语义分割任务,其旨在识别像素级别的人类图像的组成部分(例如,身体部位和服装)。

ACE2P通过融合底层特征,全局上下文信息和边缘细节,端到端地训练学习人体解析任务。该结构针对Intersection over Union指标进行针对性的优化学习,提升准确率。

以ACE2P单人人体解析网络为基础的解决方案在CVPR2019第三届LIP挑战赛中赢得了全部三个人体解析任务的第一名。该PaddleHub Module采用ResNet101作为骨干网络,接受输入图片大小为473x473x3。

地址:Paddle Hub

!pip install paddlehub==1.6.0

一. 解压需要预测的图片

#只需运行一次
# !unzip /home/aistudio/data/data11874/ACE2P_data.zip -d /home/aistudio/work/ACE2P
Archive:  /home/aistudio/data/data11874/ACE2P_data.zip
   creating: /home/aistudio/work/ACE2P/data/
   creating: /home/aistudio/work/ACE2P/data/testing_images/
  inflating: /home/aistudio/work/ACE2P/data/testing_images/103491_1238096.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/107157_521599.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/153677_517642.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/165064_482841.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/169945_200582.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/181316_510958.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/401094_427878.jpg  
  inflating: /home/aistudio/work/ACE2P/data/testing_images/85881_493702.jpg  
  inflating: /home/aistudio/work/ACE2P/data/test_id.txt  

二.一 使用API进行模型预测

预测前展示图片

import paddlehub as hub
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 

#ace2p 模型
module = hub.Module(name="ace2p")
test_img_path = "/home/aistudio/work/ACE2P/data/testing_images/85881_493702.jpg"
# 预测前展示
img = mpimg.imread(test_img_path)
plt.imshow(img) 
plt.axis('off') 
plt.show()
[32m[2020-08-23 16:03:24,212] [    INFO] - Installing ace2p module[0m
[32m[2020-08-23 16:03:24,214] [    INFO] - Module ace2p already installed in /home/aistudio/.paddlehub/modules/ace2p[0m

output_7_1.png

执行预测并打印结果

image=mpimg.imread("/home/aistudio/work/ACE2P/data/testing_images/85881_493702.jpg")

results = module.segmentation(images = [image],
                                output_dir = '/home/aistudio/work/ace2p_output/',
                                visualization = True)
for result in results[0]:
    print(result)
path = results[0]['path'][:-3]
print(path+'png')
img = mpimg.imread('/home/aistudio/work/ace2p_output/'+path+'png')
plt.imshow(img) 
plt.axis('off') 
plt.show()
path
data
ndarray_time=1598171975037451.0.png

output_9_1.png

二.二服务部署

第一步:启动PaddleHub Serving

在终端中输入(在Notebook中启动会一直运行)

默认端口号8866

hub serving start -m ace2p

第二步:发送预测请求

以上,这样就完成了一个人体解析服务化API的部署,接下来让我们尝试发送请求

import requests
import json
import cv2
import base64
import matplotlib.pyplot as plt 
import numpy as np
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 

img = mpimg.imread('work/ACE2P/data/testing_images/103491_1238096.jpg')
plt.imshow(img) 
plt.axis('off') 
plt.show()

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请求
data = {'images':[cv2_to_base64(cv2.imread("work/ACE2P/data/testing_images/103491_1238096.jpg"))], \
        "output_dir": '/home/aistudio/work/ace2p_output/', \
        "visualization": True}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/ace2p"
r = requests.post(url=url, headers=headers, data=json.dumps(data))

# # 打印预测结果
# print(base64_to_cv2(r.json()["results"][0]['data']))

output_13_0.png

输出预测结果: 此时我们的服务部署已经完成,http预测结果已保存在输出目录中

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 

img = mpimg.imread('work/ace2p_output/ndarray_time=1598179908901488.0.png')
plt.imshow(img) 
plt.axis('off') 
put/ndarray_time=1598179908901488.0.png')
plt.imshow(img) 
plt.axis('off') 
plt.show()

output_15_0.png

总结:以上就是使用Paddle Hub ace2p模型进行人体分割的流程,主要是代码如何使用Hub 预训练模型来预测自己的图片,注意预测后返回的results里面对应的参数,多数是results[0][data/path],当然有什么意见或建议的话欢迎提出来,活到老,学到老,加油!!!

欢迎各位同学fork!!!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值