paddlehub是基于百度paddlepaddle/飞桨的深度学习模型开发工具,paddlepaddle地址:https://www.paddlepaddle.org.cn 上面有很多模型,也有很多学习资料,建议去看看
今天要分享的是用paddlehub做人像分离,但是我测试结果表明用paddlehub做人像分离效果还是可以,但是要达到PS那种连头发丝都都扣出来还是有不小的差距。
环境安装
1.首先你得安装Python3
2.然后安装paddlepaddle
去这个地址选择你要安装的版本https://www.paddlepaddle.org.cn/install/quick#show_info
3.安装numpy
pip3 install numpy/我这边是pip3,看你们的环境有可能你们需要执行pip install numpy
4.安装opencv
pip3 install opencv-python
5.安装pillow 它是PIL的升级版本
pip3 install pillow
测试结果:
原图:
结果图片:
我们可以看到头发丝处理的还是有待提升的
源码:
import paddlehub as hub
import numpy as np
import cv2
import time
from PIL import Image
if __name__ == '__main__':
#第一次运行会自动下载deeplabv3p_xception65_humanseg模型,会慢一点
human_seg = hub.Module(name="deeplabv3p_xception65_humanseg")
src_img = cv2.imread('/Users/luoye/Downloads/WechatIMG281.jpeg')
#visualization默认是false,当设置为true时会生成分割后的图片并保存在humanseg_output目录下
results = human_seg.segmentation(images=[src_img], visualization=True)
for result in results:
image_alpha = result['data'].astype(np.uint8)
#这里我把背景换成了红色
img_bg = Image.new('RGBA', (src_img.shape[1], src_img.shape[0]), (255, 0, 0, 255))
image_temp = Image.fromarray(cv2.cvtColor(src_img, cv2.COLOR_BGR2RGBA))
img_bg.paste(image_temp, (0, 0), Image.fromarray(image_alpha))
path = "./" + str(int(time.time_ns() / 1000)) + ".png"
img_bg.save(path)
print("add successful path=" + path)