前言
总结一下使用Paddlehub进行人像抠图的方法。
一、工作背景
App中需要使用人体分析和人像抠图,这里对抠图过程做一个总结,方便今后查找,也方便有同样需要的小伙伴。
二、工作步骤
1.安装相应的依赖包
注意由于Paddle在我写这篇总结的时候还不支持python3.8以上,所以有较高版本的小伙伴需要将python降级,太高的版本不要轻易装,我也是掉坑里了,无奈降级到python3.8。如何删除已有的python
安装步骤可以查看飞桨官方文档,链接地址:飞桨官方文档
按照官方文档检查python和pip的版本,pip版本不够的话升级pip。
python2
python -m pip install --upgrade pip
python3
python3 -m pip install --upgrade pip
由于我使用的是mac下的python3,官方的命令行指令如下:
官方提供的命令行方法:
python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
2.验证安装成功
安装完成后您可以使用 python 或 python3 进入python解释器,输入import paddle ,再输入 paddle.utils.run_check()
如果出现PaddlePaddle is installed successfully! Let’s start deep learning with PaddlePaddle now.,说明您已成功安装。
命令行输入:
import paddle
paddle.utils.run_check()
3.完善python代码
除了安装paddle库,还要安装cv2,paddlehub以及matplotlib库。安装很简单pip3 install 加上库名即可,cv2的库名是opencv-python。
依赖安装完成后,打开PyCharm完善抠图代码:
抠图方法的示例代码如下:
def paddleHubGetHuman(count):
import os
import cv2
import numpy as np
import paddle
import paddlehub as hub
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
print(paddle.__version__)
print(hub.__version__)
#加载模型
humanseg = hub.Module(name = "deeplabv3p_xception65_humanseg")
image = '/Users/longxiang/Public/Unity3D/PaiPaiLu/testMaskAI/temp/%d.png'%count
# 展示待预测图片,可以关闭减少干扰
# plt.figure(figsize=(10,10))
# plt.imshow(image)
# plt.axis('off')
# plt.show()
# execute predict and print the result
results = humanseg.segmentation(images=[cv2.imread(image)],visualization=True)
print(results[0]['save_path'])
# 预测结果展示
test_img_path = results[0]['save_path']
img = mpimg.imread(test_img_path)
blend_image(test_img_path,image)
# plt.imshow(img)
# plt.axis('off')
# plt.show()
os.remove(test_img_path)
总结
以上是使用paddle的抠图api进行抠图操作的方法总结,希望对大家有所帮助。